用于在报表服务器之间迁移内容的示例 Reporting Services rs.exe 脚本

本主题包括并介绍了一个示例Reporting Services RSS 脚本,该脚本使用 RS.exe 实用工具将内容项和设置从一个SQL Server Reporting Services报表服务器复制到另一个报表服务器。 本机模式和 SharePoint 模式下,RS.exe 都随 Reporting Services 一起安装。 脚本将 Reporting Services 项(例如,报表和订阅)从一个服务器复制到另一个服务器。 该脚本支持 SharePoint 模式和本机模式报表服务器。

适用于:Reporting Services SharePoint 模式 | Reporting Services 本机模式

本主题内容:

下载 ssrs_migration.rss 脚本

从 CodePlex 站点 Reporting Services RS.exe 脚本迁移内容 将脚本下载到本地文件夹。 有关详细信息,请参阅本主题中的 如何使用该脚本 部分。

支持的方案

该脚本支持 SharePoint 模式和本机模式报表服务器。 该脚本支持以下报表服务器版本:

  • SQL Server 2014

  • SQL Server 2012

  • SQL Server 2008 R2

该脚本可用于在相同模式或不同模式的报表服务器之间复制内容。 例如,可以运行脚本,将内容从 SQL Server 2008 R2 本机模式报表服务器复制到 SQL Server 2012 SP1 SharePoint 模式报表服务器。 可以从安装了 RS.exe 的任何服务器运行该脚本。 例如,在以下部署中,您可以:

  • 在服务器 A 运行 RS.exe 和脚本。

  • 将内容从 服务器 B

  • 复制到 服务器 C

服务器名称 报表服务器模式
服务器 A 本机
服务器 B SharePoint
服务器 C SharePoint

有关使用 RS.exe 实用工具的详细信息,请参阅 RS.exe 实用工具 (SSRS)

脚本迁移的项和资源

该脚本将不会覆盖同名的现有内容项。 如果该脚本在目标服务器上检测到名称与源服务器上相同的项,则这些单独的项将导致“失败”消息,但该脚本将继续运行。 下表列出该脚本可迁移到目标报表服务器模式的内容和资源的类型。

Item 是否迁移 SharePoint 说明
密码 迁移密码。 在迁移内容项后,在目标服务器上更新凭据信息。 例如,具有已存储凭据的数据源。
我的报表 本机模式“我的报表”功能基于单个用户登录名,因此脚本服务无权访问用于运行 rss 脚本的 -u 参数以外的用户“我的报表”文件夹中的内容。 此外,“我的报表”不是Reporting Services SharePoint 模式的功能,文件夹中的项目无法复制到 SharePoint 环境。 因此,该脚本不会复制源本机模式报表服务器上“我的报表”文件夹中的报表项。 若要使用此脚本迁移“我的报表”文件夹中的内容,请完成以下操作:

1) 在报表管理器中创建新文件夹 () 。 或者,您可为每个用户创建文件夹或子文件夹。

2) 以用户身份登录,其中包含“我的报表”内容。

3) 在报表管理器中,单击“ 我的报表” 文件夹。

4) 单击文件夹的 “详细信息” 视图。

5) 选择要复制的每个报表。

6) 单击报表管理器工具栏中的“ 移动 ”。

7) 选择所需的目标文件夹。

8) 对每个用户重复步骤 2-7。

9) 运行脚本。
历史记录
历史记录设置 将迁移历史记录设置,但不迁移历史记录详细信息。
计划 若要迁移计划,在目标服务器上需运行 SQL Server 代理。 如果在目标服务器上未运行 SQL Server 代理,将会显示如下错误消息:

Migrating schedules: 1 items found. Migrating schedule: theMondaySchedule ... FAILURE: The SQL Agent service is not running. This operation requires the SQL Agent service. ---> Microsoft.ReportingServices.Diagnostics.Utilities.SchedulerNotResponding Exception: The SQL Agent service is not running. This operation requires the SQL Agent service.
角色和系统策略 默认情况下,该脚本不会在服务器之间复制自定义权限架构。 默认行为是,将“继承父权限”标志设置为 TRUE 的项将被联合到目标服务器。 如果您希望该脚本复制单独项的权限,请使用 SECURITY 开关。

如果源服务器和目标服务器 未处于相同报表服务器模式下,例如从本机模式到 SharePoint 模式,并且您使用 SECURITY 开关,则该脚本将尝试基于比较(请参阅主题 Reporting Services 中的角色和任务与 SharePoint 组和权限的比较)映射默认角色和组。 自定义角色和组不复制到目标服务器。

