High Volume SSRS Reports called from Reporting Services Web Service
Has anyone done a high volume (count) of reports from SSRS. For example nightly we generate 10K Invoices (PDF) or 5K purchase orders (PDF), etc. The individual reports run quickly because each one has a small dataset from the parameters that are passed to the report. The problem is in order to distrubite these we need to Fax, Email, Print and Archive. I am pulling each of them down in a custom C# app. However my bottleneck is making the call to the web service to get the report in a byte[] format. Any suggestions on how to make this run faster? Would generating the report with a custom assembly that has the parameterized values be faster? Right now to do 10K invoices takes between 4-5 hours. Here is a sample of how i am getting the report. public static Byte[] RenderReport(ParameterValue[] Parms, string reportName, string reportFormat) { ReportExecutionService rs = new ReportExecutionService(); ExecutionInfo execInfo = new ExecutionInfo(); ExecutionHeader execHeader = new ExecutionHeader(); rs.ExecutionHeaderValue = execHeader; rs.Credentials = System.Net.CredentialCache.DefaultCredentials; string extension; string encoding; string mimeType; Warning[] warnings = null; string[] streamIDs = null; execInfo = rs.LoadReport(reportName, null); rs.SetExecutionParameters(Parms, "en-us"); Byte[] result = rs.Render(reportFormat, string.Empty, out extension, out encoding, out mimeType, out warnings, out streamIDs); return result; }
July 24th, 2012 4:58pm

Hello GT Hardy, Thank you to post your questions on TechNet forum. After reviewing the code segment, I think it is not the problem of the code. First, using SOAP service via HTTP will have a timeout value so that the connection will never keep connection. Therefore, it is impossible to keep 4~5 hours on output 10K invoice. I think the possible cause is due to the other parts of the application. In order to narrow down this issue, please try to add the timer in the code and output the time spending on rendering the report into PDF. Alternatively, we can also launch the Performance Wizard in Visual Studio to get the performance tuning report on execution. Then, we can see where is the bottleneck of the application. If you have any further concerns, please tell me freely. Regards, Edward TechNet Subscriber Support If you are TechNet Subscription user and have any feedback on our support quality, please send your feedback here.Edward Zhu TechNet Community Support
Free Windows Admin Tool Kit Click here and download it now
July 26th, 2012 1:39am

Hello GT Hardy, Thank you to post your questions on TechNet forum. After reviewing the code segment, I think it is not the problem of the code. First, using SOAP service via HTTP will have a timeout value so that the connection will never keep connection. Therefore, it is impossible to keep 4~5 hours on output 10K invoice. I think the possible cause is due to the other parts of the application. In order to narrow down this issue, please try to add the timer in the code and output the time spending on rendering the report into PDF. Alternatively, we can also launch the Performance Wizard in Visual Studio to get the performance tuning report on execution. Then, we can see where is the bottleneck of the application. If you have any further concerns, please tell me freely. Regards, Edward TechNet Subscriber Support If you are TechNet Subscription user and have any feedback on our support quality, please send your feedback here.Edward Zhu TechNet Community Support
July 26th, 2012 1:39am

I think I figured it out, ultimately the execution of the report is the bottleneck. If the report isn't optimized and runs slower then that will be the issue. I tested this with 500 different reports and it only took 5 min. Time to look at how the report is executing. thanks for the asssitance.
Free Windows Admin Tool Kit Click here and download it now
August 1st, 2012 9:54am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics