我有一个在IIS(7.5.7600.16385)上运行的SharePoint(2010)集成模式下运行的SSRS(2008 R2)实例,我有几个报告运行大约10分钟然后报告加载微调器就消失了我们'留下一个空白的白色屏幕。日志显示没有错误消息,有时存储过程仍在sql服务器上运行。
我确信这是某种超时,但无法弄清楚在哪里。这里播放的所有超时值是什么,以及如何更改它们中的每一个?
答案 0 :(得分:3)
有许多超时设置。
如果您认为数据集超时,则可以set the timeout on the individual dataset。在Visual Studio中打开数据集属性以设置此属性。如果要在服务器范围内设置它,也可以在RSReportServer.config中进行调整:
<Add Key="DatabaseQueryTimeout" Value="0"/> <!--None-->
您可以使用SharePoint报告列表中的操作菜单,从Report Properties对话框调整各个报告的报告执行超时。
对于Web服务器超时,在web.config
和\Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportManager
中的\Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportServer
文件中,您可以调整sessionState
超时(对于ReportManager web.config)和{{1在两个文件中(通过执行ExecutionTimeout
IISRESET
但是,您不太可能拥有超过10分钟或会话超时的SQL查询。尝试从Sql Server Management Studio中的报表执行SQL查询,看看它们需要多长时间;我打赌他们会花几秒钟,而不是几分钟。如果他们花了几分钟,那么调查添加索引或查看执行计划,看看是否可以优化查询以停止执行全表扫描。
因此,通过增加数据集或服务器超时设置可能无法解决问题,您遇到了不同的问题,并且最有可能出现性能问题的因素是参数嗅探。发生的事情是,Sql Server正在尝试优化您的查询并完全弄乱它并导致可怕的性能下降和超时。我们需要修复此问题,而不是增加超时限制。
幸运的是,这很容易解决。尝试在我的其他答案中讨论的有关使用local variables或text SQL expressions来避免参数嗅探问题或尝试将 <httpRuntime executionTimeout = "36000" />
添加到SQL查询末尾的技巧。
答案 1 :(得分:0)
您是否检查过ReportViewer.ServerReport.Timeout的默认值?我相信它默认为600秒。
Change it
From:<asp:ScriptManager ID="ScriptManager1" runat="server">
To:<asp:ScriptManager ID="ScriptManager1" runat="server"
AsyncPostBackTimeout="600">