0

私はこの 2 日間、お客様のライブ環境の問題を解決しようと、ぐるぐる回っています。Google がエラー メッセージに関する非常に限られた情報 (正確には 5 つの結果) を提供してくれたので、ここに投稿したほうがよいと考えました。

特定のパラメーターが使用されている場合、SSRS2005 で特定のレポートを要求すると、エラーはタイムアウトになります。

展開シナリオは次のとおりです。 マシン #1 レポート サービス (SQL2005、W2K3、IIS6) を実行 マシン #2 #1 のデータ ソースであるデータ ウェアハウス データベース (SQL2005、W2K3) を実行 両方のマシンが同じ vm クラスターおよび LAN で実行されています。

レポートはかなり単純な SP を要求します - それを sp(param $a, param $b) と呼びましょう。パラメータ $a を指定してリクエストすると、正しく実行されます。param $b を使用すると、グローバル タイムアウト期間が経過するとタイムアウトします。

#2 の sql management studio から param $b を使用してストアド プロシージャを直接実行すると、結果が完全に正常に返されます (3 ~ 4 秒以内)。

#2 でデータ ウェアハウス データベースのプロファイルを作成しましたが、param $b を使用すると、レポート サービスからデータベースへのクエリが #2 に到達しません。

SSRS Web インターフェイスから直接レポートを呼び出すときに、param $b を使用するときにタイムアウト時に表示されるエラー メッセージは次のとおりです。

「レポートの処理中にエラーが発生しまし た。データ セット DataSet の次のデータ行を読み取れません。 現在のコマンドで重大なエラーが発生しました。結果がある場合は破棄する必要があります。操作はユーザーによってキャンセルされました。」

SSRS の ExecutionLog は、エラー メッセージ rsProcessingAborted 以外にも多くの情報を提供してくれます。

この問題を解決する方法のアイデアが不足しています。ですから、コメント、提案、またはアイデアをいただければ幸いです。

前もって感謝します!

4

1 に答える 1

2

最初に行う必要があるのは、統計が最新であることを確認することです。

(このSOの回答:SQL Serverのパラメータースニッフィング(またはスプーフィング)で説明されているように、パラメータースニッフィングが原因で誤ったクエリプランが使用されている場合のように聞こえます)。

SQL Server 2005でこれを修正する1つの方法は、OPTIMIZEFORクエリヒントを使用することです。SQLServer2005のOPTIMIZEFORクエリヒントも参照してください。

また、一部またはすべてのインデックスに対して定期的にスケジュールされたインデックス再構築ジョブがありますか?

于 2009-11-19T15:31:10.470 に答える