处于相同模式下的服务器之间复制脚本并且使用 SECURITY 开关时,该脚本将在目标服务器上创建新角色(本机模式)或组(SharePoint 模式)。

如果某一角色已在目标服务器上存在,该脚本将创建如下“失败”消息,并且继续迁移其他项。 在该脚本运行完毕之后,请验证目标服务器上的角色已配置为满足您的需要。 迁移角色:找到 8 项。

Migrating role: Browser ... FAILURE: The role 'Browser' already exists and cannot be created. ---> Microsoft.ReportingServices.Diagnostics.Utilities.RoleAlreadyExistsException: The role 'Browser' already exists and cannot be created.

有关详细信息,请参阅 授予用户对报表服务器 (报表管理器)

注意: 如果某一用户在源服务器上存在,但在目标服务器上不存在,则该脚本无法在目标服务器上应用角色分配,即使使用了 SECURITY 开关,该脚本也无法应用角色分配。
共享数据源 该脚本将不覆盖目标服务器上的现有项。 如果目标服务器上已存在同名的项,将显示如下错误消息:

Migrating DataSource: /Data Sources/Aworks2012_oltp ... FAILURE:The item '/Data Sources/Aworks2012_oltp' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Data Source s/Aworks2012_oltp' already exists.

凭据 作为数据源的一部分被复制。 在迁移内容项后,在目标服务器上更新凭据信息。
共享数据集
文件夹 该脚本将不覆盖目标服务器上的现有项。 如果目标服务器上已存在同名的项,将显示如下错误消息:

Migrating Folder: /Reports ... FAILURE: The item '/Reports' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports' already exists.
报表 该脚本将不覆盖目标服务器上的现有项。 如果目标服务器上已存在同名的项,将显示如下错误消息:

Migrating Report: /Reports/testThe item '/Reports/test' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports/test' already exists.
参数
订阅
历史记录设置 将迁移历史记录设置,但不迁移历史记录详细信息。
处理选项
高速缓存刷新选项 相关设置作为目录项的一部分迁移。 下面是该脚本的示例,它迁移报表 (.rdl) 以及高速缓存刷新选项之类的相关设置:

正在迁移报表 TitleOnly.rdl 的参数: 找到了 0 项。

正在迁移报表 TitleOnly.rdl 的订阅:找到 1 项。

正在迁移订阅\\server\public\savedreports 中另存为 TitleOnly ...成功

正在迁移报表 TitleOnly.rdl 的历史记录设置...成功

正在迁移报表 TitleOnly.rdl 的处理选项...找到 0 项。

正在迁移报表 TitleOnly.rdl 的高速缓存刷新选项...成功

正在迁移报表 TitleOnly.rdl 的高速缓存刷新计划:找到 1 项。

正在迁移高速缓存刷新计划 titleonly_refresh735amM2F...成功
高速缓存刷新计划
映像
报表部件

所需的权限

读取或写入项和资源的权限并不是对于在该脚本中使用的所有方法全都相同。 下表总结了用于每一项或资源的方法以及相关内容的链接。 导航到单独的主题可看到所需权限。 例如,ListChildren 方法主题记录了以下所需权限:

  • 本机模式所需的权限: 项上的 ReadProperties

  • SharePoint 模式所需的权限: ViewListItems

项或资源 Source 目标
目录项 ListChildren

GetProperties

GetItemDataSources

GetItemReferences

GetDataSourceContents

GetItemLink
CreateCatalogItem

SetItemDataSources

GetItemReferences

CreateDataSource

CreateLinkedItem

CreateFolder
角色 ListRoles

GetRoleProperties
CreateRole
系统策略 GetSystemPolicies SetSystemPolicies
计划 ListSchedules CreateSchedule
订阅 ListSubscriptions

GetSubscriptionProperties

GetDataDrivenSubscriptionProperties
CreateSubscription

CreateDataDrivenSubscription
高速缓存刷新计划 ListCacheRefreshPlans

GetCacheRefreshPlanProperties
CreateCacheRefreshPlan
参数 GetItemParameters SetItemParameters
执行选项 GetExecutionOptions SetExecutionOptions
高速缓存选项 GetCacheOptions SetCacheOptions
历史记录设置 GetItemHistoryOptions SetItemHistoryOptions
项策略 GetPolicies SetPolicies

有关详细信息,请参阅 Reporting Services 中的角色和任务与 SharePoint 组和权限的比较

