automated test for SSRS reports - reporting-services

I have 187 reports in a live SSRS/SSAS scenerio. I have a requirement to update the cube all of the reports are feeding from. The requirement is spawned from a change request to one of the reports.
Is there a quick way to determine whether or not I have broken all the other reports based on the new cube design (in short terms, how do I perform automated regression testing?)
Thanks much!

Best thing I can think of is to set up a subscription for every report that goes to an empty folder on a file share, or email if you prefer. If there is less than 187 reports in the folder, then you have a broken report.
You can then create a query of the SSRS database subscriptions table to find the subscription that errored, and which report it was, to go test it further.
If you want to automate the creation of the subscriptions for the reports as well, you could use something like this tool. https://www.2ndrock.com/software/subscriptionmanager/subsmgr.html

Related

Is it possible to run all the reports in a given folder from report server?

I have a folder with around 15 reports in it, these are Report Server reports. To run each report individually will take a while, so I want them to run together. So, what I want to be able to do is somehow run all the reports in this folder, is this possible?
This is somewhat of an ambiguous question. Let me explain. What are you asking specifically?
Q: Can you run multiple reports at the same time?
A: Yes, and there are several ways to accomplish this.
1. You can use SQL agents
2. Use batch files with task scheduler
3. Use an SSIS package and use an agent to run them at specific times...etc...
Hopefully one of the reports does not depend on another and another thing that you have to take in to consideration is how hard you will be hitting the SSRS or SQL server. Running them all at one time may take longer than one at a time. depending on the bandwidth of the SQL Server and what tables are going to be locked up during each of these processes.
You might want to give a little more detail in your question...
I would recommend an SSIS package, especially as it also one of the options presented by #Michael that can email the Excel workbook too which you mentioned in an earlier comment.
The following resource covers quite well the execution and export of an SSRS report using SSIS, including code you will need as a starting point: Executing an SSRS Report from an SSIS Package.
You could save some time in coding the solution by using the following custom Task that can be integrated into SSIS: SSIS ReportGenerator Task.
There is one problem in your requirements though which is merging reports into one Excel workbook where I assume you want separate sheets for each report within the same workbook?
Reporting Services can use multiple worksheets (to divide a report up into pages a.k.a pagination) but only for a single report; it can't merge reports into one Excel file. This can be accomplished with custom code however. There's a somewhat basic example here: Merging workbooks into a master workbook with separate sheet for each file.
One way to run all the reports at once is to add subscription to all of them and set same subscription start time in all of the reports. what will happen is once the start time arrived all the reports will run simultaneously and will generate excel/pdf (any format specified) file at shared location.

SSRS logging a copy of every report run

Does anyone know if it is possible to have SSRS log a PDF of every report run? I'd like to store the output (preferrably a PDF) somewhere of every report. I need to store what was visually presented to them, not just the parameters that were passed in.
Can SSRS do this out of the box somehow? If it can't, I'll have to log a copy via code on each call we make to the server, which I'm worried will slow down our application. Our reports are run from front-end code calling into SSRS, if that matters.
Thanks in advance for any help!
I don't think its possible out of box. Its a very unique requirement.
Possible solution is to create a report which will be using ReportServer.dbo.ExecutionLog table to generate report of execution. Once your report is ready you can configure it to generate PDFs. You can refer to http://blogs.wrox.com/article/creating-a-report-server-usage-report-with-sql-server-reporting-services/ for creating such report.

Is it possible to loop through datasets in SSRS report and save each dataset as an excel spreadsheet?

