您可以將安裝 SQL Server Database Engine 中使用的報表伺服器資料庫移至位於不同電腦上的實例。 reportserver 和 reportservertempdb 資料庫都必須一起移動或複製。 Reporting Services 安裝需要這兩個資料庫;reportservertempdb 資料庫必須依名稱與您移動的主要 reportserver 資料庫相關。
適用於: Reporting Services 原生模式。
移動資料庫不會影響目前針對報表伺服器項目定義的排程作業。
排程會在您第一次重新啟動報表伺服器服務時重新建立。
用來觸發排程的 SQL Server Agent 作業將會在新資料庫實例上重新建立。 您不需要將作業移至新的計算機,但您可能想要刪除不再使用之電腦上的作業。
訂閱、快取報表和快照在移動的資料庫中會被保留。 如果快照在資料庫移動後未擷取更新的數據,請清除報表管理器中的快照選項,按一下 [套用] 以儲存變更,重新建立排程,然後再按一下 [套用] 以儲存變更。
當您移動該資料庫時,會保存儲存在 reportservertempdb 中的暫存報表和用戶會話數據。
SQL Server 提供數種方法來移動資料庫,包括備份和還原、附加和卸離,以及複製。 並非所有方法都適合將現有的資料庫重新放置到新的伺服器實例。 您應該用來移動報表伺服器資料庫的方法會根據您的系統可用性需求而有所不同。 移動報表伺服器資料庫最簡單的方式是附加和卸離它們。 不過,此方法會要求您在卸離資料庫時讓報表伺服器脫機。 如果您想要將服務中斷降到最低,但您必須執行 Transact-SQL 命令來執行作業,備份和還原是較佳的選擇。 不建議複製資料庫(特別是使用複製資料庫精靈):它不會保留資料庫中的許可權設定。
這很重要
當您唯一要對現有安裝進行的變更是重新布置報表伺服器資料庫時,建議採用本主題中提供的步驟。 移轉整個 Reporting Services 安裝(包含移動資料庫並且變更使用該資料庫的報表伺服器 Windows 服務身分識別)需要重新配置連接並重設加密金鑰。
卸離和附加報表伺服器資料庫
若能將報表伺服器設為離線模式,您可以中斷連結資料庫,將其移至您想要使用的 SQL Server 執行個體。 此方法會保留資料庫中的許可權。 如果您使用 SQL Server 2014 資料庫,則必須將其移至另一個 SQL Server 2014 實例。 移動資料庫之後,您必須重新設定報表伺服器與報表伺服器資料庫的連接。 如果您正在執行向外延展部署,則必須重新設定部署中每個報表伺服器的報表伺服器資料庫連接。
使用下列步驟來移動資料庫:
備份您要移動之報表伺服器資料庫的加密金鑰。 您可以使用 Reporting Services 組態工具備份密鑰。
停止報表伺服器服務。 您可以使用 Reporting Services 組態工具來停止服務。
啟動 SQL Server Management Studio,並開啟裝載報表伺服器資料庫的 SQL Server 實例連線。
以滑鼠右鍵點擊報表伺服器資料庫,指向 [任務],然後點擊 [中斷連結]。 針對報表伺服器暫存資料庫重複此步驟。
複製或移動.mdf和 .ldf 檔案至您想要使用的 SQL Server 實例的 Data 資料夾。 因為您要移動兩個資料庫,請確定您移動或複製這四個檔案。
在 Management Studio 中,開啟將裝載報表伺服器資料庫之新 SQL Server 實例的連接。
以滑鼠右鍵按兩下 [資料庫] 節點,然後按下 [ 附加]。
按兩下 [新增 ] 以選取您要附加的報表伺服器資料庫.mdf和 .ldf 檔案。 針對報表伺服器暫存資料庫重複此步驟。
附加資料庫之後,請確認
RSExecRole是報表伺服器資料庫和暫存資料庫中的資料庫角色。RSExecRole必須在報表伺服器資料庫數據表上選取、插入、更新、刪除和參考許可權,以及對預存程式執行許可權。 如需詳細資訊,請參閱 建立 RSExecRole。啟動 Reporting Services 組態工具,並開啟與報表伺服器的連線。
在 [資料庫] 頁面上,選取新的 SQL Server 實例,然後按兩下 [ 連接]。
選取您剛才移動的報表伺服器資料庫,然後按兩下 [ 套用]。
在 [加密金鑰] 頁面上,按兩下 [還原]。 指定包含金鑰備份複本和密碼的檔案,以解除鎖定檔案。
重新啟動報表伺服器服務。
備份和還原報表伺服器資料庫
如果您無法讓報表伺服器離線,您可以使用備份和還原來重新放置報表伺服器資料庫。 您必須使用 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\MSSQL12.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\MSSQL12.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 自變數來執行初始還原;這會讓資料庫保持 RESTOREING 狀態,讓您有時間檢閱記錄備份,以判斷要還原哪一個備份。 最後一個步驟會使用 RECOVERY 自變數重複 RESTORE 作業。
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
如何設定報表伺服器資料庫連接
啟動 Reporting Services 組態管理員,並開啟與報表伺服器的連線。
在 [資料庫] 頁面上,按兩下 [ 變更資料庫]。 按 [下一步]。
按一下 選擇現有的報表伺服器資料庫。 按 [下一步]。
選取現在裝載報表伺服器資料庫的 SQL Server,然後按兩下 [ 測試連線]。 按 [下一步]。
在 [資料庫名稱] 中,選取您想要使用的報表伺服器資料庫。 按 [下一步]。
在 [認證] 中,指定報表伺服器用來連接報表伺服器資料庫的憑證。 按 [下一步]。
按 [下一步] ,然後按一下 [完成] 。
備註
Reporting Services 安裝需要 SQL Server 資料庫引擎實例包含 RSExecRole 角色。 當您透過 Reporting Services 組態工具設定報表伺服器資料庫連接時,會發生角色建立、登入註冊和角色指派。 如果您使用替代方法(特別是,如果您使用 rsconfig.exe 命令提示字元公用程式)來設定連線,報表伺服器將不會處於工作狀態。 您可能必須撰寫 WMI 程式代碼,才能讓報表伺服器可供使用。 如需詳細資訊,請參閱 存取 Reporting Services WMI 提供程式。
另請參閱
建立 RSExecRole
啟動和停止報表伺服器服務
設定報表伺服器資料庫連線 (SSRS 組態管理員)
設定非監管執行帳戶 (SSRS 組態管理員)
Reporting Services 組態管理員 (原生模式)
rsconfig 公用程序(SSRS)
設定與管理金鑰 (SSRS 組態管理員)
報表伺服器資料庫 (SSRS 原生模式)