2017-03-14 74 views
0

我从开发人员那里继承了一个报告,他将5个报告合并到一个SSRS报告中。看起来他只是复制并粘贴原始报告中的每个tablix。这样做是为了当用户导出到Excel时,他们可以在单独的选项卡上显示每个报告。我从来没有做过这样的多SSRS报告,所以我现在刚刚分析这整个事情是如何工作的。我发现的一个主要问题是它运行速度非常慢,大概10分钟,看起来是因为它必须运行所有5个查询。每个存储过程都作为数据集单独列出。有谁知道更好的方法来创建多个SSRS报告到一个页面上,或者至少如何使这个事情更快?将多个SSRS报告添加到一个报告中非常慢

回答

0

提高SSRS报告性能的第一步是确定瓶颈是什么。对ReportServer数据库中名为ExecutionLog4的视图运行查询。对于每个最近执行的报告,该视图都会为您提供一个包含3个关键字段的记录:TimeDataRetrieval,TimeProcessing和TimeRendering。

TimeDataRetrieval指示所有查询运行并返回数据集所需的时间(以毫秒为单位)。如果这个数字很高,那么您需要调整查询或消除其中的一些来提高性能。您可以运行分析器跟踪来确定哪些过程运行缓慢。

请记住,子报表每次在报表中呈现时都触发它们的数据集查询。所以即使是一个子报表数据集中的一个小小的表现打嗝也会被执行次数放大。

TimeProcessing指示报表服务器花费多少时间来操作检索到的数据。如果这个数字很高,您可能需要考虑在报表中执行多次运行的聚合计算,以便在SQL端运行。

TimeRendering表示服务器实际呈现报表需要多长时间。如果这个数字很高,请考虑避免或简化一遍又一遍重复使用的视觉属性上使用的表达式。根据我的经验,这种情况不如其他两种情况。

此外,这里有一些提示,我拿起那有助于避免出现性能问题:

- 避免使用行可见表情,如果你期望返回大量行的。 - 隐藏对象不会阻止数据集的执行。如果您的数据集具有相似的结构,请考虑将它们组合并使用对象过滤器来限制不同部分显示的内容。或者,如果您只打算根据数据或参数显示多个选项中的一个,则可以在存储过程中使用IF语句。 - 尝试限制大型Tablix中的列分组数量。对于Tablix中的每个分组,您可以将可能返回的数据行数乘以这些分组。

有关SSRS性能的更多信息,请参阅 https://technet.microsoft.com/en-us/library/bb522806(v=sql.105).aspx 这是为2008R2编写的,但似乎大多数也适用于2012年。

给出所有这些镜头,然后在这里回复一个更具体的问题,如果你卡住了。

+0

不幸的是,我的工作权限有限,无法针对ExecutionLog4运行任何操作。我的第一步是重写这些查询中的每一个,看看这是否有帮助。 – jackstraw22

+0

这是一个耻辱。当组织要求某人改进某些事物并剥夺适当的工具来做这件事时,我总是动摇我的头...... –

相关问题