SQL Server 2000 Reporting Services (RS) 遷移核心在於加密金鑰的轉移。RS 使用對稱金鑰加密資料來源認證、訂閱資訊等敏感資料,遷移時必須將金鑰從舊伺服器匯出,導入新伺服器,否則新伺服器無法解密舊報表資料庫內容。本文記錄標準四步驟流程與關鍵注意事項。
cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn"
RSKeyMgmt.exe -e -f "D:\RS_Backup\RS_Key.snk" -p "StrongP@ssw0rd"
RSConfig.exe -c -s "TARGET_SQL_SERVER" -d "ReportServer" -a Windows -u "DOMAIN\RSServiceAccount" -p "ServicePwd"
執行成功後,RS Windows 服務會自動重啟,並初始化資料庫結構 (若不存在)。
將步驟 1 產生的 `RS_Key.snk` 複製到目標伺服器 (如 `D:\RS_Restore\`),執行:
RSKeyMgmt.exe -a -f "D:\RS_Restore\RS_Key.snk" -p "StrongP@ssw0rd"
警告: 匯入成功後,來源報表伺服器將無法繼續使用該資料庫 (金鑰已遷移,舊伺服器無法解密)。若需雙機並行,必須建立資料庫副本並分別匯入金鑰副本。
net stop "ReportServer"
net start "ReportServer"
瀏覽 `https://
| 錯誤現象 | 根因 | 解決 |
|---|---|---|
| RSConfig 回報「無法連接資料庫」 | SQL Server 遠端連線未啟用、防火牆阻擋 1433、具名實例 Browser 服務未啟動 | 啟用 TCP/IP、開放防火牆、啟動 SQL Browser |
| RSKeyMgmt -a 回報「金鑰檔損壞/密碼錯誤」 | 檔案傳輸損壞、密碼大小寫錯誤、版本不匹配 (如 2000 金鑰匯入 2005) | 二進位模式傳輸、核對密碼、確認版本一致 |
| 遷移後報表顯示「資料來源認證無效」 | 金鑰未正確匯入、或資料庫為舊版本備份還原但金鑰未同步 | 重新執行步驟 3、檢查事件檢視器 RS 錯誤日誌 |
| 網頁顯示「存取被拒」 | RS 虛擬目錄認證設定錯誤 (Anonymous vs Integrated) | IIS 設定 RS 虛擬目錄為整合式驗證、確認應用程式池身分 |
$srcKey = "D:\RS_Backup\RS_Key.snk"
$pwd = "StrongP@ssw0rd"
$targetSql = "TARGET_SQL"
$dbName = "ReportServer"
$svcAccount = "DOMAIN\RSService"
$svcPwd = "SvcPwd"
# 1. 匯出 (在來源執行)
& "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\RSKeyMgmt.exe" -e -f $srcKey -p $pwd
# 2. 設定目標資料庫連線 (在目標執行)
& "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\RSConfig.exe" -c -s $targetSql -d $dbName -a Windows -u $svcAccount -p $svcPwd
# 3. 匯入金鑰 (在目標執行,需先複製 .snk)
& "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\RSKeyMgmt.exe" -a -f $srcKey -p $pwd
# 4. 重啟服務
Restart-Service ReportServer
RS2000 遷移看似繁瑣,實則邏輯清晰:金鑰隨資料庫走,服務指向新資料庫,金鑰導入新服務。嚴守版本一致、金鑰檔案保管、服務帳號權限三大鐵律,遷移零風險。