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

SQL Server 跨網段/跨機房複寫:Hosts 檔與 SQL 別名雙重解決方案

     編輯:關於SqlServer

跨網段複寫核心難點:SQL Server 複寫內部通訊依賴伺服器名稱解析,不支援直接指定 IP:Port。本文提供兩種主流解法:Hosts 檔映射 (適用外網 IP 對應 1433) 與 SQL Server 別名 (適用非 1433 埠)。

環境資訊 (同前文)

  • 發行者/散發者:192.168.1.101,雙埠 1433 (對外) / 1924 (內部)。
  • 訂閱者:192.168.1.102:1433。
  • 資料庫:發行 Task,訂閱 TaskSubscribe。

方案 A:Hosts 檔映射 (外網埠 = 1433)

  1. 訂閱者 C:\Windows\System32\drivers\etc\hosts 新增:
    192.168.1.101 USER-H2B2A89PEK
  2. 散發者 hosts 新增:
    192.168.1.102 QuZhoushiwei105
  3. 建立推式訂閱 (散發者主動推送),在訂閱精靈連接發行者時即可解析名稱。
連接發行者對話框 成功連接發行者 選擇推送訂閱

方案 B:SQL Server 別名 (外網埠 ≠ 1433,如 1924)

  1. 訂閱者開啟 SQL Server Configuration Manager → SQL Native Client Configuration (32/64 位皆需) → Aliases。
  2. 右鍵 New Alias:
     - Alias Name:USER-H2B2A89PEK (必須與真實伺服器名稱完全相同)。
     - Server:192.168.1.101,1924 (IP 加逗號埠號)。
     - 協定:TCP/IP。
  3. 同樣在散發者建立別名指向訂閱者 (若訂閱者也非 1433)。
  4. 建立訂閱時直接使用別名連接,無需修改 hosts。
邏輯結構圖

防火牆與埠映射建議

  • 若只有非 1433 埠對外,防火牆僅開放該埠 (如 1924) 給訂閱者 IP,內部 1433 不對外暴露。
  • 若為了相容性同時開放 1433,建議限制來源 IP 僅限訂閱者與散發者。

驗證與監控

  • 複寫監視器確認 Undistributed Commands 為 0、Latency 在可接受範圍。
  • 定期檢查 distribution.dbo.MSrepl_errors、MSlogreader_history、MSdistribution_history。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved