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

SQL Server 複寫架構原理與三大模式深度解析:快照、交易、合併複寫

     編輯:關於SqlServer

複寫拓撲模型:雙向複寫為例

兩台伺服器 A、B 互為發行者與訂閱者,形成雙向資料流。

三種複寫類型比較

類型運作機制適用場景缺陷與風險
快照複寫定期將發行端完整資料覆蓋訂閱端(先刪後插)資料量小、變動極低、需定期全量重置的參考資料高延遲、頻寬消耗大、不支援增量、易造成「踢皮球」循環
交易複寫以交易為單位,依序將 INSERT/UPDATE/DELETE 透過三個系統預存程序套用至訂閱端高頻 OLTP 異動同步、報表伺服器近即時更新雙向相同篩選條件易產生無限循環複寫(A→B→A...)
合併複寫初始快照後,雙端獨立異動,同步時合併衝突解決(依優先級/自定邏輯)行動/離線用戶、多站點獨立寫入、需衝突解決機制需額外蹤跡欄位(rowguid、generation),結構變更複雜、效能開銷大

關鍵注意事項

  1. 衝突偵測欄位: 合併複寫會在每張發行表自動加入 rowguid、generation 等隱藏欄位,開發時勿以 SELECT * 直接對應實體類別。
  2. 容錯機制: 預設 10 次重試失敗後代理程式停止,需人工重啟;建議配合監控告警自動化處理。
  3. 既有資料初始化: 發行表若已有資料,建立複寫時需手動同步(BCP/備份還原/快照),SQL Server 無自動化方案。
  4. 結構變更限制: 發行表結構變更需停用複寫、修改、重新產生快照,不可頻繁變動 DDL。

架構選型建議

  • 單向報表同步 → 交易複寫(低延遲、序列化保證)。
  • 雙向/多站點寫入 → 合併複寫(內建衝突解決)。
  • 靜態參考表定期全量更新 → 快照複寫(實作最簡單)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved