Our company is moving from SSRS 2012 to SSRS 2017. I would like to know if anyone has done a similar migration. If yes, could you please guide me through the steps?

From what I read about the migration, it looks like its a very tiring process since I will have to download each report from 2012 server and upload it into 2017 server. or use PowerShell scripting to automate the same.

If anyone knows a better way to do it, I am all ears.


2 Answers 2


Here's the process I use to migrate to a new report server. This is assuming you are not already using source control and you don't have a Visual Studio solution for your reports. If you do, skip to #4. If you have the database permissions, you can use the Microsoft guide Moving the Report Server Databases.

1. Backup deployed reports

  • Remote to the current report server.


  • Then save the following procedure as a .rss file and run it with the parameter parentFolder="" as a zero string to save the entire folder structure with all the reports.

Command Line:

rs -s http://localhost/reportserver -i D:\Scripts\Backup_Reports.rss -e Mgmt2010 -v backupFolder="D:\Scripts\BackupReports" -v parentFolder=""

Report Backup Procedure:

Public Sub Main()
    ' Purpose:   Script to backup reports from a folder on ReportServer
    '            Save file as .rss extension and run using rs.exe from command line.
    ' Reference: http://bhushan.extreme-advice.com/back-up-of-ssrs-reports-using-rs-utility/
    '            https://docs.microsoft.com/en-us/sql/reporting-services/tools/rs-exe-utility-ssrs?view=sql-server-2017
    ' Example:   rs -s http://localhost/reportserver -i D:\Scripts\Backup_Reports.rss -e Mgmt2010 -v backupFolder="D:\Scripts\BackupReports" -v parentFolder="/IndividualReportFolderNameHere"
    '            rs -s http://localhost/reportserver -i D:\Scripts\Backup_Reports.rss -e Mgmt2010 -v backupFolder="D:\Scripts\BackupReports" -v parentFolder=""
        rs.Credentials = System.Net.CredentialCache.DefaultCredentials
        Dim items As CatalogItem() = Nothing

        If String.IsNullOrEmpty(parentFolder) Then
            items = rs.ListChildren("/", True)
            items = rs.ListChildren(parentFolder, False)
        End If

        Console.WriteLine("...Reports Back Up Started...")

        For Each item As CatalogItem In items
            If item.TypeName = "Report" Then
                Dim reportPath As String = item.Path
                parentFolder = Path.GetDirectoryName(item.Path) ' comment out this line to save the reports in one folder
                Dim reportDefinition As Byte() = rs.GetItemDefinition(item.Path)
                Dim rdlReport As New System.Xml.XmlDocument
                Dim Stream As New MemoryStream(reportDefinition)
                Dim backupPath As String = Path.Combine(backupFolder, Date.Now().ToString("yyyy.MM.dd") + "\" + parentFolder)

                If (Not System.IO.Directory.Exists(backupPath)) Then
                End If

                rdlReport.Save(Path.Combine(backupPath, item.Name + ".rdl"))

                Console.WriteLine(item.Name + ".rdl")
            End If

        Console.WriteLine("...Reports Back Up Completed...")

    Catch e As Exception

    End Try

End Sub

2. Create a Visual Studio solution

  • Make a report project per report folder under one solution.
  • Add the reports from the backup .rdl files
  • Add Shared Data Sources
  • Add Shared Datasets


3. Use source control with Microsoft Azure DevOps Services

4. Setup deployment configuration

Setup the target deployment settings for each report project using the Configuration Manager.

Report Project Configuration


Configuration Manager


5. Build the solution

  • I only use this option for the initial build. After that, you can deploy individual reports by right clicking them and selecting Deploy.



I too am in the midst of similar SSRS migration (2008SSRS:2016SSRS). Yes, the reports will need to be downloaded from one server and moved to the other. Also you will likely need to migrate other SSRS content-- shared data sources, shared data sets, report subscriptions. Below are some tools and processes that have worked well.


  • ReportSync is an open source program free to download and use. It works great for downloading reports in bulk, and it can even push a report from one server to another server.

    • I downloaded the source code files from Github (http://github.com/phires/reportsync), ran VS, opened the solution file (.SLN), compiled the program, found the executable file (.EXE) from the 'C:\Temp\reportsync-master\bin\Release' folder, and saved the .EXE somewhere for me to use regularly

    • This Export feature was marvelous for simply dumping all the RDL files to a folder for me to access and add to a VS Solution Project

  • RS Utility with ssrs_migration.rss script file is similar to ReportSync program, except it is run via command line and published by Microsoft. This utility in my experience will migrate more report content than ReportSync, but I don't think it is as simple to use and you cannot easily cherry-pick the content to move (it moves everything within the Source to Target). For more information:

As an example, the following command moved all datasources from Source to Target server...

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://gcod049/ReportServer -v ts=http://gcop046/reportserver -v f=”/Data Sources/03-PROD” -v tf=”/Data Sources”
  • Visual Studio 2015 with SSDT addin is my preferred environment for storing and deploying the files to the report files DEV SSRS server (.RDL- Report Definition , .RSD- Shared Datasets , .RDS- Shared Datasources, rptproj- Report Project).

    • I have a report project file for each target folder on the server (~20 ssrs folders and vs projects). You configure the SSRS Project with the appropriate deployment information (server url, ssrs version, target folder, etc.)
  • Version Control will help you be much more agile with report change requests. This will allow you to make changes to the report fiels (.RDL) and quickly restore or compare changes.

    • I use Visual Studio 2015 with ANKHSVN for Visual Studio connected to SVN server repository


  • I also analyzed the report execution history to identify reports no longer used. I decomissioned these reports the DEV SSRS server to a folder called something to the effect of: \Decomissioned\SSRS 2008 Migration\

Also take a looks at some of my SO posts where I have documented some of my SSRS questions/ answers.

9 Answers

|   Votes |   SO Posted Answers                                                |   Posted          |
|   0     |   Visual Studio SSRS RDL Files creating a new file (backup) when   |   Sep 28 at 19:28 |
|         |   opened                                                           |                   |
|   0     |   is there a way to query future SSRS subscription schedules?      |   Sep 20 at 16:14 |
|   0     |   There is an error in XML document (2, 2): Visual Studio, SSRS    |   Aug 10 at 14:50 |
|         |   Project file errors (VS2015-VS2017)                              |                   |
|   0     |   AnkhSvn undo/revert a commit                                     |   Aug 8 at 17:04  |
|   3     |   SSRS file error message: The number of defined parameters is not |   Jul 23 at 20:05 |
|         |   equal to the number of cell definitions in the parameter panel   |                   |
|   0     |   How do I move subreports into their own folder?                  |   Jul 20 at 19:55 |
|   1     |   SSRS Permissions                                                 |   Jul 9 at 17:43  |
|   1     |   SSRS 2008 Report Snapshot Timestamp                              |   Jul 2 at 19:36  |
|   2     |   Add ssrs report description                                      |   Jun 26 at 16:11 |

Other Favorited posts

How do I copy SSRS reports to a new server if I am not the owner of the reports (ReportSync answer by nunespascal)

ssrs_migration.rss file (RS Utility script file download)

SSRS Migration Sharepoint Integrated to Standalone (RS Utility script file syntax)

how to migrate or copy SSRS datasource from one server to another without restoring the report server (RS Utility script file download)

  • Looks like I'm late to this post, but I have a question about these migration options. If I were to use ReportSync, my understanding is that it only copies the reports themselves (RDL files along with data sources), but what about the email subscriptions and stuff like that. How do you migrate that?
    – Pavel
    Nov 5, 2020 at 17:47
  • @Pavel , ReportSync is great at what it does (copy reports to another server), but it will not migrate all types of content. So I basically use it for deployment from DEV to PROD. The ReportServerTools powershell module has some commands for moving content (Get-RsSubscription, Copy-RsSubscription, New-RsDataSource). Or checkout the Upgrade and Migrate Reporting Services article. Nov 5, 2020 at 21:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy