我查看了运行正常的存储过程。但是当涉及到报告执行时,它需要时间。
请让我知道如何开始这件事?在此先感谢
答案 0 :(得分:6)
报告是否对返回的数据进行了自己的计算,这可能需要时间和资源来完成?
报告绘制的图表是否具有大量的数据点,可能需要比具有更大增量的图表更长的数据点?
报告是否正在加载图片?如何处理图像?它们是从外部来源嵌入还是链接的?
您是否正在创建大量群组或向下钻取,这可能需要一段时间才能创建报告?
回答这些问题可能会开始指出正确的方向,如何提高报告的效率。
答案 1 :(得分:6)
您可以查看ReportServer数据库中的ExecutionLog表。这将为您提供数据检索,处理,渲染等时间的分解。这可以让您朝着正确的方向前进。
例如,在我之前的项目中,MS Excel中的渲染报告花费了大量时间 - 我们将一些报告默认导出为CSV格式,这有所帮助。同样,我们还确定了报告处理中的瓶颈,并为机器添加了更多资源。这也有帮助。
答案 2 :(得分:2)
“存储过程运行正常”是什么意思?您可能希望进一步调查此问题。
答案 3 :(得分:2)
您还可以尝试在显示大量数据的报告上进行自定义分页。 通过这样做,您可以缩短兑现时间,只显示有限数量的记录,而不是第一次加载整个数据。
答案 4 :(得分:1)
您还可以使用SSRS仪表板查看SSRS的性能和配置。 http://sqlconcept.com/tools/ssrs-dashboard/
答案 5 :(得分:1)
此URL是SSRS产品团队成员撰写的文章,介绍了您可以执行的一些性能优化。对于这类问题,这是一篇很好的文章和很好的资源。
另外,请看这里:
答案 6 :(得分:1)
无论数据库如何,以及作为大型层次结构中的业务分析师,加速SSRS报告的主要解决方案是缓存报告。如果智能地执行此操作(例如,我在上午7:30预加载缓存)或者将报告缓存为45分钟,那么会发现加载速度大幅增加。
SSRS中的缓存 http://msdn.microsoft.com/en-us/library/ms155927.aspx
预加载缓存 http://msdn.microsoft.com/en-us/library/ms155876.aspx
根据您的问题,如果您不喜欢使用这么长时间的初始报告,并且数据在当天相对静态,那么可能会增加缓存生命周期。
最后,您也可以选择让业务经理接收这些报告通过电子邮件订阅,这会向他们发送一个他们可能会发现的Excel报告的时间点更系统化。
如果所有这些都失败了,请考虑参数嗅探,即
如果这是您的原始查询
CREATE PROCEDURE [SP_Test_ParameterSniffing]
@CustomerID INT
AS
BEGIN
SELECT *
FROM Customer c
WHERE c.CustomerID = @CustomerID
END
您需要做的就是在SP代码中添加一个新参数,并将传递给SP的值分配给新参数并在WHERE子句中使用它:
CREATE PROCEDURE [SP_Test_ParameterSniffing]
@CustomerID INT
AS
BEGIN
DECLARE @CustomerID2 INT;
SET @CustomerID2 = @CustomerID;
SELECT *
FROM Customer c
WHERE c.CustomerID = @CustomerID2
END
答案 7 :(得分:1)
以下是SSRS报告表现不佳(执行时间较长)的部分原因
1)当您为报告使用更多级联参数时
2)直接从oracle或外部数据源获取数据时。
3)在ssrs报告的sql查询中使用“for xml()”函数。
解决方案:尽可能尝试使用报告快照
答案 8 :(得分:0)
在什么意义上提高性能?是消耗更多内存还是占用CPU或者是否使用过多的磁盘IO?你说SP运行良好是什么意思?它们运行良好但需要很长时间吗?或者它们运行良好并快速执行?
我首先要了解要改进的性能指标。然后确定瓶颈在报告服务器或数据库服务器中的位置。您还可以使用perfmon来识别瓶颈。