Share via


在報表伺服器之間複製內容的範例 Reporting Services rs.exe 指令碼

適用於:SQL Server Reporting Services (2008 R2 和更新版本) SharePoint Power BI 報表伺服器

本文章包含並描述範例 Reporting Services RSS 指令碼,其可使用 RS.exe 公用程式將一部 SQL Server Reporting Services 報表伺服器的內容項目和設定複製到另一部報表伺服器。 不論是原生或 SharePoint 模式,RS.exe 都會和 Reporting Services 一起安裝。 這個指令碼會在伺服器之間複製 Reporting Services 項目,例如報表和訂閱。 這個指令碼同時支援 SharePoint 模式和原生模式報表伺服器。

注意

您也可以使用開放原始碼 ReportingServicesTools PowerShell 模組

下載 ssrs_migration.rss 指令碼

從 GitHub 網站 Reporting Services RS.exe migration script (Reporting Services RS.exe 移轉指令碼) 下載指令碼至本機資料夾。 如需詳細資訊,請參閱本文的如何使用指令碼一節。

支援的案例

這個指令碼同時支援 SharePoint 模式和原生模式報表伺服器。 指令碼支援報表伺服器版本 SQL Server 2008 R2 (10.50.x) 和更新版本,以及 Power BI 報表伺服器。

這個指令碼可用來在相同模式或不同模式的報表伺服器之間複製內容。 例如,您可以執行指令碼將內容從 SQL Server 2008 R2 (10.50.x) 原生模式報表伺服器複製到 SQL Server 2012 SP1 (11.0.3x) SharePoint 模式報表伺服器。 您可以安裝 RS.exe 的任何伺服器執行這個指令碼。 例如,在下列部署中,您可以:

  • 在伺服器 A 執行 RS.exe 和指令碼。

  • 伺服器 B 複製內容

  • 到伺服器 C

伺服器名稱 報表伺服器模式
伺服器 A 原生
伺服器 B SharePoint
伺服器 C SharePoint

如需 RS.exe 公用程式的詳細資訊,請參閱 RS.exe 公用程式 (SSRS)

指令碼移轉的項目及資源

這個指令碼不會覆寫相同名稱的現有內容項目。 如果指令碼偵測到與目的地伺服器 (目的地伺服器位在來源伺服器上) 有相同名稱的項目,則個別項目將會產生「失敗」訊息,指令碼將繼續。 下表列出指令碼可移轉至目標報表伺服器模式的內容和資源類型。

Item 已移轉 SharePoint 描述
密碼 密碼 不會 移轉。 內容項目移轉之後,請更新目的地伺服器上的認證資訊。 例如,具有預存認證的資料來源。
我的報表 原生模式「我的報表」功能是以個別使用者登入為基礎,因此除非使用者使用 -u 參數來執行 rss 指令碼,否則指令碼服務將無法存取「我的報表」資料夾中的內容。 此外,「我的報表」不屬於 Reporting Services SharePoint 模式的功能,所以資料夾中的項目無法複製到 SharePoint 環境中。 因此,指令碼不會複製來源原生模式報表伺服器上「我的報表」資料夾中的報表項目

若要使用這個指令碼移轉 [我的報表] 資料夾中的內容,請完成下列步驟:

1. 在入口網站中建立新資料夾。 或者,您可以為每個使用者建立資料夾或子資料夾。
2. 以其中一個具有「我的報表」內容的使用者身分登入。
3. 在入口網站中,選取 [我的報表] 資料夾。
4. 選取該資料夾的 [詳細資料] 檢視。
5. 選取要複製的每一份報表。
6. 選取入口網站工具列中的 [移動]。
7. 選取所需的目的地資料夾。
8. 對每位使用者重複步驟 2-7。
9.執行指令碼。
記錄
記錄設定 雖然記錄設定會移轉,但是記錄詳細資料「不會」移轉。
排程 若要移轉排程,SQL Server Agent 必須在目標伺服器上執行。 如果 SQL Server Agent 未在目標上執行,您將會看見類似這句的錯誤訊息:

