I have a stored procedure that returns about 50000 records in 10sec using at most 2 cores in SSMS. The SSRS report using the stored procedure was taking 20min and would max out the processor on an 8 core server for the entire time. The report was relatively simple (i.e. no graphs, calculations). The report did not appear to be the issue as I wrote the 50K rows to a temp table and the report could display the data in a few seconds. I tried many different ideas for testing altering the stored procedure each time, but keeping the original code in a separate window to revert back to. After one Alter of the stored procedure, going back to the original code, the report and server utilization started running fast, comparable to the performance of the stored procedure alone. Everything is fine for now, but I am would like to get to the bottom of what caused this in case it happens again. Any ideas?
Share
I’d start with a SQL Profiler trace of both the stored procedure when you execute it normally, and then the same SP when it’s called by SSRS. Make sure you include the execution plans involved, so you can see if it’s making some bad decisions (though that seems unlikely – the SQL Server should execute an optimal – or at least consistent – plan regardless of the query’s source).
We used to have cases where Business Objects would execute stored procs dozens of times for no aparent reason and it lead to occasionally horrible performance, though I’ve never seen that same behavior with SSRS. It may be somewhere to start, though. You’ll also see the execution begin/end times – that will make it clear if it’s the database layer that’s hanging up, or if the SQL Server hands back the data in 10 seconds and then it’s the SSRS service that’s choking somewhere.