本主题包括并介绍了一个示例 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)。
脚本迁移的项和资源
该脚本不会对同名的现有内容项进行写入。 如果脚本检测到源服务器上的目标服务器上具有相同名称的项,则各个项将导致“失败”消息,脚本将继续。 下表列出该脚本可迁移到目标报表服务器模式的内容和资源的类型。
| 条目 | 已迁移 | SharePoint | DESCRIPTION |
|---|---|---|---|
| 密码 | 否 | 否 | 不 迁移密码。 在迁移内容项后,在目标服务器上更新凭据信息。 例如,具有已存储凭据的数据源。 |
| 我的报表 | 否 | 否 | 本机模式“我的报表”功能基于单个用户登录名,因此脚本服务无权访问用于运行 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 模式,并且您使用安全开关,则脚本将尝试根据以下主题“ 比较 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 迁移参数,未找到项目。 迁移报表 TitleOnly.rdl 的订阅:找到 1 个项。 正在将订阅另存为 \\server\public\savedreports 作为 TitleOnly ...成功 正在迁移报表“TitleOnly.rdl”的历史记录设置……成功 正在迁移报表 TitleOnly.rdl 的处理选项...找到 0 个项目。 正在迁移报表 TitleOnly.rdl 的缓存刷新设置...迁移成功 迁移报表 TitleOnly.rdl 的缓存刷新计划:找到 1 个项目。 正在迁移缓存刷新计划 titleonly_refresh735amM2F ... 成功 |
| 高速缓存刷新计划 | 是的 | 是的 | |
| 映像 | 是的 | 是的 | |
| 报表部件 | 是的 | 是的 |
所需的权限
对于脚本中使用的所有方法,读取或写入项和资源所需的权限并不相同。 下表总结了用于每一项或资源的方法以及相关内容的链接。 导航到单个主题以查看所需的权限。 例如,ListChildren 方法主题说明所需的权限:
本机模式所需的权限: 项上的 ReadProperties
SharePoint 模式所需的权限: ViewListItems
有关详细信息,请参阅 “将 Reporting Services 中的角色和任务与 SharePoint 组和权限进行比较”。
如何使用脚本
将该脚本文件下载到一个本地文件夹中,例如 c:\rss\ssrs_migration.rss。
使用管理权限打开命令提示符。
导航到包含 ssrs_migration.rss 文件的文件夹。
使用适合于您的方案的参数运行命令。
基本示例,本机模式报表服务器到本机模式报表服务器:
下面的示例将本机模式 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 后取消脚本 。 相关设置未在步骤 1 中列出。 例如,未列出报表的缓存选项,但报表本身是。
小窍门
如果只想审核单个服务器,请对源和目标使用相同的服务器,并在步骤 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: BrowserRole: Content ManagerRole: Model Item BrowserRetrieve 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: BrowserRole: Content ManagerRole: CustomRoleRole: Model Item BrowserRole: My ReportsRole: PublisherRole: Report BuilderRole: System AdministratorRole: System UserRetrieving system policies:Retrieving system policies:System policy: BUILTIN\AdministratorsSystem policy: domain\user1System policy: domain\ueser2Retrieving schedules:Schedule: theMondayScheduleRetrieving catalog items. This may take a while.Folder: /Data SourcesDataSource: /Data Sources/Aworks2012_oltpFolder: /imagesResource: /images/Boba Fett.pngResource: /images/R2-D2.pngFolder: /ReportsReport: /Reports/productsReport: /Reports/testReport: /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/reportserver或在https://servername/sites/site_name/_vti_bin/reportserver浏览器中查看非虚拟文件夹结构。 对于 SharePoint 模式下的服务器,这有助于将源文件夹和目标文件夹设置为“/”以外的其他内容。密码不会迁移,必须重新输入密码,例如具有存储凭据的数据源。
参数说明
| 参数 | DESCRIPTION | 必选 |
|---|---|---|
| -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 部署中的新库进行迁移。
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 模式 -“bi”站点集迁移到 Azure 虚拟机上的原生模式服务器
下面的示例将迁移内容:
在 SharePoint 模式报表服务器 SourceServer 中,包含“sites/bi”的网站集群和一个共享文档库。
在 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"
验证
本节总结了为验证内容和策略是否已成功迁移而在目标服务器上要执行的一些步骤。
附表
验证目标服务器上的计划:
本机模式
浏览到目标服务器上的报表管理器。
单击顶部菜单上的 “网站设置 ”。
在左窗格中单击“ 计划 ”。
SharePoint 模式:
浏览至“站点设置” 。
在 Reporting Services 组中,单击“ 管理共享计划”。
角色和群组
本机模式
打开 SQL Server Management Studio 并连接到本机模式报表服务器。
在 对象资源管理器中 ,单击“ 安全性”。
单击角色。
故障排除
使用跟踪标志“-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 消息, WebResponse 响应, 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()---内部异常堆栈跟踪的末尾---
另请参阅
RS.exe 实用工具 (SSRS)
Reporting Services 中的角色和任务与 SharePoint 组和权限的比较