首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2000 記錄傳送角色切換實戰(一):六大核心步驟、登入遷移與主要/次要伺服器降級升級

     編輯:關於SqlServer

角色變更與角色互換概念

當主要伺服器停擺(計畫維護或意外故障),可將次要伺服器提升為新主要伺服器。此操作稱「角色變更」;若舊主要修復後重建雙向傳送,稱「角色互換」。次要伺服器需處於 非復原狀態 才能持續套用記錄檔。

六大基本步驟總覽

  1. 轉移與匯出登入帳號
  2. 降級主要伺服器
  3. 升級次要伺服器
  4. 通知監控伺服器角色已變更
  5. 在次要伺服器解析登入帳號
  6. 連結資料庫存取與權限

步驟 1:轉移與匯出登入帳號

建立 DTS 封裝執行 Transfer Logins Task(僅限 SQL Server 2000 DTS 設計師),透過 dtsrun.exe 設定 SQL Agent 作業定期執行(如每晚一次)。

關鍵補充:DTS 任務不解析 SID,需額外建立兩階段 Agent 作業:

  1. 使用 bcp 原始模式匯出 syslogins 資料表至檔案
  2. 將檔案複製至次要伺服器,供步驟 5 的 sp_resolve_logins 使用

步驟 2:降級主要伺服器

執行 sp_change_primary_role 移除原有記錄傳送功能,將資料庫從讀寫模式改為唯讀備援模式:

USE master
GO
EXEC msdb.dbo.sp_change_primary_role
    @db_name = 'Pubscopy',
    @backup_log = 1,      -- 備份最後一筆交易記錄
    @terminate = 1,       -- 終止所有使用者連線
    @final_state = 3,     -- 設為備援狀態
    @access_level = 1     -- 多使用者存取層級

回傳碼指示 BACKUP LOG 是否成功。

步驟 3:升級次要伺服器

確認無使用者存取後,執行 sp_change_secondary_role 將次要資料庫提升為復原狀態:

USE master
GO
EXEC msdb.dbo.sp_change_secondary_role
    @db_name = 'Pubscopy',
    @do_load = 1,          -- 備份並載入所有剩餘記錄檔
    @force_load = 1,       -- 指定 FORCELOAD 選項
    @final_state = 1,      -- 設為復原模式(線上)
    @access_level = 1,
    @terminate = 1,        -- 中斷所有連線 (ALTER DATABASE ... IMMEDIATE)
    @keep_replication = 0, -- 保留複寫設定
    @stopat = null

注意: 若 Enterprise Manager 仍有開啟連線,ALTER DATABASE 會失敗,需手動確認所有連線已中斷。升級後新主要伺服器將產生交易記錄備份檔案,供後續重建傳送關係使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved