I've inherited a headache! I have two SQL Reporting Services servers. One is a production server, the other is a test server. I know for a fact that some of the reports were deployed directly to production. I know for a fact that some reports are out of sync, meaning the version on Test isn't the same as the version on Prod and vice-versa.
I want to pull all of the rdl files down from the servers and just run a diff against them to see which reports are different. Does anybody know of a way to pull the rdl files down or have a better suggestion about how to compare these two sets of reports? They number over 100 so I'm trying to avoid a one at a time approach if possible.
You cannot do this as the files are basically generated on the fly by the SQL Server.
You can, however, use the following tool to extract the RDL files from the SQL Server:
RS Scripter
I hope this helps.
Related
I am responsible for 196 different RDL files in a couple of dozen different folders and sub-folders and there are some key missing functionalities in SSRS that make maintaining report servers kind of a nightmare.
We get caught out all the time with differences between dev, test, and production. The project in visual studio doesn't allow you to deploy folder structures and there seems to be no easy way to compare everything deployed on various report servers.
What if any ways are there to make this a bit more maintainable?
You have a few options.
First one is to compare your ReportServer databases between your environments. Specifically the Catalog table which houses your folder structure and reports (which have a type = 2 I believe).
Second is the reporting services scripter too which can be found here:
http://www.sqldbatips.com/showarticle.asp?ID=62
This is an awesome tool that allows you to manage all your different environments and script them out for backup/restore and comparing.
I've inherited a live SSRS server and have been asked to amend a lot of reports that are on there.
Is there a quick way I can "export" all of the reports/data sources to a local instance so I can develop against it using BIDS?
e.g. Can I copy the ReportServer database from Production?
What else would I need to do?
I'd like to be able to have a Development copy of everything, with DataSources pointing to copies of the production databases but with the same names. Therefore I could re-write the report and re-define any SP's required locally, and then just deploy the new RDL to the server along with the ALTER SP scripts.
Is that possible or even sensible!?
Personally, with the volume you mentioned in the comments (30 RDL's and 3 databases) I wouldn't recommend some automated cloning of the entire Reporting setup from production to local. Instead, I'd suggest the following:
Reports
Go to the web front-end for your reportserver (typically http://yourserver/reports). Find each report, open it, and on the Properties tab click the Edit button. This button does not do what you might expect (edit the report inside the browser), but instead offers you a download of the RDL file. Save all the RDL files in one folder on disk.
With 30 reports manually downloading the reports may take you maybe an hour, max. This will probably beat most automated approaches. And since you should only need to do this step once...
Databases
It's not entirely clear from the question, but if you only have production databases and no DTAP setup yet, now may be a good time to start with that. You could host clones of the 3 production databases on a test server or possibly on your dev environment. Note that the schema's important here (should be the same as production), the data doesn't have to be entirely up to date.
Alternatively you can skip this bit and develop your reports against the production databases, assuming you can create connections from your dev machine to the production databases. Up to you.
Visual Studio / BIDS
This bit has a few parts to it:
Create a new reports project and solution in Visual Studio.
Add the existing RDL files you've downloaded earlier.
Depending on how the reports were set up, you may need to add shared data sources in your project, to get your reports up and running.
After all this, you should be able to preview your reports from Visual Studio (either with data coming from the "cloned" databases, or directly from production).
At this point you should also be able to safely make changes and preview/test them before deploying them.
Be sure to add the solution, reports, etc. to your version control system of choice.
Deployment
Once you've made changes you want to deploy to the reportserver, you have two basic options:
Deploy them using BIDS (see also the deployment properties MSDN page)
Go back to the web front-end, find the report, open the Properties tab again, click the Update button. This allows you to re-upload the RDL file with the changes you've made.
From now on you can just rinse and repeat on making updates and deploying the reports. No need for cloning/exporting the entire SSRS instance to keep things in sync.
I am trying to run a query that will pull information from multiple servers. Let me explain a little bit. The machine that makes a certain product stores that information on a server. So when we do reports we have to run a query on the accounting side and then run a query on the first server. I was just wondering if anyone could point me in the right direction, or help me out a little with constructing this query.
Since you didn't technically specify, I'm assuming you're running the query in MS SQL Server and the other databases are either MSSQL or MySQL, guessing based on your tags.
If that's the case you have a couple options. If you're going to be running these queries frequently you can use a linked server or if you're only wanting to do them sparingly you can use OPENROWSET.
Other options would be to create a SQL Server Integration Services (SSIS) package to extract the data from various sources and compile it into a single report or alternatively SQL Server Reporting Services (SSRS).
How can I merge the reports from seperate reporting servers into 1 location? In my current situation I am faced with 3 different reporting servers, each one used by a seperate department. 2 of them are running SSRS 2008r2, the third SSRS 2005.
I want to decommission the server that is running SSRS 2005 and then combine all the reports into one location to make things more maintainable.
There is about 100 reports in total. Nearly all of these use the same datasource. Is there any easy way these all on one database? Through sql, upload multiple reports at once, etc. I am currently not worried about permissions, just migrating all of the reports and setting the datasource for each.
Take a look at Reporting Services Scripter. It won't do the merge for you, but it greatly simplifies copying published reports between servers. Data source credentials don't transfer between servers, you'll need to update usernames/passwords after the transfer is complete.
I'd like to create a simple report that shows files that currently have pending changes (checked out) from a TFS 2008 server. I know that I can use the "Find in Source Control" option from Team Explorer, but I would rather generate a reporting services report. Ideally, I'd be able to show when the file was checked out and the user that checked it out, but that's not imperative.
If the data isn't pushed to the TFS data warehouse by default, then I'd like to find the relational table(s) in the SQL Server instance that would need to be queried.
I've spent some time digging around the TFS data warehouse and looking at all of the canned Reporting Services reports that I can get my hands on, but everything seems to be geared towards work items, check-ins associated with work items, etc...
If you're looking for some easy to read data and not too worried about print outs, have a look at the TFS sidekick application by Attrice. Very helpful and if you have the correct permissions, you'll be able to see all the checked out files.
http://www.attrice.info/cm/tfs/
I doubt the information you're looking for is in the data warehouse and even if it was it might not be fresh enough for your purposes. By default the warehouse is updated once an hour.
You could use SSRS to report directly against the TFSVersionControl database but I would not recommend going this route. The database is not documented and chances are very good that it will change in the next version. It could also have performance implications if your queries are not written correctly.
A better solution would be to use the TFS web services as your SSRS data source. There are services you can call to get all files that are checked out. This iformation is always current and the queries it runs are highly optimized.
Example command line (Studio 2008):
"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\tf.exe" status /recursive /user:*