2015-12-17 15 views
5

同じテーブルで複数のストアドプロシージャを使用するレポートを最適化しようとしています。残念ながら、各手続きは数百万のレコードを読み込み、結果を集計しています。これは非常に強力なレポートですが、各ストアドプロシージャはSSMS内でかなり高速に実行するように最適化されています。SSRSは一度に複数のクエリを実行しますか?

私は各ストアドプロシージャを実行し、結果セットを10〜20秒以内に取得できます。 SSRSの中でそれらをすべて1つのレポートに入れると、レポートはタイムアウトします。

ストアドプロシージャごとに合計4つのパラメータがあります。すべて同じテーブルをターゲットにしており、異なる方法でデータを集約しています。それらのテーブルのインデックスはクエリとインラインで表示されます。これは、DISTINCTとNONDISTINCTの両方をCOUNT()に使用している時間、ユーザー、および1つのディメンションに基づいています。

私は、SSRSが同じテーブルで同時に4つのプロシージャを実行しているという事実を考えています。これは本当ですか?もしそうなら、SSRSがそれらを並行して実行しないことを保証するためにとにかくありますか?

私の唯一の選択肢は、事前に集計されたサマリーテーブルを作成することです。次に、そのテーブルからレポートを実行します。それ以外の場合は、paramスニッフィングも可能です。

+0

非プロード環境でアクティビティを模倣し、プロファイルトレースを実行できますか?これは、同時に何が実行されているかを示します。もう1つの選択肢は、定期的なスケジュールでレポートを更新して、レポートの準備が整うようにすることです。 –

+1

レンダリングのステップが、非常に長くかかるタイムアウトの原因となるパイプラインの一部である状況を見てきました。私はそれがあなたのケースでは間違いなく起きていると言っているわけではありませんが、私はそれがSSMSの高速実行とSSRSの非常に遅い可能性のある説明であると言っています。 –

+0

タイムアウトの増加についてhttp://geekswithblogs.net/ssrs/archive/2009/10/30/steps-to-resolve-ssrs-timeout-issues.aspx – niketshah90

答えて

6

デフォルトでは、SSRSのデータセットは並行して実行されます。

あなたのデータセットのすべてが同じデータソースを参照する場合は、あなたは、単一の接続上のデータセットの直列実行するためにこの方法を設定することができます。

  • が確保
  • レポートデザイナでデータソース]ダイアログボックスを開きますそのチェックボックスが、もはや並列に実行されるのと同じデータソースを使用するデータセットを選択すると使用単一トランザクションチェックボックスが

をチェックされていること。

私はあなたの問題を解決することを願っています。

+1

ありがとうございます。私はそれを見ませんでした。残念ながら、これにより遅くなりました。私はちょうど1つのparamsについてSSMSの4つの手順をすべて1日実行し、7秒後に戻りました。 SSRSには4行しか返されません。この変更を使用すると、タイムアウトになります。なぜか... SSMSは7秒です。しかし、これは私のパフォーマンスの問題にかかわらず正しい答えです。このオプションのせいではないでしょう。 – Fastidious

+0

4行しか返されないという事実は、レンダリング時間に関する以前のコメントで提案したことを否定します。私は受け入れに感謝したいと思いますが、私は理解していません。 –

+0

ええ、問題ありません。 – Fastidious