架構與角色
- 發行者:來源資料庫伺服器(範例:Win Server 2003 + SSMS Enterprise)
- 散發者:追蹤變更、管理同步狀態(通常與發行者同機)
- 訂閱者:目標資料庫伺服器(範例:WinXP + SSMS Express)
版本限制:訂閱者版本不得高於發行者。Express 版僅支援訂閱功能,無發行功能。
前置準備條件
- 主鍵需求:所有同步資料表應有主鍵(無主鍵時 SQL Server 會提示自動加入)
- 伺服器註冊:發行/散發/訂閱伺服器必須使用 電腦名稱 註冊,不可用 IP、localhost 或別名
- 跨網段/遠端:編輯
C:\Windows\System32\drivers\etc\hosts 加入 IP-名稱對應
- SQL Server Agent:必須啟動,且以 本機系統帳戶 執行
- MSDTC 設定:雙方皆需啟用網路 DTC 存取(元件服務 → 我的電腦 → 本地 DTC → 安全性設定)
- 網路協定:啟用 TCP/IP 與 Named Pipes
- 驗證模式:雙方設為 混合模式(SQL Server + Windows)
- 資料庫擁有者:發行與訂閱資料庫擁有者均設為
sa
- 互相註冊伺服器:SSMS 註冊伺服器彼此連線
發行設定步驟
- SSMS → 複寫 → 右鍵 新增發行集
- 選擇發行資料庫
- 發行類型:合併式發行(支援離線、雙向同步)
- 訂閱者類型:SQL Server 2005
- 發行項目:勾選資料表、檢視表、預存程序
- 無主鍵表:允許 SQL Server 自動加入主鍵
- 排程:設定 每 1 分鐘 執行(測試用,生產依業務調整)
- 快照集代理程式安全性:使用「模擬處理序帳戶」
- 命名發行集完成
訂閱設定步驟
- 訂閱者 SSMS → 複寫 → 右鍵 新增訂閱
- 選擇發行者,找到剛建立的發行集
- 代理程式執行位置:提取式(訂閱者主動輪詢)或 推送式(發行者主動送達)
- 設定連線驗證、排程
- 完成:訂閱資料庫會自動新增追蹤欄位(
rowguid、msrepl_tran_version)
同步狀態監控
- 發行者 SSMS → 複寫 → 右鍵發行集 → 啟動複寫監視器
- 展開:我的發行者 → 伺服器名稱 → 發行集名稱
- 右側顯示訂閱狀態:同步中、成功、失敗
- 右鍵訂閱 → 屬性 → 查看詳細同步歷程(插入/更新/刪除筆數)
複寫類型選擇指引
| 類型 | 適用情境 | 同步模式 |
| 快照式 | 資料量小、變動極少、定期全量重整 | 定期完整覆寫 |
| 交易式 | 高頻異動、需低延遲、單向同步 | 近即時交易傳遞 |
| 合併式 | 離線客戶端、雙向同步、衝突解決 | 排程/觸發合併 |
本教學以合併式複寫為例,實際部署請依業務需求選擇適當類型。