Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 为什么SSRS 2008报告通过ReportViewer控件花费的时间更长?_Asp.net_Reporting Services_Ssrs 2008 - Fatal编程技术网

Asp.net 为什么SSRS 2008报告通过ReportViewer控件花费的时间更长?

Asp.net 为什么SSRS 2008报告通过ReportViewer控件花费的时间更长?,asp.net,reporting-services,ssrs-2008,Asp.net,Reporting Services,Ssrs 2008,有两个报告停止工作,我收到一个错误“远程主机强制关闭了一个现有连接”。当我尝试查看这些报告时,它们需要花费很长时间才能运行,并且在事件日志中有两个超时错误。。。我猜我是因为超时而出错的 现在的问题是弄清楚为什么报告运行得这么慢。我已经更改了进程以防止参数嗅探。。。但基本上: 通过SSMS:1:42运行进程 通过报表服务器运行报表:6:45 通过ASP.NET ReportViewer控件运行报告:13:00分钟 所以对我来说,真正的谜团是为什么它通过ReportViewer控件的速度是通过SSR

有两个报告停止工作,我收到一个错误“远程主机强制关闭了一个现有连接”。当我尝试查看这些报告时,它们需要花费很长时间才能运行,并且在事件日志中有两个超时错误。。。我猜我是因为超时而出错的

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

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

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

编辑:

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

另外,如果我在VisualStudio的桌面PC(通过VPN)上运行报告,它也可以正常工作

此外,还有一些其他较短的报告运行良好。不知道是不是因为他们收集的数据少了很多

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

再次编辑:


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

这是一种冒险,但每当遇到此问题时,我们首先要做的事情之一就是删除相关表的统计数据,并让DBMS根据需要重新创建它们。我们注意到,使用“重新编译”似乎也没有帮助。

ReportViewer设置为本地或远程处理模式吗?远程处理模式…并且您确定存储过程是瓶颈-您是否运行了跟踪?另外,您对参数嗅探做了什么?您添加了重新编译吗?我不认为过程是瓶颈,它很慢,但报告的时间增加了一倍,ReportViewer又增加了一倍。我将参数复制到局部变量中用于参数嗅探。没有使用重新编译。不确定我会做什么跟踪…?在我做了更改之后,我在proc上运行了sp_recompile…,但这与查询无关,通过探查器验证了这一点。运行查询需要55秒,但呈现报告需要6分钟。