跨版本 (SQL 2000 → 2008 R2) 異構複寫,採用「發布/分發/訂閱」架構,以推式訂閱由分發端主動推送至目標端。關鍵點:必須用 SQL Server 2008 R2 Management Studio 連接 SQL 2000 配置訂閱,企業管理器無法連接高版本訂閱端。
架構角色
- 發布者 (Publisher):SQL 2000 來源資料庫。
- 分發者 (Distributor):可與發布者同機,儲存交易/快照。
- 訂閱者 (Subscriber):SQL 2008 R2 目標資料庫。
步驟 1:啟用 SQL Server Agent 並設定服務帳號
- SQL 2000 企業管理器 → 右鍵 SQL Server Agent → 內容 → 「登入」頁 → 選「此帳號」→ 輸入本地管理員帳號/密碼 (不可用 Local System)。
- 設為「自動」啟動並啟動服務。
步驟 2:配置分發者 (企業管理器 → 工具 → 精靈 → 「配置發布和分發精靈」)
- 選「將此伺服器設為自己的分發者」。
- 快照資料夾:必須用網路路徑 (如
\\SERVERNAME\C$\ReplData),確認 net share 顯示預設共用 C$、D$。
- 完成後「複寫監視器」出現於企業管理器。
步驟 3:建立發布 (需 SQL 2008 R2 Management Studio 連接 SQL 2000)
- SSMS 2008 R2 連接 SQL 2000 (伺服器名稱用電腦名,不可用 IP/(local),驗證模式 SQL Server 驗證)。
- 確保發布資料庫「復原模式 = 完整」。
- 右鍵「複寫」→「本地發布」→「新建發布」。
- 選發布類型:
- 快照發布:無主鍵表、全量同步、資料量小。
- 交易發布:必須有主鍵、增量同步、低延遲、資料量大首選。
- 選擇發布文章 (表/檢視),不符合類型者會顯示禁止圖示。
- 設定快照代理排程 (如每天 02:00)。勾選「立即建立快照」可首次全量推送。
步驟 4:建立推式訂閱
- 右鍵發布 →「新建訂閱」→「推式訂閱」。
- 「加入 SQL Server 訂閱者」→ 連接 SQL 2008 R2 (同樣用電腦名,SQL 驗證)。
若跨網段,C:\Windows\System32\drivers\etc\hosts 加入 IP-名稱對應,重啟生效。
- 訂閱資料庫:選既有同名庫或新建,登入帳號需
db_owner 權限。
- 同步排程:建議在快照代理完成後 10-30 分鐘 (如 02:30)。
- 初始化:選「立即」或「首次同步時」。
關鍵坑點修正
完成後訂閱代理報錯:登入失敗。該登入名來自不受信任的網域,不能與 Windows 驗證一起使用。
原因: 企業管理器「配置發布、訂閱者和分發」→ 訂閱者屬性 → 登入方式仍為「Windows 驗證」。
修正: 改為「SQL Server 驗證」,輸入訂閱端 SQL 登入帳號/密碼。
驗證與監控
- SSMS 2008 R2 → 「複寫」→「本地訂閱」→ 右鍵「檢視同步狀態」。
- 企業管理器 → 「複寫監視器」→ 觀察「未發送命令」、「延遲」。
- 定期檢查
distribution..MSrepl_errors 錯誤表。