1

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

现在的问题是弄清楚为什么报告运行如此缓慢。我已经更改了过程以防止参数嗅探......但基本上:

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

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

编辑:

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

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

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

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

再次编辑:

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

4

1 回答 1

-1

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

于 2013-10-31T13:26:36.407 回答