( Download at the end of the blog entry )
Testing with realistic parameter sets
Ever wanted to test your SQL Server Reporting Services infrastructure against a realistic workload? Most often the problem is where to get the realistic data (parameter sets, a good weight of the different rendering formats) from.
If you deployed an environment, you already hold the solution in your hand. You can grab the information from the execution log of the Reporting Services database and generate requests to the new environment. Doing this you need access to the view dbo.ExecutionLog3 which can be found in the ReportServer content database of SSRS. Without going into too much details as already described in the MSDN article http://msdn.microsoft.com/en-us/library/ms159110.aspx you query some of the attributes stored upon every execution of a report, compose your WebRequest and fire it against the Reporting Services WebService.
With this you will be able to replay certain reporting service data workloads with historic report executions. To make it just easier for you, I created a powershell script being able to point to any database having the dbo.ExecutionLog3 view and do the work. If you don´t have direct access to the ReportServer meta data database, you can also point to any database containing a copy / materialized view of the table, making it possible for administrators to give you access to the data but not the complete database. As you see, you have some parameters to start the application, the parameters are also described in the SplashScreen of the application itself.
THe following paramaters can be used:
Explanation - Sample
-> Web Service adress to the report server
-> Connection string to the report server database
e.g. "Data Source=MyServer;Initial Catalog=ReportServer;Integrated Security=true
-> Specifies whether to save the rendered files on disk Y
e.g. "Y - will save the files on disk
-> Specifies the directory to save the file if specified
e.g. "C:\Temp\SomeDir or .\SomeDir
-> Specifies report paths that should be excluded from the workload
e.g. "\ReportPath1\SampleReport;\ReportPath2,SomeReport )delimited by semicolumn
-> Specifies report paths that should be exclusivly included in the workload
e.g. "\ReportPath1\SampleReport;\ReportPath2,SomeReport ) delimited by semicolumn
As the application can be simply started without having any prerequisites, the only requirements is to have powershell installed (most of the clients do have powershell) as well as access to the mentioned Reporting Services ExecutionLog3 table / view. With that, the application can be even started in multiple sessions and computer putting some workload on your servers
This is a version 0.2.0, so work is still in progress, if you have any questions or any useful additions to it, let me know.
(Download the version here)