I am new to SSRS and I just want to know if it is possible to loop through datasets in an SSRS report and save each dataset separately as an Excel spreadsheet.
For example, if we have a report with 5 managers, if you click on each one of these managers you can see/drill down to all the supervisors that are under this manager and if you click on any of those supervisors you can see all the employees that are under that particular supervisor. Now, what I'm trying to do is I want to save each one of the managers' (and supervisors' eventually) downline in an excel document (although it really can be in any format as long as they can later drill down on it) so that each manager can only get his/her own supervisors/employees. Can this be done in SSRS and if so I'll try to figure out how. Also, if you think there is a better way to restrict every manager from seeing every other manager's supervisors employees please let me know. The report that I currently have is perfect but everyone can see other people's supervisors/employees and their data.
Thanks!!
if you want to generate flat files to send out, then you have to create a parameter on your report, deploy it to the report server, and then create 5 subscriptions to that report.
in each subscription you can set the parameter and where you want to write/email the file.
If the subscriptions part doesn't work well for you (if you have too many to manage), you can use data driven subscriptions (enterprise edition feature), rs.exe scripts (if you figure out how it works), or use my new cool tool (http://busysreports.codeplex.com)
also, you don't have to generate flat files, you can also set up some security so when the managers open the report in reporting services they see only their data.

Reports in MS Access after compiling into MDE file

I am currently working on a MS Access 2003 mdb file. This mdb file will be converted to an mde file before being published.
How do I go about enabling the reports function of MS Access after conversion? Is there a alternative (open source or free software) to the reporting in MS Access? Any suggestions?
Assuming you mean getting users to creat their own reports in the same FE MDE? This isn't possible as you can't open a form or report in design view in an MDE.
We suggest you give the power user a separate MDB linked to BE database. Along with some starter queries and tell them to "have fun". Providing occasional support on queries, explaining, for example, the difference between the joins.
Also I give my clients an Export to Excel button which copies the reports recordset to Excel. I do not attempt to use the report itself into Excel as that generally looks terrible.
Another issue is to consider why users want to create reports. I frequently get clients requesting two different reports on the same data, one with details, one just a summary. You can actually make that a single report and hide the detail section to get the summary report.
Also, many clients consider a report with different data but the same layout to be a different report, and what they really need is the ability to filter the report output according to their needs.
In my experience, both of these take care of 90% of the scenarios where users think they need to create reports.

Should I use SQL Reporting Services 2008 for my reporting engine?

I would like to use SQL Reporting Services 2008 to generate my reports, but I want to use my own UI for specifying the report type, columns, parameters and everything. I want to be able to take these criteria, and then kick off an asynchronous request to SSRS and have the report emailed to me. Is this possible? I don't want to go all the way down the road of researching SQL Reporting Services 2008 only to find that it doesn't do what I need it to do. Also, I will have a ton of DB partitions that the data will need to be pulled from. Some reports will need to pull data from only one of these, but other ones may actually need to span different databases. Is it possible when sending a report request to SSRS to specify what servername/database to pull the data from? Is it possible to tell it to take the data from multiple databases and combine it? Thanks.
Like Crystal Reports, ActiveReports and other report generators, SSRS has two basic elements behind each report: the SQL query and the report layout. No matter what tool you use for the SQL -- it can be inline SQL in the report or a call to a stored procedure -- it's going to be the same query. Multiple databases are fine as long as you can specify them up front.
You can have parameterized queries, so the user is prompted to input the relevant filters (customer ID, product group, date range, whatever).
Doing the report layout is similar to other tools -- you drag and drop controls like labels onto the report, and set their formatting.
SSRS does provide a lot of options for distributing the report, including email. You can embed the report in an ASP.Net web page, leave it on the report server site for users to browse to, run it in the wee hours of the morning and cache it so every user doesn't have to wait for the lengthy query to run.
It's a great tool. I think it will be worth your effort to experiment with it. I would wait on creating the customized UI until you've exhausted the possibilities inherent in the tool.
SSRS is not designed with this scenario in mind, for that matter I am not sure that any out of the box reporting solution is going to have an elegant solution for this. While SSRS can do what you are asking (as well as others), it is by no means quick or easy. You seem to be looking for an advanced ad-hoc solution with dynamic sourcing of the data. I would first question the requirements and determine if the business scenario really justifies such an implementation. I would weigh custom building a solution vs your learning curve with a BI reporting solution. You may find that it is easier to just build something on your own.
I think the heterogeneous dynamic database mashup is probably going to be the most challenging part.
Depending on what your scalability requirements are, one place that has that part covered, and a report writer, is Access. (Duck! Incoming!)
I think you may be creating a rod for your own back to a certain extent as RS ships with a few interfaces for report creation.
Mind you the end product is an rdl file which is nothing but xml, so you can write them by hand if you really like.
Multiple data sources are supported, but combining them on a single control/chart/etc are not, so you'll need to configure yourself a cross database capability from one of your data-sources prior to the report request if you want to do that.