如何使用脚本

  1. 将该脚本文件下载到一个本地文件夹中,例如 c:\rss\ssrs_migration.rss

  2. 使用管理权限打开命令提示符。

  3. 导航到包含 ssrs_migration.rss 文件的文件夹。

  4. 使用适合于您的方案的参数运行命令。

基本示例,本机模式报表服务器到本机模式报表服务器:

下面的示例将本机模式 Sourceserver 中的内容迁移到本机模式 Targetserver

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"

使用注意事项:

  • 该脚本分两步运行。

    第一步是审核,以便返回将迁移的项的列表,第二步是迁移过程。

    如果你只想要查看可能的迁移列表或者想要修改参数,则可以在第一步后 取消该脚本 。 相关设置不在第一步中列出。 例如,不列出报表的高速缓存选项,而只列出报表本身。

    提示

    如果想要仅审核单个服务器,则对源和目标使用相同的服务器并在步骤 1 后取消

    从第一步中获得的审核信息适用于查看源和目标本机模式服务器上的现有角色。 下面是第一步审核列表的示例。 请注意,该列表包含“roles”部分,因为使用了开关-v security="True":

    • Retrieve and report the list of items that will be migrated. You can cancel the script after step 1 if you do not want to start the actual migration.

      Retrieving roles:

      Role: Browser

      Role: Content Manager

      Role: Model Item Browser

      Retrieve and report the list of items that will be migrated. You can cancel the script after step 1 if you do not want to start the actual migration.

      Retrieving roles:

      Role: Browser

      Role: Content Manager

      Role: CustomRole

      Role: Model Item Browser

      Role: My Reports

      Role: Publisher

      Role: Report Builder

      Role: System Administrator

      Role: System User

      Retrieving system policies:

      Retrieving system policies:

      System policy: BUILTIN\Administrators

      System policy: domain\user1

      System policy: domain\ueser2

      Retrieving schedules:

      Schedule: theMondaySchedule

      Retrieving catalog items. This may take a while.

      Folder: /Data Sources

      DataSource: /Data Sources/Aworks2012_oltp

      Folder: /images

      Resource: /images/Boba Fett.png

      Resource: /images/R2-D2.png

      Folder: /Reports

      Report: /Reports/products

      Report: /Reports/test

      Report: /Reports/TitleOnly

  • SOURCE_URL 和 TARGET_URL 必须是指向源和目标 Reporting Services 报表服务器的有效报表服务器 URL。 在本机模式下,报表服务器 URL 如下所示:

    • https://servername/reportserver

    在 SharePoint 模式下,URL 如下所示:

    • https://servername/_vti_bin/reportserver
  • 在 SharePoint 中提供给用户的虚拟文件夹结构可能与基础结构不同。 在浏览器中打开 https://servername/_vti_bin/reportserverhttps://servername/sites/site_name/_vti_bin/reportserver 可看到非虚拟文件夹结构。 对于 SharePoint 模式下的服务器,这有助于将源文件夹和目标文件夹设置为“/”以外的内容。

  • 密码不迁移,并且必须重新输入,例如具有存储的凭据的数据源。

参数说明

参数 说明 必须
-s Source_URL 源报表服务器的 URL
-u Domain\password -p password 源服务器的凭据。 可选,如果缺失则使用默认凭据
-v st="SITE" 可选。 此参数仅用于 SharePoint 模式报表服务器。
- v f="SOURCEFOLDER" 设置为“/”将迁移所有内容,设置为“/folder/subfolder”之类的项将执行部分迁移。 将复制该文件夹内的所有内容 可选,默认为“/”。
-v ts="TARGET_URL" 目标 RS 服务器的 URL
-v tu="domain\username" -v tp="password" 目标服务器的凭据。 可选,如果缺失则使用默认凭据。 注意: 在目标服务器中,用户将作为共享计划的“创建者”以及报表项的“修改者”帐户列出。
-v tst="SITE" 可选。 此参数仅用于 SharePoint 模式报表服务器。
-v tf ="TARGETFOLDER" 设置为“/”可迁移到根级别中。 设置为“/folder/subfolder”可复制到已存在的目录下。 “SOURCEFOLDER”内的所有内容都将复制到“TARGETFOLDER”。 可选,默认为“/”。
-v security= "True/False" 如果设置为“False”,目标目录项将根据目标系统的设置继承安全设置。 这是在不同的报表服务器类型之间进行迁移(例如本机模式到 SharePoint 模式)的推荐设置。 如果设置为“True”,则该脚本将尝试迁移安全设置。 可选,默认值为“False”。

