1

我有一份在 SSRS 2008 r2 上运行的报告。该报告是非常简单的 tablix 报告;没有子报表或类似的东西,甚至没有任何小计。用户希望报告“干净”,以便在将报告导出到 Excel 时可以轻松操作。此报告的查询是一个接受三个参数的存储过程。

在开发中,它的运行时间约为 30 秒或更短。存储过程的完成时间少于此时间,具体取决于所选的参数。(客户编号、年份和月份。)现在它已经在生产服务器上运行了几个星期。并且客户端已经针对一组特定的参数运行了它,大约需要 30 分钟才能完成!我已经完成了通常的调试。SP 需要大约 9 秒来处理这些参数。我已阅读有关 Parameter Sniffing 的文章,但不是这样。我已经检查了ReportServer.dbo.ExecutionLog3视图中的值。它们显示如下结果:

TimeStart:          2013-08-07 08:36:45.173
TimeEnd:            2013-08-07 08:37:08.943
TimeDataRetrieval:  11598
TimeProcessing:      3408
TimeRendering:       8171

所有这些似乎表明报告在大约 23 秒内完成并呈现。但是报告在网页上显示大约需要 30 分钟!现在,这组特定的参数返回大约 20,000 条记录。并且没有分页,因为用户在将其导出到 Excel 时希望将所有这些都放在一个工作表上。但为了看看会发生什么,我尝试在每 100 条记录后引入一些分页。当我这样做时,报告在 30 秒内完成。(但现在 Excel 工作簿中有 200 多个工作表。)

谁能告诉我为什么要花这么长时间才能显示?根据执行日志,这不是数据检索,不是处理,也不是渲染。那么它可以做什么呢?

谢谢,

斯科特

编辑:我忘了提到我还进入了报告的“处理选项”并更改了报告超时设置。它被设置为使用系统默认值(即 1800 秒或 30 分钟)。现在设置为“将报告处理限制在以下秒数”2700(或 45 分钟)。客户抱怨的原因是,当他尝试将报告导出到 Excel 时,他收到“rsExecutionNotFound”错误,推测是由于报告的会话超时。报告仍然在 30 分钟内运行,我仍然收到 rsExecutionNotFound 错误。所以我正在尝试解决根本问题。

4

2 回答 2

1

我找到了解决方案。当我使用报告向导构建报告时,它会将 tablix 放在列表中。(这允许它为 tablix 生成更多自定义标题,如本博客文章中所述。)显然,如果列表/tablix 不定期分页,则在 IE8+ 中显示报告需要很长时间。(此其他论坛帖子表明,Microsoft Premier Support 表示缓慢是 SSRS 2008 的一个错误。)无论如何,删除列表并仅放置一个没有自定义分组标题的 tablix 就可以了。报告在大约 30 秒或更短的时间内正确呈现。

于 2013-08-08T19:39:34.510 回答
0

我遇到了类似的问题......

我的报告通过存储过程从 SQL2008 中提取数据。

在 SSMS 中运行存储过程会在大约 8 秒内返回所有记录,但尝试运行报告会导致 VS2008 上的任务必须在 30 分钟后结束且没有返回结果。

我重构了 sp,删除了一个公用表表达式并用一个临时表替换它,报告在 30 秒内呈现!

我们的 SQL 服务器运行非常热 - 内存完全达到 10Gb(我无法控制),因此使用临时表(写入 TempDB)似乎节省了足够的资源来呈现报告。

希望这可以帮助。

干杯

麦克风

于 2014-03-27T06:10:13.263 回答