Migrating schedules: 1 items found. Migrating schedule: theMondaySchedule ... FAILURE: The SQL Agent service isn't running. This operation requires the SQL Agent service. ---> Microsoft.ReportingServices.Diagnostics.Utilities.SchedulerNotResponding Exception: The SQL Agent service isn't running. This operation requires the SQL Agent service.
角色和系統原則 Yes 根據預設,指令碼不會在伺服器之間複製自訂的權限結構描述。 預設行為是,項目會複製到目的地伺服器,且「繼承父權限」旗標會設為 TRUE。 如果您希望指令碼複製個別項目的權限,請使用 SECURITY 參數。

如果來源和目標伺服器不屬於相同的報表伺服器模式 (例如從原生模式到 SharePoint 模式),而且您使用 SECURITY 參數,則指令碼將會根據下文中的比較來嘗試對應預設角色和群組:將 Reporting Services 中的角色和工作與 SharePoint 群組和權限做比較。 自訂角色和群組不會複製到目的地伺服器。

當指令碼在 屬於相同模式的伺服器之間進行複製,而且您使用 SECURITY 參數時,指令碼將會在目的地伺服器上建立新的角色 (原生模式) 或群組 (SharePoint 模式)。

如果角色已出現在目的地伺服器上,指令碼將會建立類似下面的「失敗」訊息,並繼續移轉其他項目。 指令碼完成後,請確認目的地伺服器上的角色是否已根據您的需求設定。 正在移轉的角色:找到八個項目。

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 參數,也無法套用角色指派。
共用資料來源 Yes 指令碼不會覆寫目標伺服器上的現有項目。 如果目標伺服器上已存在相同名稱的項目,您將會看見類似這句的錯誤訊息:

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.

認證 會複製作為資料來源的一部分。 內容項目移轉之後,請更新目的地伺服器上的認證資訊。
共用資料集
資料夾 Yes 指令碼不會覆寫目標伺服器上的現有項目。 如果目標伺服器上已存在相同名稱的項目,您將會看見類似這句的錯誤訊息:

Migrating Folder: /Reports ... FAILURE: The item '/Reports' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports' already exists.
Report Yes 指令碼不會覆寫目標伺服器上的現有項目。 如果目標伺服器上已存在相同名稱的項目,您將會看見類似這句的錯誤訊息:

Migrating Report: /Reports/testThe item '/Reports/test' already exists. ---> Microsoft.ReportingServices.Diagnostics.Utilities.ItemAlreadyExistsException: The item '/Reports/test' already exists.
Power BI 報表 No 僅搭配 Power BI 報表伺服器提供

Reporting Services 中的 PowerShell 命令,例如 Out-RsRestFolderContent 和 Write-RsRestFolderContent,可能會作為替代方案來使用。
參數
訂閱
記錄設定 雖然記錄設定會移轉,但是記錄詳細資料「不會」移轉。
處理選項
快取重新整理選項 相依設定會隨目錄項目一起移轉。 下列輸出為將示範指令碼移轉報表 (.rdl) 以及相關的設定 (例如快取重新整理選項):

- 移轉報表 TitleOnly.rdl 的參數:找到 0 個項目。
- 移轉報表 TitleOnly.rdl 的訂閱:找到 1 個項目。
- 移轉 \\server\public\savedreports as TitleOnly 中儲存為 TitleOnly 的訂閱 ...SUCCESS
- 移轉報表 TitleOnly.rdl 的記錄設定 ...SUCCESS
- 移轉報表 TitleOnly.rdl 的處理選項 ...找到 0 個項目。
- 移轉報表 TitleOnly.rdl 的快取重新整理選項 ...SUCCESS
- 移轉報表 TitleOnly.rdl 的快取重新整理計畫:找到 1 個項目。
- 移轉快取重新整理計畫 titleonly_refresh735amM2F ...SUCCESS
快取重新整理計畫
影像
報表組件 Yes
KPI No No Reporting Services 的 PowerShell 命令,例如 Out-RsRestFolderContent 和 Write-RsRestFolderContent,可能會作為替代方案。
行動報表 No No Reporting Services 的 PowerShell 命令,例如 Out-RsRestFolderContent 和 Write-RsRestFolderContent,可能會作為替代方案。
Excel 活頁簿 No No 僅搭配 Power BI 報表伺服器提供

