SSRS 2008 R2とレポートビルダー3.0を使用しています。私は援助が必要なカスケードなレポートの問題があります。最初のレポートは正常に動作します。レポート内のリンクをクリックすると、@processIDパラメータがフォローアップレポートに渡されます。2008 R2のパラメータを置き換えるSSRS
SSMSでパラメータの代わりに文字列を使用してクエリを実行すると、1秒以下かかります。私はパラメータをSSRSで実行すると約15分かかります。私はSSRSがパラメータをうまく処理していないことを読んだ。私がしたいのは、パラメータを文字列に変更して送信する方法、または誰かがより良い方法を知っている場合です。あなたは、クエリの結果を変更することなく、あなたのhaving
where
に変更することができますように、それが見えかかわらず、元の問題の
SELECT ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec, COUNT(Summary.Id) AS SumRec
FROM ResultDetail_View LEFT OUTER JOIN
Summary ON ResultDetail_View.processOid = Summary.Id LEFT OUTER JOIN
outputItem ON ResultDetail_View.outputOid = outputItem.outputItemOid
GROUP BY ResultDetail_View.processOid, ResultDetail_View.applicationId, outputItem.outputValue, ResultDetail_View.startTime, ResultDetail_View.resultStatus,
ResultDetail_View.statusMessage, ResultDetail_View.endTime, ResultDetail_View.ErrRec
HAVING (ResultDetail_View.processOid = @processID)
ORDER BY ResultDetail_View.startTime
レポートでクエリをどのように実行していますか?それはストアドプロシージャですか?もしそうなら、これは[Parameter Sniffing](https://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server)のように見えます。 /)これは、SQL Serverの最適なクエリプランを選択する能力を妨げます。 – iamdave
残念ながら、これは継承されたレポートです。これらは、アドホック形式であり、ストアドプロシージャではありません。私が投稿したコードは、文字通り実行されるデータセットクエリです。私はこれについてまだパラメータスニッフィングを発見していない。私は再コンパイルを行ったばかりで、SSRSとSSMSの両方で同じ時間がかかっています。 – bwilliamson
SQL Serverインスタンスでトレースを実行して、レポートの実行時にサーバー上で実行されているクエリを正確に確認しましたか。いったんそれを持っていれば、同じサーバー上のSSMSで直接実行するならば、まったく同じパフォーマンス(それが良いか悪いか)を知る必要があります。それは答えではありませんが、少なくともあなたが問題を調査するのに役立つはずです。 –