將報表伺服器資料庫移至其他電腦 (SSRS 原生模式)

您可以將安裝 SQL Server Database Engine 所使用報表伺服器資料庫移至不同電腦上的執行個體。 但是,您必須一起移動或複製 reportserverreportservertempdb 資料庫。 Reporting Services 安裝需要這兩個資料庫。 您必須依名稱將 reportservertempdb 資料庫關聯至您要移動的主 reportserver 資料庫。

適用於:Reporting Services 原生模式。

移動資料庫不會更改目前已針對報表伺服器項目所定義的排程作業。

  • 當您第一次重新啟動報表伺服器服務時,便會重新建立排程。

  • 系統會在新的資料庫執行個體上重新建立用來觸發排程的 SQL Server Agent 作業。 雖然您不需要將這些作業移至新的電腦,但是可能會想要刪除電腦上不再使用的作業。

  • 移動的資料庫會保留訂閱、快取報表以及快照集。 如果快照在移動資料庫之後未挑選重新整理的資料,請清除快照選項。 然後,選取 [套用] 以儲存變更、重新建立排程,然後再次選取 [套用] 以儲存變更。

  • 當您移動 reportservertempdb 資料庫時,系統會保留儲存在該資料庫中的暫存報表和使用者工作階段。

SQL Server 提供數種移動資料庫的方法,包括備份與還原、附加與中斷連結,以及複製。 並不是所有方法都適合用來將現有資料庫重新放置到新的伺服器執行個體上, 移動報表伺服器資料庫的最佳方法會因您的系統可用性需求而有所差異。 移動報表伺服器資料庫最簡單的方式就是附加與卸離, 但是,如果要採用這種方法,您必須在卸離資料庫時將報表伺服器設定為離線狀態。 如果您希望能將服務中斷的情況降到最少,備份與還原就是比較好的選擇,但是您必須執行 Transact-SQL 命令來執行這些作業。 不建議複製資料庫,特別是使用複製資料庫精靈的方式。 它不會保留資料庫中的使用權限設定。

重要

若現有的安裝只變更了重新放置報表伺服器資料庫的位置,建議您採取本文提供的步驟。 移轉整個 Reporting Services 安裝需要重新設定連線和重設加密金鑰。 例如,移動資料庫並變更使用資料庫的報表伺服器 Windows 服務身分識別時,需要此設定。

卸離及附加報表伺服器資料庫

如果您可以將報表伺服器設定為離線狀態,就可以卸離資料庫,並將資料庫移動到您要使用的 SQL Server 執行個體。 這種方式可以保留資料庫中的權限。 如果您要使用 SQL Server 資料庫,就必須將它移至另一個 SQL Server 執行個體。 移動資料庫之後,您必須重新設定報表伺服器與報表伺服器資料庫間的連接。 如果執行的是向外延伸部署,您必須重新設定部署中每個報表伺服器的報表伺服器資料庫連接。

請使用下列步驟來移動資料庫:

  1. 備份您想要移動之報表伺服器資料庫的加密金鑰。 您可以使用 Reporting Services 設定工具備份金鑰。

  2. 停止報表伺服器服務。 您可以使用 Reporting Services 組態工具停止服務。

  3. 啟動 SQL Server Management Studio,並對主控報表伺服器資料庫的 SQL Server 執行個體開啟連線。

  4. 以滑鼠右鍵按一下報表伺服器資料庫,指向 [工作],並選取 [卸離]。 針對報表伺服器暫存資料庫重複此步驟。

  5. 複製或移動 .mdf 和 .ldf 檔案到您要使用之 SQL Server 執行個體的 Data 資料夾。 因為移動的資料庫共有兩個,因此請確定您總共移動或複製四個檔案。

  6. 在 Management Studio 中,對將會主控報表伺服器資料庫的新 SQL Server 執行個體開啟連線。

  7. 以滑鼠右鍵按一下 [資料庫] 節點,然後選取 [附加]

  8. 選取 [新增],選取您要附加之報表伺服器資料庫的 .mdf 和 .ldf 檔案。 針對報表伺服器暫存資料庫重複此步驟。

  9. 附加資料庫之後,請確認報表伺服器資料庫和暫存資料庫中具有 RSExecRole 資料庫角色, 而且RSExecRole 必須具有選取、插入、更新、刪除和參考報表伺服器資料庫資料表的權限,以及執行預存程序的權限。 如需詳細資訊,請參閱 建立 RSExecRole

  10. 啟動 Reporting Services 組態工具,並對報表伺服器開啟連線。

  11. 在 [資料庫] 頁面上,選取新的 SQL Server 執行個體,然後選取 [連線]

  12. 選取您剛才移動的報表伺服器資料庫,然後選取 [套用]

  13. 在 [加密金鑰] 頁面上,選取 [還原]。 指定包含金鑰備份副本的檔案以及解除鎖定此檔案的密碼。

  14. 重新啟動報表伺服器服務。

備份及還原報表伺服器資料庫

如果無法將報表伺服器設定為離線狀態,您可以使用備份與還原來重新放置報表伺服器資料庫。 您必須使用 Transact-SQL 陳述式來進行備份和還原。 還原資料庫之後,您必須將報表伺服器設定為使用新伺服器執行個體上的資料庫。 如需詳細資訊,請參閱此文章結尾的指示。

使用 BACKUP 和 COPY_ONLY 備份報表伺服器資料庫

備份資料庫時,請設定 COPY_ONLY 引數。 請務必同時備份資料庫以及記錄檔。

-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServer  
   SET RECOVERY FULL  
  
-- If the ReportServerData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerData',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerData.bak'  
  
-- Create a logical backup device, ReportServerLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\BACKUP\ReportServerLog.bak'  
  
-- Back up the full ReportServer database.  
BACKUP DATABASE ReportServer  
   TO ReportServerData  
   WITH COPY_ONLY  
  
-- Back up the ReportServer log.  
BACKUP LOG ReportServer  
   TO ReportServerLog  
   WITH COPY_ONLY  
  
-- To permit log backups, before the full database backup, alter the database   
-- to use the full recovery model.  
USE master;  
GO  
ALTER DATABASE ReportServerTempdb  
   SET RECOVERY FULL  
  
-- If the ReportServerTempDBData device does not exist yet, create it.   
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBData.bak'  
  
-- Create a logical backup device, ReportServerTempDBLog.  
USE master  
GO  
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',   
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\BACKUP\ReportServerTempDBLog.bak'  
  
-- Back up the full ReportServerTempDB database.  
BACKUP DATABASE ReportServerTempDB  
   TO ReportServerTempDBData  
   WITH COPY_ONLY  
  
-- Back up the ReportServerTempDB log.  
BACKUP LOG ReportServerTempDB  
   TO ReportServerTempDBLog  
   WITH COPY_ONLY  

使用 RESTORE 和 MOVE 重新放置報表伺服器資料庫

還原資料庫時,請務必包含 MOVE 引數,如此才能指定路徑。 使用 NORECOVERY 引數來執行初始還原。 此引數令資料庫保持在 RESTORING 狀態,讓您有時間可以預覽記錄備份,判斷要還原哪一個資料庫。 最後一個步驟會使用 RESTORE 引數重複執行 RECOVERY 作業。

MOVE 引數會使用資料檔案的邏輯名稱。 若要找出該邏輯名稱,請執行下列陳述式:RESTORE FILELISTONLY FROM DISK='C:\ReportServerData.bak';

下列範例中包含 FILE 引數,因此您可以指定要還原之記錄檔的檔案位置。 若要找出該檔案的位置,請執行下列陳述式:RESTORE HEADERONLY FROM DISK='C:\ReportServerData.bak';

還原資料庫和記錄檔時,您應該個別執行每個 RESTORE 作業。

-- Restore the report server database and move to new instance folder   
RESTORE DATABASE ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore the report server log file to new instance folder   
RESTORE LOG ReportServer  
   FROM DISK='C:\ReportServerData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServer' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer.mdf',   
      MOVE 'ReportServer_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServer_Log.ldf';  
GO  
  
-- Restore and move the report server temporary database  
RESTORE DATABASE ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY,   
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Restore the temporary database log file to new instance folder   
RESTORE LOG ReportServerTempdb  
   FROM DISK='C:\ReportServerTempDBData.bak'  
   WITH NORECOVERY, FILE=2  
      MOVE 'ReportServerTempDB' TO   
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\ReportServerTempDB.mdf',   
      MOVE 'ReportServerTempDB_log' TO  
         'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\REportServerTempDB_Log.ldf';  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServer  
   WITH RECOVERY  
GO  
  
-- Perform final restore  
RESTORE DATABASE ReportServerTempDB  
   WITH RECOVERY  
GO  

如何設定報表伺服器資料庫連接

  1. 啟動 Reporting Services 組態管理員,並對報表伺服器開啟連線。

  2. 在 [資料庫] 頁面上,選取 [變更資料庫]。 選擇下一步

  3. 選取 [選擇現有報表伺服器資料庫]。 選擇下一步

  4. 選取現在主控報表伺服器資料庫的 SQL Server,然後選取 [測試連線]。 選取 [下一步]。

  5. 在 [資料庫名稱] 中,選取您想要使用的報表伺服器資料庫。 選取 [下一步]。

  6. 在 [認證] 中,指定報表伺服器將用來連接至報表伺服器資料庫的認證。 選取 [下一步]。

  7. 選取 [下一步],然後選取 [完成]。

注意

Reporting Services 安裝需要包含 RSExecRole 角色的 SQL Server 資料庫引擎執行個體。 當您透過 Reporting Services 組態工具設定報表伺服器資料庫連線時,會產生角色建立、登入註冊以及角色指派等動作。 如果您使用其他方法 (尤其是使用 rsconfig.exe 命令提示字元公用程式) 來設定連接,報表伺服器將不會處於工作狀態。 您可能必須撰寫 WMI 程式碼,才能讓報表伺服器可供使用。 如需詳細資訊,請參閱 存取 Reporting Services WMI 提供者

建立 RSExecRole
啟動與停止報表伺服器服務
設定報表伺服器資料庫連接
設定自動執行帳戶
報表伺服器組態管理員
rsconfig 公用程式
設定和管理加密金鑰
報表伺服器資料庫

更多問題嗎? 請嘗試詢問 Reporting Services 論壇