SQL Server 複寫技術由三大角色、兩種傳遞模式、三種複寫類型構成,是實現資料分發、異地備份、報表卸載的經典方案。
核心角色
- 發布者:維護源資料庫,偵測變更發送至散發者。
- 散發者:含散發資料庫,儲存中繼資料、歷史與交易;對快照/交易複寫關鍵,合併複寫角色較輕。
- 訂閱者:持有資料副本,接收變更;視選項可允許更新回寫。
傳遞模式
- 推模式:散發代理在散發者端執行,主動推送。
- 拉模式:散發代理在訂閱者端執行,主動拉取;減輕散發者壓力,適合大量訂閱者。
複寫類型
- 快照複寫:定期產生完整資料快照(含結構)傳給訂閱者。適合資料量小、變更頻率低、允許較高延遲場景。是交易複寫的初始化基礎。
- 交易複寫:
① 快照初始化訂閱庫;
② 發布端寫入交易記錄;
③ 記錄讀取代理讀取記錄存入散發庫;
④ 散發代理推送至訂閱端。
低延遲、高一致性,適合 OLTP 異地同步。
- 合併複寫:允許發布端與多訂閱端獨立更新,合併代理解決衝突(優先順序、自定義解決器)。適合行動離線、分支機構雙向同步。
關鍵物件
- 發行集:一組邏輯相關的發行項(表、檢視、預存程序、UDF 的全部或篩選後資料)。訂閱以發行集為單位。
- 發行項:發行集的最小單元,可垂直/水平篩選。
五大代理程式
- 快照代理、記錄讀取代理、散發代理、合併代理、佇列讀取代理(支援佇列更新訂閱)。
選型建議: 單向同步、低延遲 → 交易複寫;雙向/離線 → 合併複寫;定期全量刷新 → 快照複寫。生產環境務必監控代理狀態、延遲指標與衝突解決記錄。