針對 Reporting Services 使用 PowerShell 命令,例如 Out-RsRestFolderContent 和 Write-RsRestFolderContent,可能會作為替代方案。

注意

在從 SQL Server Reporting Services 2019 開始的所有 SQL Server Reporting Services 版本,以及從 Power BI 報表伺服器 2022 年 9 月開始的所有 Power BI 報表伺服器版本中,報表組件皆已退場。

注意

SQL Server 行動報表發行工具已針對 SQL Server Reporting Services 2019 之後的所有 SQL Server Reporting Services 版本已退場。 它會從 SQL Server Reporting Services 2022 和 Power BI 報表伺服器開始中止。

所需的權限

指令碼中用來讀取或寫入項目和資源之所有方法所需的權限不盡相同。 下表摘要列出每個項目或資源使用的方式,以及相關內容的連結。 請瀏覽至個別文章以查看必要的權限。 例如,ListChildren 方法文章說明下列操作的必要權限:

  • 原生模式需要的權限: 項目的 ReadProperties

  • SharePoint 模式需要的權限: ViewListItems

項目或資源 來源 目標
目錄項目 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 https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"

使用方式附註:

  • 指令碼會以兩個步驟執行。

    第一個步驟是稽核,傳回將要移轉的項目清單,第二個步驟則是移轉程序。

    如果您只是想查看可能的移轉清單,或是想要修改參數,可以在第 1 個步驟之後取消指令碼。 步驟 1 中不會列出相依設定。 例如,報表的快取選項不會列出,而是列出報表本身。

    提示

    若您只想稽核單一伺服器,請針對來源和目的地使用相同的伺服器,然後在完成步驟 1 後取消。

    步驟 1 稽核資訊相當適合用於檢閱來源和目標原生模式伺服器上的現有角色。 下列範例會顯示步驟 1 稽核清單。 請注意清單中包含一個 [角色] 區段,因為使用了 switch-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 看起來像此 URL:

    • https://servername/reportserver

    在 SharePoint 模式中,該 URL 看起來就像此 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 https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://TargetServer/reportserver" -v tu="Domain\Userser" -v tp="password"  

下列範例將會加入安全性參數:

rs.exe -i ssrs_migration.rss -e Mgmt2010 -s https://SourceServer/ReportServer -u Domain\User -p password -v ts="https://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 https://SourceServer/ReportServer -u Domain\User -p Password -v ts="https://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 https://SourceServer/ReportServer -u Domain\User -p Password -v ts="https://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 https://SourceServer/_vti_bin/reportserver -v st="sites/bi" -v f="Shared Documents" -u Domain\User1 -p Password -v ts="https://TargetServer/sites/bi/_vti_bin/reportserver" -v tst="sites/bi" -v tf="Shared Documents" -v tu="Domain\User" -v tp="Password"  

原生模式到原生模式 - Azure 虛擬機器

下列範例將內容從原生模式報表伺服器 SourceServer 移轉至在 Azure 虛擬機器上執行的原生模式報表伺服器 TargetServerTargetServer 不會聯結至 SourceServer 的網域,而且 User2 是 Azure 虛擬機器 TargetServer 的系統管理員。

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

提示

如需如何使用 Windows PowerShell 在 Windows 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 https://uetesta02/_vti_bin/reportserver -u user1 -p Password -v ts="https://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 取得詳細資訊。 例如,如果您執行指令碼並且看到類似下面的訊息

  • 無法連線到伺服器:https://\<servername>/ReportServer/ReportService2010.asmx

再次使用 -t 旗標執行指令碼,就會看見類似這句的訊息:

  • System.Exception: Couldn't connect to server: https://\<servername>/ReportServer/ReportService2010.asmx ---> System.Net.WebException: **The request failed with HTTP status 401: Unauthorized**. 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 群組和權限做比較