0
votes

I have an SSRS (2008 R2) instance running in SharePoint (2010) integrated mode running on IIS (7.5.7600.16385), and I have several reports that run for around 10 minutes then the report loading spinner goes away and we're left with a blank white screen. The logs show no error message, and sometimes the stored procedure is still running on the sql server afterwards.

I'm convinced this is a timeout of some kind, but can't figure out where. What are all the timeout values in play here, and how to change each of them?

2

2 Answers

3
votes

There are many timeout settings.

You can set the timeout on the individual dataset if you think that the dataset is timing out. Open the dataset properties in Visual Studio to set this. You can also adjust this in RSReportServer.config if you want to set it server wide:

<Add Key="DatabaseQueryTimeout" Value="0"/> <!--None-->

You can adjust the report execution timeout for individual reports from the Report Properties dialog using the action menu from your SharePoint report list.

For web server timeouts, in the web.config files in \Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportManager and \Program Files\Microsoft SQL Server\MSSQL.X\Reporting Services\ReportServer you could adjust the sessionState timeout (for ReportManager web.config) and the ExecutionTimeout in both files (Restart IIS after adjusting these by doing an IISRESET)

 <httpRuntime executionTimeout = "36000" />

However, it is unlikely that you have SQL queries that go for longer than 10 minutes or session timeouts. Try executing the SQL queries from your report in Sql Server Management Studio and see how long they go for; I'll bet they will go for seconds, not minutes. If they go for minutes then investigate adding an index or look at the execution plan to see if you can optimise the query to stop doing full table scans.

So the problem isn't likely to be fixed by increasing the dataset or server timeout settings, you have a different problem and the most likely candidate for your performance issue is parameter sniffing. What is happening is that Sql Server is trying to optimise your query and completely messing it up and causing horrible performance degradation and timeouts. We need to fix this, not increase the timeout limit.

Fortunately this is easy to solve. Try the techniques discussed in my other answers regarding using local variables or text SQL expressions to avoid parameter sniffing issues or try adding OPTION (RECOMPILE) to the end of your SQL query.

0
votes

Have you checked the default value for the ReportViewer.ServerReport.Timeout? I believe it defaults to 600 seconds.

Change it 


    From:<asp:ScriptManager ID="ScriptManager1" runat="server">
    To:<asp:ScriptManager ID="ScriptManager1" runat="server" 
    AsyncPostBackTimeout="600">