更多示例

本机模式报表服务器到本机模式报表服务器

下面的示例将本机模式 Sourceserver 中的内容迁移到本机模式 Targetserver

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"  

以下示例添加安全开关:

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p password -v ts="http://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password" -v security="True"  

本机模式到 SharePoint 模式 - 根网站

以下示例将内容从本机模式 SourceServer 迁移到 SharePoint 模式服务器 TargetServer 上的“根站点” 。 本机模式服务器上的“报表”和“数据源”文件夹作为 SharePoint 部署上的新库迁移。

ssrs_rss_migrate_root_site

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p Password -v ts="http://TargetServer/_vti_bin/ReportServer" -v tu="Domain\User" -v tp="Password"  

本机模式到 SharePoint 模式 -“bi”网站集

下面的示例将本机模式服务器的内容迁移到包含网站集“sites/bi”和共享文档库的 SharePoint 服务器。 该脚本在目标文档库中创建文件夹。 例如,该脚本在目标文档库中创建“报表”和“数据源”文件夹。

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\User -p Password -v ts="http://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"  

SharePoint 模式到 SharePoint 模式 -“bi”网站集

下面的示例将迁移内容:

  • 从包含网站集“sites/bi”和共享文档库的 SharePoint 服务器 SourceServer

  • 到包含网站集“sites/bi”和共享文档库的 TargetServer SharePoint 服务器。

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/_vti_bin/reportserver -v st="sites/bi" -v f="Shared Documents" -u Domain\User1 -p Password -v ts="http://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"  

本机模式到本机模式 - Azure 虚拟机

下面的示例将迁移内容:

  • 从本机模式报表服务器 SourceServer

  • 到在 Azure 虚拟机上运行的“TargetServer”本机模式报表服务器。 TargetServer 未加入 SourceServer 的域,User2 是 Azure 虚拟机 TargetServer 上的管理员。

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://SourceServer/ReportServer -u Domain\user1 -p Password -v ts="http://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Password2"  

提示

有关如何使用 Windows PowerShell 在 Azure 虚拟机上创建 Reporting Services 报表服务器的信息,请参阅使用 PowerShell 创建运行本机模式报表服务器的 Azure VM

SharePoint 模式 - Azure 虚拟机上本机模式服务器的“bi”网站集

下面的示例将迁移内容:

  • 从包含网站集 “sites/bi” 和共享文档库的 SharePoint 模式报表服务器 SourceServer

  • 到在 Azure 虚拟机上运行的“TargetServer”本机模式报表服务器。 TargetServer 未加入 SourceServer 的域,User2 是 Azure 虚拟机 TargetServer 上的管理员。

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s http://uetesta02/_vti_bin/reportserver -u user1 -p Password -v ts="http://ssrsnativeazure.cloudapp.net/ReportServer" -v tu="user2" -v tp="Passowrd2"  

验证

本节总结了为验证内容和策略是否已成功迁移而在目标服务器上要执行的一些步骤。

计划

验证目标服务器上的计划:

Native Mode

  1. 浏览到目标服务器上的报表管理器。

  2. 在顶部菜单上,单击 “网站设置”

  3. 在左窗格中,单击 “计划”

SharePoint 模式:

  1. 浏览至“站点设置” 。

  2. Reporting Services 组中,单击 “管理共享计划”

角色和组

Native Mode

  1. 打开 SQL Server Management Studio 并连接到本机模式报表服务器。

  2. “对象资源管理器” 中,单击 “安全性”

  3. 单击“角色”。

疑难解答

使用跟踪标志“-t”可获得详细信息。 例如,如果您运行此脚本并看到如下消息

  • 无法连接到服务器:http://< servername>/ReportServer/ReportService2010.asmx

使用 -t 标志再次运行脚本,以查看类似于以下内容的消息:

  • System.Exception:无法连接到服务器:http:// servername>/ReportServer/ReportService2010.asmx ---> System.Net.WebException:请求失败,HTTP 状态为 401:未授权。< at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Microsoft.SqlServer.ReportingServices2010.ReportingService2010.IsSSLRequired() at Microsoft.ReportingServices.ScriptHost.Management2010Endpoint.PingService(String url, String userName, String password, String domain, Int32 timeout) at Microsoft.ReportingServices.ScriptHost.ScriptHost.DetermineServerUrlSecurity() --- End of inner exception stack trace ---

另请参阅

RS.exe 实用工具 (SSRS)
Reporting Services 中的角色和任务与 SharePoint 组和权限的比较