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

SQL Server 合併複寫架構與執行流程深度解析

     編輯:關於SqlServer

合併複寫核心特性

  • 允許發行者與訂閱者**雙向修改**資料,無需持續連線。
  • 節點間最終連線時,合併各節點變更,依衝突解決規則決定最終結果。
  • **不維護交易一致性**,最終結果集包含多節點修改合併。
  • 適用場景:行動銷售人員離線開單、分散式辦公環境。

發行集建立時的系統物件變更

  1. 行識別欄:每個發行資料表新增 rowguid(ROWGUIDCOL 屬性)唯一識別每列。
  2. 追蹤觸發程序:擷取 INSERT/UPDATE/DELETE 變更,寫入系統追蹤表。
  3. 系統追蹤表:MSmerge_contents、MSmerge_tombstone 記錄變更供合併代理讀取。
    合併複寫系統物件圖解

執行步驟

  1. 快照代理:建立初始同步集合(結構+資料),記錄同步資訊於散發資料庫,合併代理分發快照完成訂閱初始化。
  2. 變更追蹤:節點修改資料觸發程序將該列 generation 設為 0。
  3. 合併代理執行:收集 generation=0 的列,依代數值合併(新值覆蓋舊值)。
  4. 衝突偵測與解決:目標端合併代理依預設/自訂規則解決衝突(優先順序、自訂預存程序、COM 元件)。

代理角色

  • 快照代理:僅初始化階段執行。
  • 合併代理:定期/排程執行,協調多節點同步與衝突處理。

小結

合併複寫以行識別欄、觸發程序追蹤、代數衝突解決機制,實現離線雙向同步。理解其架構有助於設計合適的衝突解決策略與監控方案。

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