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

SQL Server 2005 異地資料庫同步複寫(發佈/訂閱)完整部署指南

     編輯:SQL Server 2005

一、 架構概覽與前置需求

採用**快照式複寫**(Snapshot Replication)或**異動複寫**(Transactional Replication),將發佈端資料同步至一或多個訂閱端。核心前置條件:

  • 雙向網路通暢(TCP 1433/自訂埠、UDP 1434 Browser)
  • 共用快照資料夾具備讀寫權限
  • SQL Server Agent 服務以同一網域帳號啟動
  • 混合驗證模式(SQL Server + Windows)
  • 雙方已在 SSMS 註冊彼此伺服器

二、 詳細前置作業清單

1. 建立同步專用網域帳號

-- 於發佈端與訂閱端各建立相同帳號/密碼,加入 Administrators 群組
User: repl_sync_user
Pwd:  ComplexPassword123!

2. 建立快照共用資料夾

  1. 發佈端建立資料夾 D:\ReplSnapshot
  2. 右鍵 → Properties → Sharing → Advanced Sharing → Share this folder
  3. Permissions → Add → 輸入 repl_sync_user → 給予 Full Control
  4. NTFS 安全性頁籤同樣給予 repl_sync_user 完整控制權

3. 設定 SQL Server Agent 服務登入身分

  1. services.msc → SQL Server Agent (MSSQLSERVER) → 右鍵 Properties
  2. Log On 索引標籤 → This account → 輸入 DOMAIN\repl_sync_user 與密碼
  3. OK → 重新啟動服務
  4. **發佈端與訂閱端皆需設定**

4. 啟用混合驗證模式

  1. SSMS 連線 → 右鍵伺服器 → Properties → Security
  2. Server authentication → SQL Server and Windows Authentication mode
  3. OK → 重新啟動 SQL Server 服務

5. 雙向註冊伺服器

SSMS → Registered Servers (Ctrl+Alt+G) → 右鍵 Database Engine → New Server Registration → 以 SQL 驗證 (sa) 登入彼此伺服器。

6. 別名設定(僅能用 IP 連線時)

cliconfg.exe (Client Network Utility) → Alias → Add → TCP/IP → 伺服器別名 = 實際 SQL 名稱,連線參數輸入 IP 位址與埠號。

7. 啟用網路協定

SQL Server Configuration Manager → Protocols for MSSQLSERVER → 啟用 TCP/IP 與 Named Pipes → 重新啟動服務。

三、 建立快照式發佈與訂閱(逐步操作)

1. 設定發佈者與散發者

  1. SSMS → Replication → 右鍵 Local Publications → New Publication
  2. 精靈:選擇資料庫 → **Snapshot Publication** → 選擇發佈物件(資料表/檢視/SP)
  3. Snapshot Folder → 輸入共用路徑 \\PUB_SERVER\ReplSnapshot
  4. 設定快照代理程式排程(如每日 02:00) → 命名發佈(如 Pub_SalesData)

2. 建立訂閱(推送訂閱,由發佈端主動推送)

  1. 右鍵 Local Subscriptions → New Subscription
  2. 選擇發佈 Pub_SalesData → 選擇 Push Subscription
  3. 加入訂閱伺服器 → 選擇目標資料庫
  4. 代理程式排程:Run continuously(持續執行)或依需求排程
  5. 完成精靈

四、 驗證與監控

  • SSMS → Replication Monitor (Ctrl+Alt+R) → 檢視同步狀態、延遲、錯誤記錄
  • 發佈端執行 sp_helppublication、sp_helpsubscription 查詢中繼資料
  • 訂閱端查詢資料筆數、檢查關鍵資料表是否一致

五、 常見問題排查

錯誤現象原因解決
快照代理失敗「Access denied」共用資料夾權限不足檢查 NTFS + 共用權限皆給 repl_sync_user Full Control
訂閱代理「Login failed for user」SQL Agent 服務帳號錯誤/密碼過期重新設定 Agent 登入帳號、同步密碼
防火牆阻擋TCP 1433/UDP 1434 未開放雙向防火牆開放埠與 sqlservr.exe/sqlbrowser.exe
異動複寫延遲大網路頻寬/磁碟 I/O 瓶頸調整批次大小、壓縮快照、考慮異動複寫參數優化

六、 進階建議

  • **大資料量初始化**:先手動備份/還原資料庫至訂閱端,再建立訂閱並勾選 Initialize from backup,避免巨大快照傳輸。
  • **異動複寫**:需資料近即時同步時改用 Transactional Replication,設定 sp_addpublication @sync_method = 'concurrent'。
  • **監控告警**:設定 Replication Monitor 警示(延遲 > 閾值、代理失敗)發送郵件通知。
  • **安全性**:僅開放必要埠、使用憑證加密連線、定期輪換同步帳號密碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved