本主題包含並描述範例 Reporting Services RSS 腳本,該腳本會使用 RS.exe 公用程式,將內容專案和設定從一部 SQL Server Reporting Services 報表伺服器複製到另一部報表伺服器。 RS.exe 會與 Reporting Services 一起安裝,同時為原生和 SharePoint 模式。 腳本會將 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 的任何伺服器執行文稿。 例如,在下列部署中,您可以:
執行 RS.exe 並在伺服器 A 上啟動腳本。
從 伺服器 B 複製內容
至 伺服器 C
| 伺服器名稱 | 報表伺服器模式 |
|---|---|
| 伺服器 A | 本地人 |
| 伺服器 B | SharePoint |
| 伺服器 C | SharePoint |
如需 RS.exe 公用程式的詳細資訊,請參閱 RS.exe 公用程式 (SSRS) 。
腳本移轉的項目和資源
腳本不會覆蓋相同名稱的現有內容項目。 如果腳本偵測到來源伺服器上目的地伺服器上具有相同名稱的專案,個別專案將會產生「失敗」訊息,腳本將會繼續。 下表列出腳本可移轉至目標報表伺服器模式的內容和資源類型。
| 項目 | 已移轉 | SharePoint | 說明 |
|---|---|---|---|
| 密碼 | 否 | 否 | 密碼不會移轉。 移轉內容項目之後,請更新目的地伺服器上的認證資訊。 例如,具有預存認證的數據源。 |
| 我的報表 | 否 | 否 | 原生模式 「我的報表」功能是以個別使用者登入為基礎,因此腳本服務無法存取用於執行 rss 腳本之 -u 參數以外的使用者「我的報表」資料夾中的內容。 此外,「我的報表」不是 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 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 的參數:未找到任何項目。 移轉報表 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 的稽核資訊,可以用來檢閱來源和目標原生模式伺服器上的現有角色。 以下是步驟一稽核清單的範例。 請注意,清單包含「角色」區段,因為已使用 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: 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 模式中使用伺服器時,這有助於將源資料夾和目標資料夾設定為非 “/” 的其他選項。密碼不會移轉,而且必須重新輸入,例如具有預存認證的數據源。
參數描述
| 參數 | 說明 | 為必填項目 |
|---|---|---|
| -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 安全性= “是/否” | 如果設定為 「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 。
至 TargetServer SharePoint 伺服器,其中包含「sites/bi」網站集合以及一個共享文件庫。
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 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() --- 內部例外狀況堆疊追蹤的結尾 ---
另請參閱
RS.exe 工具程式 (SSRS)
將 Reporting Services 中的角色和任務與 SharePoint 群組及其權限進行比較