SQL Server 2000 企業版/開發版內建日誌傳送,提供資料庫級災難復原。本文詳細記錄角色變更 (計畫性切換)、角色互換 (雙向重建)、監控伺服器部署最佳實踐,含六步驟標準流程與預存程序參數完整說明。
bcp 匯出 master..syslogins 至檔案 (供步驟 5 解析 SID)
EXEC msdb.dbo.sp_change_primary_role
@db_name = 'Pubscopy',
@backup_log = 1, -- 備份尾部記錄
@terminate = 1, -- 終止現有連線
@final_state = 3, -- 3=ReadOnly/Standby (可接受記錄)
@access_level = 1; -- 1=Multiple Users
執行後:主要資料庫變為唯讀、移除日誌傳送排程、產生最終記錄備份。
EXEC msdb.dbo.sp_change_secondary_role
@db_name = 'Pubscopy',
@do_load = 1, -- 套用所有剩餘記錄備份
@force_load = 1, -- 強制套用 (對應 sqlmaint Forceload)
@final_state = 1, -- 1=Recovered (線上可讀寫)
@access_level = 1,
@terminate = 1,
@keep_replication = 0,
@stopat = NULL; -- NULL=套用至最新
執行後:次要資料庫變為線上主要、啟用記錄備份作業 (準備反向傳送)。
EXEC msdb.dbo.sp_change_monitor_role
@primary_server = 'OLD_PRIMARY',
@secondary_server = 'OLD_SECONDARY',
@database = 'Pubscopy',
@new_source = 'OLD_SECONDARY'; -- 新主要伺服器名稱
更新監控資料表 log_shipping_primaries、log_shipping_secondaries 參考位置。
EXEC sp_resolve_logins
@dest_db = 'Pubscopy',
@dest_path = 'D:\', -- 步驟 1 匯出 syslogins 檔案所在目錄
@filename = 'syslogins.dat';
注意:必須在 master 資料庫執行 (非使用者資料庫),因預存程序參考 syslogins 系統檢視。
USE Pubscopy;
EXEC sp_change_users_login 'Update_One', 'UserName', 'LoginName';
-- 逐一處理孤立使用者
角色變更僅完成單向切換。完整互換需:
實務發現:原維護計劃的記錄備份作業常失敗,建議**完全重建**而非修改現有計劃。
| 部署方式 | 優點 | 缺點 | 建議 |
|---|---|---|---|
| 獨立第三台 (最佳) | 主要/次要掛掉仍能發警示、可監控多組 | 成本較高 | **生產環境標準** |
| 次要伺服器 | 省成本、主要掛掉次要仍可報警 | 次要掛掉失去監控 | 僅兩台伺服器時次佳選 |
| 主要伺服器 | 最省 | 主要掛掉監控失效、無法偵測自身問題 | **強烈不建議** |
異地災備架構:監控伺服器置於第三地點,避免單一災害同時影響主要、次要、監控。
sp_resolve_logins + sp_change_users_login