【问题标题】:Why are SSRS 2008 reports taking longer through ReportViewer control?为什么 SSRS 2008 报告通过 ReportViewer 控件需要更长的时间?
【发布时间】:2013-11-05 00:51:38
【问题描述】:

有几个报告停止工作,我收到错误消息“现有连接被远程主机强行关闭”。当我尝试查看报告时,它们将永远运行,并且在事件日志中出现了几个超时错误......所以我猜我是由于超时而收到该错误。

现在的问题是找出报告运行如此缓慢的原因。我已经更改了 proc 以防止参数嗅探......但基本上:

通过 SSMS 运行 proc:1:42 通过报表服务器运行报表:6:45 通过 ASP.NET ReportViewer 控件运行报表:13:00 分钟

所以对我来说真正的谜团是为什么通过 ReportViewer 控件的速度是通过 SSRS 本身的两倍? (我可以稍后处理报告比 proc 慢...)

编辑:

按照 cmets 中的建议运行一些分析。从报告本身调用存储过程时,该存储过程以正常速度(55 秒)运行。所以问题要么是 SSRS 服务器,要么是 ReportViewer 控件……要么是 ReportViewer 和 SSRS 服务器之间的网络。

此外,如果我在我的台式电脑上(通过 VPN)在 Visual Studio 中运行报告,它工作得很好。

此外,还有一些其他较短的报告运行良好。想知道是否只是他们提取的数据少得多。

我注意到的最后一件事是,当通过 ReportViewer 控件运行时,查询似乎运行了多次。

再次编辑:

查看了 ExecutionLog 表,时间肯定是要渲染报告了。获取数据的时间非常一致。此外,生产服务器上的渲染时间比测试服务器长 6 分钟(甚至对生产数据库运行查询),所以这肯定是 Reporting Services 的问题。

【问题讨论】:

  • ReportViewer 设置为本地还是远程处理模式?
  • 远程处理模式...
  • 您确定存储过程是瓶颈 - 您是否运行了跟踪?另外,您对参数嗅探做了什么 - 您是否添加了 WITH RECOMPILE?
  • 我不认为 proc 是瓶颈,它很慢,但报告时间加倍,而 ReportViewer 又加倍。我将参数复制到局部变量中以进行参数嗅探。没有使用重新编译。不确定我会做什么追踪...?
  • 在进行更改后,我确实在 proc 上运行了 sp_recompile...

标签: asp.net reporting-services ssrs-2008


【解决方案1】:

这是在黑暗中的一个镜头,但是每当我们遇到这个问题时,我们首先要做的就是删除所涉及表的统计信息,并让 DBMS 根据需要重新创建它们。我们注意到 WITH RECOMPILE 似乎也没有帮助。

【讨论】:

  • 这与查询无关,但已通过探查器验证。查询需要 55 秒才能运行,但报表需要 6 分钟才能呈现。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多