有几个报告停止工作,我收到一个错误“现有连接被远程主机强行关闭”。当我尝试查看报告时,它们将永远运行,并且在事件日志中出现了几个超时错误......所以我猜我是由于超时而收到该错误。
现在的问题是弄清楚为什么报告运行如此缓慢。我已经更改了过程以防止参数嗅探......但基本上:
通过 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 的问题。