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 回答