将多个SSR报告添加到一个报告中非常慢



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

提高SSRS报告性能的第一步是确定瓶颈是什么。针对Reporterver数据库中名为exectionLog4的视图运行查询。对于报告的最新执行,该视图将为您提供一个记录,其中包括3个关键字段:TimeDataretrieval,TimeProcessing和TimerEndering。

timedataretrieval指示所有查询运行并返回数据集所需的时间(以毫秒为单位)。如果这个数字很高,那么您需要调整查询或消除其中一些以提高性能。您可以运行一个Profiler Trace,以识别哪些过程正在缓慢运行。

还要记住,每次在报告中渲染时,子报告都会发射其数据集查询。因此,即使是子报告数据集中的次要性能打ic。

时间处理指示报告服务器花费了多少时间来操纵检索到的数据。如果此数字很高,您可能需要考虑执行在报告中运行多次在SQL侧运行的汇总计算。

计时表示服务器实际渲染报告所需的时间。如果此数字很高,请考虑避免或简化一遍又一遍地重复的视觉属性的表达式。根据我的经验,这种情况不如其他两个。

此外,以下是我选择的一些技巧,可以帮助避免性能问题:

- avoid使用行可视性表达式,如果您希望返回大量行。 - 隐藏对象不能阻止数据集执行。如果您的数据集具有相似的结构,请考虑将它们结合起来,并使用对象过滤器限制不同部分中显示的内容。或在存储过程中使用IF语句,如果您仅打算根据数据或参数显示几种选择之一。 - 尝试限制大型表中的列组数量。对于Tablix中的每个分组,您将可能返回到这些分组的数据行数乘以。

有关SSRS性能的更多信息可以在https://technet.microsoft.com/en-us/library/bb522806(V=SQL.105).aspx这是为2008R2编写的,但似乎也适用于2012年。

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

最新更新