おそらくロック エラーが原因で、読み込みが遅い 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 がテーブルをロックしている