I have some SQL Server 2005 Reporting Servers that have many reports, data sources and subscriptions loaded on them. My company is in the process of moving from SQL 2005 to SQL 2008 and 2008 R2. I need to move all the objects off the 2005 Reporting Server to the 2008 Reporting Server. Is there an easy way to do this without saving each report file (edit report and save .rdl) then uploading the report to the new server? This would also mean recreating the data sources and subscriptions. In our case there are many authors and reports are not managed in any formal way so getting the original reports will be extremely difficult.
I started looking at this task and at first was a little overwhelmed. I did not know of any easy way to move hundreds of reports, data sources and subscriptions from one server to another. I knew I could save each report as an .rdl then upload it to the new server but that would still leave all the data sources and subscriptions. I thought about the number of days it would take me to move the reports and other objects this way so started to look for alternatives. Most of my internet searches returned results that required moving the report server databases from one computer to another (click here to see this process). This approach requires moving encryption keys, moving databases then fixing any issues that may occur as a result. I thought there must be a better way so I kept looking. Then I found a reference to a tool called Reporting Services Scripter. This tool is a .NET Windows forms application that can be used to script out and transfer all SQL Service Reporting Services catalog items. The tool was created by Jasper Smith and can be downloaded here. The download is a single zip file. There is no installation required, just unzip the file to a folder. The tool requires .NET Framework 1.1 and to generate command files or use the Transfer mode the RS.EXE Reporting Services Management Tools command line utility is required.
To use the tool simply double click the RSSCripter.exe file. If presented with an 'Open File - Security Warning' acknowledge the warning by clicking Run and the tool will open.
Once the tool is open click the Options button to configure the tool for your environment.
Be sure to set the Default Script Directory, this is the location the tool will put the generated script files in. Next click the Servers tab to add your reporting servers to the grid. The first column is just a label and can be anything you like, but it must be unique. The second column is the actual link to the reporting server and should be of the form http://servername/Reportserver/ReportService.asmx for SQL 2000 servers and http://servername/Reportserver/ReportService2005.asmx for SQL 2005 and 2008.
I am not going to go through each tab; the tool includes a very good readme that describes all the available options. There are a few things to note. To include report subscriptions click the Report tab and check the Include Subscriptions check box. The Global tab is used to define the location of the RS.EXE file, the database authentication and the scripting mode. Once all options have been set you are ready to run the tool.
First select a server from your server list by clicking the drop down labeled Report Server. Once a server is selected click the Get Catalog button. This will list all the catalog items on the reporting server.
You can select individual reports by expanding the report folder and selecting the report or select the entire folder. Once you have selected the objects click the Script button and the script files will be generated in the folder selected as the Default Script Directory. The tool will create script files for all objects selected and it will create a command (.cmd) file for loading those objects on a server. In the command file there is a line that sets the URL of the server to script the report objects to, change this line to the server you want to transfer your reports to:
Also be sure the line for the location to the RS.EXE file is correct.
SET RS="C:\Program Files\Microsoft SQL Server\90\Tools\Binn\RS.EXE"
Once the command file has been edited copy all the files to the new reporting server and execute the command file by double clicking the file in Windows 2003 and right clicking and selecting Run As Administrator in Windows 2008. When I used this tool to migrate to the new server 136 items were migrated and it took just a few minutes. When I inspected the new reporting server and compared it to the old all items I ask for were on the new server, intact and functioned the same as on the old server.
This is a good tool that works very well for what it is designed for. It saved me countless hours completing my task in less than an hour. I did not have to worry about encryption keys, security or stuff left over from a previous version like I would have if I had used the move database method.
Download the Reporting Services Scripter tool here.
Unzip the file to a folder.
As always test on a test server before using in production.
Double click RSScripter.exe, click the Options button and configure the tool.
After executing, copy the generated files to the new server edit and execute the .cmd.
Hi Dale, thanks for the article ! I can also see some positive comments relating to functionality on SQL 2012. Would you be able to tell me if the tool still works with 2014 and (less-so-much) 2016? Woulb be interested in learning whether this tool works for the 2005 -> 2012 and 2008 R2 -> 2012/2014 upgrade paths
Friday, April 24, 2015 - 1:46:52 PM - Frank Garcia
I’m having an error rsInvalidItemPath (The path of the item '' is not valid. The full path must be less than 260 characters long; other restrictions apply. If the report server is in native mode, the path must start with slash.) and cannot figure out which variable has an issue and how to fix it.
These are my script variables:
SET LOGFILE="RS Scripter Load Log.txt"
SET RS="C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\rs.EXE"
I want to migrate ssrs 2005 reports to ssrs 2012. RS scripter works fine to migrate all ssrs 2005 reports to ssrs 2012 server but It does not migrate folder security even though I selected the script folder security option under the Folder tab.
I setup RS Scripter as described and after I click "Get Catalog", I get error message "The Request failed with HTTP status 403: Forbidden". I understand it's permissions issue, but I tried both Windows and Basic authentication, tried RSExec, NetworkService account, administrator, user's account, still no avail. The encription key expired, but the Reports execute just fine. Would that be a problem?
Monday, July 01, 2013 - 8:06:31 PM - Greg Robidoux
To migrate the reporting serice to new server , I prefer backup and restore the database and restore the encryption key which is very simple. I have used this tool to consoldiate multiple report server to single server. The other scenario where I have used is when we migrated the database server to a new server , we need to change the data source defined in each rdl file . In this scenario I have downloded all the rdl and data source and replaced old IP address and password with simple find and replace utility and uploaded again
Agree that RS Scripter is a great tool and we use it all the time to move reports from test to production servers. But as the previous posters have already said, there is a much simpler way to accomplish the same thing. The key is to backup your encryption keys first from the 2005 instance. Then you can backup/restore or dettach/reattach the database, run through the SSRS configuration tool, and restore the encryption keys. Restart the SSRS service and you're good to go.
We've been using this tool for years to migrate reports and datasources between Dev, QA, and Produciton servers. One important thing to note is that if you use SQL authentication on your data sources with the login and password saved in the datasource, it will NOT move the logins or passwords. In that case you will have to manually enter the authentication credentials for each datasource (embedded or shared).
I moved/upgraded our 2005 report server db just like LSN. Deattached/Attached and then let Reporting Services upgrade the database. I think I may have had to export/import the encryption keys, but it was pretty easy as I remember.
I do like RS Scripter very much, but in the scenario you describe, why wouldn't you just attach your ReportServer db to the new SSRS 2008 instance? It would have upgraded your db for you and all your reports and other objects would have been just there without additional work.
I used it to move over 600 report and associated datasources, subscriptions etc from a sql 2005 server to sql 2008 and it was brilliant - easy to use and effective. I considered copying the report server database but this was better!