同じテーブルで複数のストアドプロシージャを使用するレポートを最適化しようとしています。残念ながら、各手続きは数百万のレコードを読み込み、結果を集計しています。これは非常に強力なレポートですが、各ストアドプロシージャはSSMS内でかなり高速に実行するように最適化されています。SSRSは一度に複数のクエリを実行しますか?
私は各ストアドプロシージャを実行し、結果セットを10〜20秒以内に取得できます。 SSRSの中でそれらをすべて1つのレポートに入れると、レポートはタイムアウトします。
ストアドプロシージャごとに合計4つのパラメータがあります。すべて同じテーブルをターゲットにしており、異なる方法でデータを集約しています。それらのテーブルのインデックスはクエリとインラインで表示されます。これは、DISTINCTとNONDISTINCTの両方をCOUNT()に使用している時間、ユーザー、および1つのディメンションに基づいています。
私は、SSRSが同じテーブルで同時に4つのプロシージャを実行しているという事実を考えています。これは本当ですか?もしそうなら、SSRSがそれらを並行して実行しないことを保証するためにとにかくありますか?
私の唯一の選択肢は、事前に集計されたサマリーテーブルを作成することです。次に、そのテーブルからレポートを実行します。それ以外の場合は、paramスニッフィングも可能です。
非プロード環境でアクティビティを模倣し、プロファイルトレースを実行できますか?これは、同時に何が実行されているかを示します。もう1つの選択肢は、定期的なスケジュールでレポートを更新して、レポートの準備が整うようにすることです。 –
レンダリングのステップが、非常に長くかかるタイムアウトの原因となるパイプラインの一部である状況を見てきました。私はそれがあなたのケースでは間違いなく起きていると言っているわけではありませんが、私はそれがSSMSの高速実行とSSRSの非常に遅い可能性のある説明であると言っています。 –
タイムアウトの増加についてhttp://geekswithblogs.net/ssrs/archive/2009/10/30/steps-to-resolve-ssrs-timeout-issues.aspx – niketshah90