reporting services - determining report GUID from old report name - sql-server-2008

I'm trying to use a combination of the SQL Server 2008 Reporting Services ReportServer database and the report server web service to determine the GUID for a particular report. What I want is to see a list of the previous names of a report that has been renamed or moved on the report server. I know a report's history snapshots stays with it when you rename it because the report has a unique GUID that doesn't change when you rename it. However, I can't seem to find a place in the database where previous names of a report are associated with the report's GUID. I can't find any instance of an old report name in the database, so I don't know if this is even stored. When I look at all the values of Catalog.Path and Catalog.Name in the database, the old values are not included from before the report rename. Is it possible, given a value like MyAwesomeReport, to associate that with a GUID like 7af3fe6d-b4ea-4cd8-8430-280392cba428, so that I can determine that this report has actually been renamed to MySuperAwesomeReport?

I think the easiest way for you to be able to determine a history for these is to build your own ETL script which would look up the current name of the reports, stored by GUID, and hold this in another structure. Having looked through the ReportServer database, I don't believe the name attribute of a report is held historically. I would based my implementation for this off the Sample Code for Reporting Utilization Stat's which is available in the examples on codeplex. I'll see if I can find the link to that example, its how I learned the most about how the ReportServer database is used and structured.

Related

How can I use the Report folder name as a parameter to chose the appropriate dataset?

I am using MS Reporting Services at a school board. I have a single report that is stored on the SSRS web server and then two linked reports are created to it so it exists in two different folders that have different security access. One is for Elementary schools and the other for Secondary schools. Currently the dataset to choose which school to run the report for includes both types of schools.
I have been asked to change the dataset to select only elementary schools if running the linked report from the Elementary folder and only secondary schools if running the linked report from the Secondary folder. This way it streamlines the options for the user.
I will create separate datasets for Elem and Sec schools and want to pull from the appropriate one.
How can I use the name of the report folder (or report URL) that the user is running the linked report from to be a parameter in choosing which dataset of schools I want to see in the school name dropdown parameter?
This way the user doesn't have to say they want the elementary school list. It will already know that since they are coming from the elementary folder. I wanted to avoid using a School Level parameter too just to do the same thing.
Rather than trying to check the executing folder (I've not looked into if it's possible or not yet). Why not just make the "school type" parameter hidden and set a default value in each of your linked reports. The parameter defaults are stored against the linked copy, not the original one.
You can access the linked reports parameters via the Web Portal on the reports context menu (click the 3 dots and choose 'manage').
Then within your report you can filter the dataset based on this parameter as normal.

Get space related information from multiple servers

I need to create an SSRS report that would display space related information for all of our servers and associated databases.
Is there a way to create a stored procedure that would loop through all servers and write space information to a temp table?
Or is it possible to do it via SSRS report where based on parameter chosen, it connects to a specific data source, and gets the space related information?
I need to create an SSRS report that would display space related information for all of our servers and associated databases. Is there a way to create a stored procedure that would loop through all servers and write space information to a temp table?
It would be a bit cumbersome, however you can make use of linked servers and dynamic SQL to loop each server and store results in a base table. You can then use the base table as a datasource for your SSRS report.
A better way to do it would be to use a powershell script to loop through each database server, store the results in your database reporting server and utilize an SSRS datasource to access the records from the reporting server.
Or is it possible to do it via SSRS report where based on parameter chosen, it connects to a specific data source, and gets the space related information?
You can make use of an SSRS dynamic datasource to connect to a specific data source and execute SQL to get space related information - however this would only return capacity information on one server. Here is how to work with dynamic datasources:
http://blog.rdx.com/blog/dba_tips/2014/02/creating-dynamic-data-sources-in-ssrs
Best way to do it as above would be to have a single central reporting server as a central data store, which queries each Database Server and stores the data. You can then point your report to the central datasource

TFS 2013 SSRS Test Points

I am working with TFS 2013 and generating reports with SSRS however I have benn tasked with creating a detailed report showing all steps and acceptance criteria for each test case and list the available parameters. I have searched and searched the web and have not found any examples that show the test steps.
Thank you in advance.
In most instances the Test Steps fields are not set to reportable by default so they are not populated in normal reporting databases. You'll need to set them to reportable or create a new data source targeting your TFS transaction databases instead of the Warehouse/Cube databases.
It is not recommended you target transaction databases with reports since this can affect performance of TFS when reports are run. Especially a field like Test Steps since it might need to pull a lot of data at once.
Use the witadmin command to change the reportability of the Test Steps field. Using detail will only put the information in your Warehouse while the detail option will put it into the Warehouse and the Cube. Where you want it depends on how you write your reports. Once set the reportability type can only be changed in limited ways, so please keep this in mind when deciding how you want it set.
witadmin changefield n:<nameOfFieldToChange> /collection:http://yourcollectionURL:8080/tfs/YourCollectionName /reportingtype:<dimension,detail>
See the reportable attributes section for details.

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.

How can I allow users to switch data sources for an SSRS report?

I have two SQL Server databases with identical schemas, but different data. I also have SSRS generating reports, in native mode, for one of the databases. All reports the same shared data source.
I would like to allow users to get reports for the other database. I created a second shared data source for the second database. Modifying the reports to use this second data source results in reports as expected.
Because the RDLs are the same, except for the data source, and because I don't want to maintain what are basically duplicate reports, I'm looking for a way to dynamically switch data sources, depending on user input.
Is there an easy means of accomplishing this? An existing solution would be best. Barring that, can the RDL's data source be parametrized? Or, can the RDS's connection string be parametrized?
You can use parameters or other expressions in the connection string.
See http://msdn.microsoft.com/en-us/library/ms156450%28SQL.90%29.aspx (2005)
or http://msdn.microsoft.com/en-us/library/ms156450.aspx (2008)
I'm going to piggy back on the last answer. Yes, use parameters in the connection string, but populate the data to ensure your users aren't seeing database names, etc. that you might not want them to see for security. You can store the values in a table, pass both the human readable and SQL Server specific values.
Does that make sense?