將報表伺服器資料庫移至另一部電腦 (SSRS 原生模式)
適用於: SQL Server Reporting Services (SSRS) 原生模式
您可以將安裝 SQL Server 時所使用的報表伺服器資料庫移至位於不同電腦上的實例。
SQL Server 提供數種方法來移動資料庫:
- 卸離和附加。 此方法提供行動報表伺服器資料庫的最簡單方式,但您必須在卸離資料庫時讓報表伺服器離線。
- 備份和復原。 這種方法可將服務中斷降至最低,但您必須執行 Transact-SQL (T-SQL) 命令來執行作業。
- 複製。 如果您使用複製資料庫精靈,不建議複製資料庫。 它不會保留資料庫中的使用權限設定。
本文說明如何使用卸離和附加方法,以及備份和還原方法。
必要條件
- 設定的原生模式報表伺服器,用於安裝 SQL Server。
- 不同電腦上的 SQL Server 實例。
準備移動資料庫
當您移動報表伺服器資料庫時,請記住下列幾點:
- 您必須將 reportserver 和 reportservertempdb 資料庫一起移動或複製。 SSRS 安裝需要這兩個資料庫。
- 暫存資料庫的名稱必須與主報表伺服器資料庫的名稱相同,但具有 tempdb 後綴。
- 移動資料庫不會更改目前已針對報表伺服器項目所定義的排程作業。
- 排程會在您第一次重新啟動報表伺服器服務時重新建立。
- 用來觸發排程的 SQL Server 代理程式作業會在新的資料庫實例上重新建立。 您不需要將作業移至新計算機,但您可能想要刪除目前電腦上不再使用的作業。
- 移動的資料庫會保留訂閱、快取報表以及快照集。 如果在移動資料庫之後,快照集未挑選重新整理的數據,請清除快照集選項。 然後選取 [ 套用 ] 以儲存變更、重新建立排程,然後選取 [ 再次套用 ] 以儲存變更。
- 當您移動該資料庫時,儲存在暫存資料庫中的暫存報表和用戶會話數據會保存。
重要
當您重新配置報表伺服器資料庫是唯一對現有安裝所做的變更時,建議使用本文中的步驟。 當您移轉整個 SSRS 安裝時,您必須重新設定連線並重設加密金鑰。 例如,當您移動資料庫並變更使用資料庫的報表伺服器 Windows 服務身分識別時,需要這些步驟。
卸離及附加報表伺服器資料庫
如果可以將報表伺服器離線,您可以使用卸離和附加方法。 具體而言,您會將資料庫與目前的 SQL Server 實例中斷連結。 然後,您可以移動它們,並將其附加至您想要使用的實例。 這種方式可以保留資料庫中的權限。
移動資料庫之後,您必須重新設定報表伺服器與報表伺服器資料庫間的連接。 如果您執行向外延展部署,您必須重新設定部署中每個報表伺服器的報表伺服器資料庫連接。
若要使用卸離和附加方法,請執行下列各節中的步驟。
中斷連結資料庫
開啟報表伺服器組態管理員。
使用 [加密金鑰] 頁面來備份您要移動之報表伺服器資料庫的加密金鑰。
使用 [報表伺服器狀態] 頁面來停止報表伺服器服務。
開啟 SQL Server Management Studio,並連線到裝載報表伺服器資料庫的 SQL Server 實例。
以滑鼠右鍵按兩下報表伺服器資料庫,選取 [ 工作],然後選取 [ 卸離]。 針對報表伺服器暫存資料庫重複此步驟。
附加資料庫
尋找目前 SQL Server 實例的.mdf和 .ldf 檔案。 它們位於 [數據] 資料夾中。
複製或移動.mdf和 .ldf 檔案至您想要使用的 SQL Server 實例的 Data 資料夾。 因為移動的資料庫共有兩個,因此請確定您總共移動或複製四個檔案。
在 SQL Server Management Studio 中,開啟裝載報表伺服器資料庫之新 SQL Server 實例的連接。
以滑鼠右鍵按兩下 [ 資料庫] 節點,然後選取 [ 附加]。
選取 [新增],選取您要附加之報表伺服器資料庫的 .mdf 和 .ldf 檔案。 針對報表伺服器暫存資料庫重複此步驟。
完成設定
確認您附加的資料庫具有 RSExecRole 角色。 您必須設定 RSExecRole ,以選取、插入、更新、刪除和報表伺服器資料庫數據表的參考許可權,以及執行預存程式的許可權。 如需詳細資訊,請參閱 建立 RSExecRole。
啟動報表伺服器組態管理員,並開啟與報表伺服器的連線。
在 [資料庫] 頁面上,選取新的 SQL Server 執行個體,然後選取 [連線]。
選取您剛移動的報表伺服器資料庫,然後選取 [ 套用]。
在 [加密金鑰] 頁面上,選取 [還原]。 指定包含金鑰備份副本的檔案以及解除鎖定此檔案的密碼。
重新啟動報表伺服器服務。
備份及還原報表伺服器資料庫
如果您無法讓報表伺服器離線,您可以使用備份和還原方法來重新放置報表伺服器資料庫。 使用此方法時,您必須使用 T-SQL 語句。
下列各節中的步驟說明如何備份和還原資料庫,以及如何設定報表伺服器以使用新伺服器實例上的資料庫。
使用 BACKUP 和 COPY_ONLY 備份報表伺服器資料庫
若要備份資料庫,請開啟 SQL Server Management Studio,然後在查詢視窗中執行下列語句。 這些語句會使用 COPY_ONLY
自變數,並備份資料庫和記錄檔。
執行這些語句之前,請將 <path-to-backup-folder> 佔位元取代為您目前實例的Backup資料夾路徑,例如 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP
。
-- To permit log backups, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServer
SET RECOVERY FULL
-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServer
TO DISK = '<path-to-backup-folder>\ReportServerExtraBackup.bak'
GO
-- If the ReportServerData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerData',
'<path-to-backup-folder>\ReportServerData.bak'
-- Create a logical backup device, ReportServerLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerLog',
'<path-to-backup-folder>\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, alter the database to use the full recovery model
-- before you run the full database backup.
USE master;
GO
ALTER DATABASE ReportServerTempdb
SET RECOVERY FULL
-- First back up the database without using the COPY_ONLY argument.
-- This step is needed after you change the recovery model to full.
-- It prevents a 4214 error from occurring.
USE master;
GO
BACKUP DATABASE ReportServerTempdb
TO DISK = '<path-to-backup-folder>\ReportServerTempdbExtraBackup.bak'
GO
-- If the ReportServerTempDBData device doesn't exist yet, create it.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBData',
'<path-to-backup-folder>\ReportServerTempDBData.bak'
-- Create a logical backup device, ReportServerTempDBLog.
USE master
GO
EXEC sp_addumpdevice 'disk', 'ReportServerTempDBLog',
'<path-to-backup-folder>\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 重新放置報表伺服器資料庫
若要還原資料庫,請開啟 SQL Server Management Studio,然後在查詢視窗中執行下列語句。
在這些語句中:
RESTORE
資料庫和記錄檔的作業會個別執行。自
MOVE
變數可讓您指定路徑。 這個自變數會使用數據檔的邏輯名稱。 若要尋找邏輯名稱,請執行下列語句。 首先,將 <path-to-report-server-database-backup-file> 佔位元取代為報表伺服器資料庫備份文件的路徑,例如C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
。RESTORE FILELISTONLY FROM DISK='<path-to-report-server-database-backup-file>';
您可以在輸出的 LogicalName 資料列中找到邏輯名稱。
您可以執行類似的語句來尋找暫存資料庫的邏輯名稱:
RESTORE FILELISTONLY FROM DISK='<path-to-temporary-database-backup-file>';
自
FILE
變數可讓您指定要還原之記錄檔的檔案位置。 若要尋找檔案位置,請執行下列語句。 首先,將 <path-to-report-server-database-backup-file> 佔位元取代為報表伺服器資料庫備份文件的路徑,例如C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\ReportServerData.bak
。RESTORE HEADERONLY FROM DISK='<path-to-report-server-database-backup-file>';
您可以在輸出的 [位置] 資料列中找到檔案位置。
您可以執行類似的語句來尋找暫存資料庫的檔案位置:
RESTORE HEADERONLY FROM DISK='<path-to-temporary-database-backup-file>';
自
NORECOVERY
變數會執行初始還原。 這個自變數會讓資料庫保持狀態RESTORING
,讓您有時間檢閱記錄備份,以判斷要還原的記錄備份。最後一個步驟會使用
RESTORE
引數重複執行RECOVERY
作業。
執行這些語句之前,請先將下列佔位元取代為適當的值:
預留位置 | 描述: | 範例 |
---|---|---|
<path-to-backup-folder> | 目前實例之 Backup 資料夾的路徑 | C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\BACKUP |
<path-to-new-data-folder> | 新實例之 Data 資料夾的路徑 | C:\Program Files\Microsoft SQL Server\MSSQL16.NEWINSTANCE\MSSQL\DATA |
<report-server-database-logical-name> | 報表伺服器資料庫的邏輯名稱 | ReportServer |
<report-server-database-log-logical-name> | 報表伺服器資料庫記錄的邏輯名稱 | ReportServer_log |
<report-server-database-log-file-position> | 報表伺服器資料庫記錄檔的檔案位置 | 2 |
<temporary-database-logical-name> | 暫存資料庫的邏輯名稱 | ReportServerTempDB |
<temporary-database-log-logical-name> | 暫存資料庫記錄的邏輯名稱 | ReportServerTempDB_log |
<temporary-database-log-file-position> | 暫存資料庫記錄檔的檔案位置 | 2 |
-- Restore the report server database and move it to the new instance folder.
RESTORE DATABASE ReportServer
FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
WITH NORECOVERY,
MOVE '<report-server-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServer.mdf',
MOVE '<report-server-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServer_Log.ldf';
GO
-- Restore the report server log file to the new instance folder.
RESTORE LOG ReportServer
FROM DISK='<path-to-backup-folder>\ReportServerData.bak'
WITH NORECOVERY, FILE=<report-server-database-log-file-position>,
MOVE '<report-server-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServer.mdf',
MOVE '<report-server-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServer_Log.ldf';
GO
-- Restore and move the report server temporary database.
RESTORE DATABASE ReportServerTempdb
FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
WITH NORECOVERY,
MOVE '<temporary-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB.mdf',
MOVE '<temporary-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO
-- Restore the temporary database log file to the new instance folder.
RESTORE LOG ReportServerTempdb
FROM DISK='<path-to-backup-folder>\ReportServerTempDBData.bak'
WITH NORECOVERY, FILE=<temporary-database-log-file-position>,
MOVE '<temporary-database-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB.mdf',
MOVE '<temporary-database-log-logical-name>' TO
'<path-to-new-data-folder>\ReportServerTempDB_Log.ldf';
GO
-- Perform the final restore operation on the report database.
RESTORE DATABASE ReportServer
WITH RECOVERY
GO
-- Perform the final restore operation on the temporary database.
RESTORE DATABASE ReportServerTempDB
WITH RECOVERY
GO
設定報表伺服器資料庫連線
啟動報表伺服器組態管理員,並開啟與報表伺服器的連線。
在 [資料庫] 頁面上,選取 [變更資料庫] 。
在 [變更資料庫] 頁面上,選取 [ 選擇現有的報表伺服器資料庫],然後選取 [ 下一步]。
針對 [ 伺服器名稱],輸入現在裝載報表伺服器資料庫的 SQL Server 實例,然後選取 [ 測試連線]。
測試連線之後,請選取 [ 下一步]。
針對 [報表伺服器資料庫],選取您想要使用的報表伺服器資料庫,然後選取 [ 下一步]。
在 [認證] 下,指定報表伺服器用來連接到報表伺服器資料庫的認證,然後選取 [下一步]。
選取 [下一步],然後選取 [完成]。
注意
在 SSRS 安裝中,SQL Server 資料庫引擎 實例必須包含 RSExecRole 角色。 當您使用報表伺服器組態管理員來設定報表伺服器資料庫連接時,會發生角色建立、登入註冊和角色指派。 如果您使用替代方法,例如rsconfig.exe命令提示字元公用程式,報表伺服器就不會處於工作狀態。 在此情況下,您可能必須撰寫 Windows Management Instrumentation (WMI) 程式代碼,讓報表伺服器可供使用。 如需詳細資訊,請參閱 存取 Reporting Services WMI 提供者。