We narrowed down the large PDF exports from SSRS and found 2 main culprits
1) Unless images are JPG or PNG colour type 3, they are expanded to BMP's See here
2) Unless you configure SSRS to behave otherwise (not recommended), then SSRS will embed fonts or font subsets into the PDF, unless they are one of the 5 'standard' PDF fonts.
Although none of the standard fonts (other than Symbol I guess) are installed on most Windows OS's out of the box, we've found that if you use Times New Roman, Courier New, or Arial
then forward and reverse font substitution will take place.
The easiest way to convert your RDL's is to view them as XML and search and replace the FontFamily
tags.
If you have to use a non standard font, then, you can still minimize the damage:
- Use as few fonts as you can. Search through the RDL XML to make sure there aren't any redundant fonts.
- Use TTF fonts if you use different sizes of the font.
- Try not to mix normal, bold and italic variants of the font, else it will be embedded multiple times.
Couple of options:
1) Modify SessionTimeout and SessionAccessTimeout system properties.
Here is a sample script for rs.exe which will set these values for you:
Public Sub Main()
Dim props() as [Property]
props = new [Property] () { new [Property](), new [Property]() }
props(0).Name = "SessionTimeout"
props(0).Value = timeout
props(1).Name = "SessionAccessTimeout"
props(1).Value = timeout
rs.SetSystemProperties(props)
End Sub
You can run this script with the following command:
rs -i sessionTimeout.rss -s http://localhost/reportserver -v timeout="6000"The timeout is expressed in seconds, so this example sets the SessionTimeout and SessionAccessTimeouts to about an hour and a half.
(via http://blogs.msdn.com/b/jgalla/archive/2006/10/11/session-timeout-during-execution.aspx)
2) Change Report Execution Timeout via Report Manager
Open Report Manager
At the top of the page, click Site Settings. This opens the General Properties page of the site.
Report Execution Timeout
Specify whether report processing times out after a certain number of seconds.
(via http://msdn.microsoft.com/en-us/library/ms181194.aspx)
3) Set the HttpRuntime ExecutionTimeout
a. Open the ReportServer’s Web.config file by going to Start -> Administrative Tools -> Internet Information Services.
b. From there, expand Web Sites -> Default Web Site, and click on ReportServer. On the right-hand pane, right-click ‘Web.Config’ and select ‘Open’.
c. Locate the HttpRuntime parameter. If it doesn’t exist, you will have to create it within the section.
d. Set the executionTimeout value to ‘10800’ (3 hours) as shown below:
<system.web>
<httpRuntime executionTimeout = "10800" />
</system.web>
4) Increase the script timeout on the report server
- Go onto your Reporting Server and open up Internet Information Services; right-click on the ReportServer and select Properties.
- Go to the Options tab, and set the ASP Script timeout to 300 seconds (this didn't really work for me).
5) Set the report to never time out on the server
- Open your web browser on the server and go to http://localhost/Reports
- Navigate to the Report location and click on the problem report(s).
- On the left-hand pane, click on Properties.
- In the ‘Report Execution Timeout’ click the ‘Do not timeout report execution’.
(via http://geekswithblogs.net/ssrs/archive/2009/10/30/steps-to-resolve-ssrs-timeout-issues.aspx)
Best Answer
I've also run into this problem during my experience with SSRS 2005 and found this post by a MSDN MVP in the msdn forum:
Not sure it helps but I've switched to SSRS 2008 since then (I know it's not always an option).