SSRS 报告比查询花费的时间长;尝试参数嗅探和无锁修复



我有一个SSRS报告加载缓慢,可能是由于锁定错误。以下是我所知道的。

如果将驱动报表的查询放入ManagementStudio查询窗口,运行大约需要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正在锁定表

根据Martin Smith上面的评论请求,这个特定问题的答案是识别出问题报告中运行的子报告本身就是造成速度缓慢的原因。简单地查看在SSMS中运行的查询,这一点并不明显。所以,要比我更有观察力,确保你知道报告的全部内容

最新更新