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

SQL Server 2000 複寫進階選項深度解析:立即更新、佇列更新、可轉換訂閱與替代同步夥伴

     編輯:關於SqlServer

可更新訂閱選項比較

選項同步模式網路需求衝突處理適用複寫類型
立即更新訂閱兩階段提交,即時同步需持續連線時間戳記偵測,發生衝突回滾快照、交易
佇列更新訂閱非同步,離線可更新間歇性連線佇列讀取代理偵測,可自訂解決策略快照、交易
以佇列更新作為熱備援的立即更新正常即時,斷線切換佇列混合結合上述兩者快照、交易

立即更新訂閱架構

  • 觸發程序(訂閱端):攔截 DML,透過 RPC 呼叫發行端預存程序,兩階段提交保證一致性。
  • 預存程序(發行端):針對 INSERT/DELETE/UPDATE 自動產生,檢查時間戳記衝突。
  • MS DTC:協調分散式交易。
  • 衝突偵測:比較時間戳記欄位。
  • 迴路偵測:避免已套用變更重複散發導致主鍵衝突。

注意:合併複寫不支援立即更新。

佇列更新訂閱架構

  • 觸發程序:將交易封裝訊息寫入本地佇列。
  • 佇列:訂閱端與散發端各有一佇列,網路恢復時轉送。
  • 佇列讀取代理(散發端多執行緒):讀取佇列、呼叫發行端預存程序套用、衝突偵測與補償命令產生。

適用:頻繁讀取、偶爾更新、需離線操作場景。

可轉換訂閱

利用 DTS 功能(欄位對應、資料類型轉換、篩選、使用者自訂函數),依各訂閱需求客製化資料分割(垂直/水平)。建立步驟:

  1. 建立發行集時勾選 Transform Published Data。
    Transform Published Data 對話框
  2. 右鍵發行集 → Define Transformation of Publication 進入 DTS 設計介面。
    Welcome to Transform Published Data
  3. 依訂閱建立轉換封裝,最後推送訂閱。

替代同步夥伴

合併複寫專屬,允許訂閱者與非原始發行者同步。需求:具備相同資料/結構、發行集為原始克隆、屬性允許替代同步、匿名訂閱自動新增對應訂閱。

篩選複寫資料

  • 欄位篩選:垂直分割,排除不需傳送欄位(主鍵、非預設 NOT NULL、唯一索引、ROWGUID 不可篩選)。
  • 列篩選:水平分割,WHERE 條件決定傳送列。交易複寫每 DML 驗證增加負載。
  • 動態篩選:合併複寫專屬,依訂閱者屬性(如 SUSER_SNAME())動態決定資料分割,減少發行端儲存多份發行集。
  • 聯結篩選:合併複寫專屬,維護兩發行表間參考完整性(主鍵/外鍵或任意比較關係)。

小結

SQL Server 2000 提供豐富進階複寫選項,依業務需求(即時一致性 vs 離線彈性、資料客製化、多點同步)選擇適當組合,並善用篩選降低頻寬與衝突。

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