ストアド プロシージャから返されたデータをレンダリングするレポートがあります。プロファイラーを使用すると、レポート サービスからストアド プロシージャへの呼び出しをキャッチできます。
レポートがタイムアウトしたことを示すレポートは失敗しますが、SSMS からストアド プロシージャを実行でき、5 ~ 6 秒でデータが返されます。
テスト実行の例では、レンダリングのために 2 行のみがレポートに返されますが、ストアド プロシージャ内では、レポート サービスに返された結果を照合するために、数千または数百万のレコードが処理されている可能性があります。
ストアド プロシージャをさらに最適化できることはわかっていますが、SSMS からの実行に数秒しかかからないように見えるのに、SSRS がタイムアウトする理由がわかりません。
また、別の問題が浮上しました。ストアド プロシージャを再作成すると、レポートは再び完全に正常に表示されるようになります。それは問題ありませんが、しばらくすると、レポートが再びタイムアウトし始めます。
タイムアウトの戻りは、レポートが実行されているメイン テーブルに追加される新しいデータに関連しているようです。私がテストした例では、100 の新しいレコードが挿入されるだけで、レポートが台無しになりました。
より正確には、根本原因であるレポートではないと思います。SSRS から実行したときにタイムアウトを引き起こしているのはストアド プロシージャです。
再びタイムアウトになったら、これまでに行った最善の修正は、ストアド プロシージャを再作成することです。これは理想的な解決策ではないようです。
また、問題は本番環境でのみ発生しているようです。私たちのテストおよび開発プラットフォームでは、同じ問題が発生していないようです。ただし、開発とテストには、本番と同じ量のレコードはありません。