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

SQL Server 2000 複寫進階選項:立即更新訂閱者架構深度解析

     編輯:關於SqlServer

複寫選項規劃的重要性

SQL Server 2000 提供立即更新訂閱者、佇列更新、佇列更新做熱備援的立即更新等選項,允許在訂閱端修改資料並回寫發行端。這類雙向複寫大幅增加設定與管理複雜度,必須深入理解底層機制。

立即更新訂閱者運作原理

  • 適用於快照式與交易式複寫(合併式複寫不支援)。
  • 訂閱者修改資料時,透過兩階段認可 (2PC) 立即同步到發行者,確保發行者與該訂閱者交易一致性。
  • 其他訂閱者則透過散發代理程式非同步接收變更,不參與 2PC,降低複雜度與失敗機率。

核心支援元件

  1. 觸發程序(訂閱端):攔截 DML,透過 RPC 呼叫發行端預存程序,參與 2PC。提交失敗則回滾,保持同步。
  2. 預存程序(發行端):每篇發行項建立 INSERT/UPDATE/DELETE 程序,檢查時間戳記偵測衝突,無衝突才套用變更。
  3. MS DTC (Microsoft Distributed Transaction Coordinator):管理訂閱者與發行者間的 2PC,遠端預存程序以 BEGIN DISTRIBUTED TRANSACTION 初始化。
  4. 衝突偵測:發行端比對時間戳記(timestamp 欄位),若相同表示訂閱者讀取後未被修改,接受變更;否則拒絛並回滾。
  5. 迴路偵測:防止變更在多節點間循環複寫。

衝突偵測細節

訂閱者提交時送回所有欄位含 timestamp,發行端預存程序比對目前列的 timestamp:
- 相同 → 無衝突,用訂閱者值更新。
- 不同 → 已被他人修改,拒絕交易,雙端回滾。

實務提醒

  • 立即更新需要穩定、低延遲的網路連線(2PC 同步階段會鎖定資源)。
  • 大量更新或長時間交易會增加封鎖風險,評估改用佇列更新。
  • 合併式複寫若需雙向寫入,請使用合併式內建衝突解決器,勿嘗試立即更新。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved