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

SQL Server 2005 資料庫複寫完整架構解析:三大模式、四大代理程式、部署實戰

     編輯:SQL Server 2005

複寫核心角色

  • 發行者:來源資料庫,決定發行何種物件 (發行項/文章)。
  • 散發者:中繼站,儲存散發資料庫、執行代理程式、傳遞變更。
  • 訂閱者:目的端,接收並套用變更,可再作為其他訂閱者的發行者。

單一伺服器可同時扮演多角色,生產環境建議**散發者獨立部署**降低發行者負載。

訂閱類型

  • 推播訂閱:散發者主動推送變更至訂閱者,低延遲、高一致性要求。
  • 提取訂閱:訂閱者定期輪詢散發者拉取變更,適合行動/離線/頻寬受限環境。

四大代理程式職責

代理程式執行位置支援複寫類型核心職責
快照集代理程式散發者所有產生結構描述/資料快照檔案、記錄同步資訊
記錄讀取代理程式散發者交易式讀取發行者記錄檔、標記待複寫交易移至散發資料庫
散發代理程式散發者(推播) / 訂閱者(提取)快照/交易式套用快照、將散發資料庫交易遞送至訂閱者
合併代理程式散發者(推播) / 訂閱者(提取)合併式套用快照、雙向同步增量變更、衝突偵測解決
佇列讀取代理程式散發者交易式(佇列更新)將訂閱者佇列更新回寫發行者

三大複寫類型深度比較

類型機制延遲適用場景限制
快照式定時全量覆寫高 (視資料量)資料量小、變更少、固定排程大量資料頻寬/時間成本高
交易式記錄檔增量遞送低 (秒級)高一致性、近即時、單向寫入需穩定網路、訂閱者通常唯讀
合併式雙向增量 + 觸發器/GUID 追蹤視同步頻率行動/離線/雙向寫入、衝突解決每張表需 PK + ROWGUIDCOL、觸發器開銷

部署實戰:快照式複寫 (發行者=散發者=Server1,訂閱者=Server2)

  1. Server1:SSMS →「複寫」→「本地發行集」→「新增發行集」→ 選資料庫 DB1 → 選「快照式發行集」→ 指定快照資料夾 → 設定代理程式安全性 (Windows 帳號) → 完成。
  2. Server2:SSMS →「複寫」→「本地訂閱」→「新增訂閱」→ 選發行者 Server1 → 選「推播訂閱」→ 指定目標資料庫 → 設定散發代理程式安全性 → 同步排程「持續執行」或定時。
  3. 驗證:Server1 DB1 插入資料 → 秒級出現在 Server2 對應資料表。

常見坑點與解決

  • 代理程式服務未啟動:SQL Server Agent (代理程式) 必須在散發者/訂閱者啟動。
  • 電腦名稱不一致 (Ghost 系統):執行同步腳本修正 @@SERVERNAME:
    IF SERVERPROPERTY('ServerName') <> @@SERVERNAME
    BEGIN
        DECLARE @s SYSNAME = @@SERVERNAME;
        EXEC sp_dropserver @server = @s;
        SET @s = CAST(SERVERPROPERTY('ServerName') AS SYSNAME);
        EXEC sp_addserver @server = @s, @local = 'LOCAL';
    END
    然後重啟 SQL Server 服務與 Agent 服務。
  • 防火牆阻擋:散發者/發行者/訂閱者互通 TCP 1433 (或自訂 Port)。
  • 合併式衝突:預設發行者優先,可自訂衝突解決器 (COM 元件)。

效能調優建議

  • 散發資料庫置於獨立磁碟/陣列,啟用瞬間檔案初始化。
  • 交易式:調整 -PollingInterval、-CommitBatchSize、-CommitBatchThreshold 參數平衡延遲與吞吐。
  • 合併式:適當調整同步排程、啟用壓縮快照、監控衝突率。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved