Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 396
  • Last Modified:

Batch Report Processing

Is there a way to mange report load using Sql Server Reporting Services?  So of my reports take a while to run.  It would be nice to be able to batch them.    I don't think caching is much of a help since the users change data and then run a report and see results.
0
GhengisX
Asked:
GhengisX
  • 3
  • 3
1 Solution
 
rickchildCommented:
Are the reports running slowly at the data extraction stage (So would your data query or stored procedure it is based on be running slowly too), or at the rendering stage?
0
 
GhengisXAuthor Commented:
the data queries are expensive and slow.  the rendering is not an issue.  If multiple users run the report at once it can really bring the server to its knees.

we are tuning the sql and database but it will not be enough.
0
 
rickchildCommented:
I see, so you are looking to First-In-First-Out queue the queries really, so they are not running concurrently and killing the database server.

Before we get into this you could consider the caching again, how often are the users updating the data and then needing to look at the reports?  Do the users need the data immediately available after the change?

You may find this is only a few times a day and they don't need it immediately, then you can use the caching to cache a snapshot say every hour or so.  "Render this report from a report execution snapshot "  You could then stagger your snapshots over the hour.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
GhengisXAuthor Commented:
they update data then run a report to see results.  then they update data again and tune.  there is a lot of data so we dont monitor if things have changed between one report run and another, otherwise we could cache.  
0
 
rickchildCommented:
OK, if you are saying you want to run only one report at a time then you need a Stored Procedure to act as a runner.  The runner will contain say a big CASE of all your possible queries/stored procedures, which are specified by a parameter into the Runner.

One basic queue would be that your Runner will add the current request to a queue table, if there is nothing else in the queue it can run immediately, if there are items ahead in the queue it must wait for an interval before checking again (Say 10 seconds).

It will loop and wait until the request reaches the front, at which point the runner can then execute that statement to return the result for the report.  It must also remove itself from the queue table after the statement.
0
 
GhengisXAuthor Commented:
any experience with service broker out there, it seems to be a big part of what I am looking for?
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now