5

おそらくロック エラーが原因で、読み込みが遅い SSRS レポートがあります。これが私が知っていることです。

レポートを駆動するクエリを Management Studio クエリ ウィンドウに入力すると、実行に約 50 ミリ秒かかります。

ブラウザー インターフェイスからテストしてきたレポート基準を実行すると、ReportServer..ExecutionLog (WHERE Status='rsSuccess' AND ReportID=[thereport]) の時間値は次のようになります。

TimeDataRetrieval:  95000-120000
TimeProcessing:  35000-50000
TimeRendering: 75-125

もっと良い方法がわからないので、レポートを数回実行して sys.dm_exec_requests を監視しましたが、次のクエリがハングアップしているようです。

CREATE PROCEDURE [dbo].[CheckSessionLock]  
@SessionID as varchar(32)  AS  
DECLARE @Selected nvarchar(32)  
SELECT @Selected=SessionID 
FROM [ReportServerTempDB].dbo.SessionLock 
WITH (ROWLOCK) WHERE SessionID = @SessionID

このコマンドには、上記の TimeDataRetrieval + TimeProcessing の値とほぼ同じ時間がかかるように見えるので、それが原因だと思います。また、CleanOrphanedSnapshots の同様の作成を行っていることも確認したので、これは通常の SSRS 操作の一部であると思います。これまでのところ、レポート ビルダーまたはコード自体で関連する構成設定を見つけることができませんでした。

私がオンラインで見つけた提案された解決策は、「パラメータースニッフィング」とWITH(nolock)に関係しています。前者は、これが行っていないストアド プロシージャを呼び出すコンテキストにのみあるようです。SP を作成して、パラメーターをプリエンプトする処理によって結果が変わるかどうかを確認しましたが、結果は同じように見えます。WITH(nolock) ヒントを追加し、隔離をコミットされていない状態で読むように設定しました。

私は単純なものが欠けていると確信しています。誰かがそれが何であるかを知っていることを願っています。ご協力いただきありがとうございます。

パラメーター スニッフィング - SSRS で高速クエリの実行が遅くなる Nolock アプローチ - SSRS がテーブルをロックしている

4

1 に答える 1

2

上記の Martin Smith によるコメント リクエストによると、この特定の問題に対する回答は、問題レポート内で実行されているサブレポートがあり、それ自体が速度低下の原因であることを認識することでした。これは、SSMS で実行されているクエリを確認しただけでは、すぐにはわかりませんでした。ですから、私よりも注意深く、レポートの構成全体を把握しておいてください。:)

于 2014-12-29T14:55:11.653 に答える