我在SSRS 2008 r2上运行了一个报告。该报告非常简单的tablix报告;没有子报告或类似的东西,甚至没有任何小报。用户希望报告“干净”,这样当他们将报告导出到Excel时,他们可以轻松地操作它。此报告的查询是一个存储过程,它接受三个参数。
在开发中,它在大约30秒或更短的时间内运行。存储过程在比此更短的时间内完成,具体取决于所选的参数。 (客户编号,年份和月份。)现在,它已在生产服务器上运行了几周。并且客户端已经为一组特定的参数运行它,大约需要30分钟才能完成!我经历了通常的调试。对于这些参数,SP大约需要9秒。我读过the article about 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错误。所以我正在努力解决根本问题。
答案 0 :(得分:1)
我找到了解决方案。当我使用报表向导构建报表时,它将tablix放在列表中。 (这允许它为this blog post中描述的tablix生成更多自定义标头。)显然,如果list / tablix没有定期寻呼,则需要在IE8 +中显示报告。 (This other forum post表示Microsoft Premier Support表示速度缓慢是SSRS 2008的一个错误。)无论如何,删除列表并只放置没有自定义分组标题的Tablix就可以了。报告在大约30秒或更短的时间内正确呈现。
答案 1 :(得分:0)
我遇到了类似的问题......
我的报告通过存储过程从SQL2008中提取数据。
在SSMS中运行存储过程会在大约8秒内返回所有记录,但是尝试运行报告会导致必须在30分钟后在VS2008上结束任务而没有返回任何结果。
我重构了sp,删除了一个公用表表达式并用临时表替换它,并在30秒内呈现报告!
我们的SQL服务器运行非常热 - 内存完全达到10Gb(我无法控制)因此看起来使用临时表(写入TempDB)可以节省足够的资源以便能够呈现报告
希望这有帮助。
干杯
麦克