一、 背景
搭建SQL Server復制的時候,如果網絡環境是局域網內,通過主機名就可以實現了,但是如果是跨網段、跨機房異地搭建復制的時候就需要注意了,因為SQL Server復制不支持通過IP連接分發服務器,那有什麼辦法解決跨網段、跨機房的問題呢?
二、 解決方案
在跨網段、跨機房進行SQL Server復制的時候需要區分兩種情況:一種是外網IP的1433端口對應了這台機器SQL Server的數據庫端口;另外一種情況是外網IP對應SQLServer機器的端口不是1433;下面是幾種解決方案:
A. 如果外網IP端口是1433,可以在Windows的host文件中指定IP地址與主機名的對應關系,主機名必須跟真實的主機名一樣?
B. 因為你的外網IP端口不是1433,所以你無法在host文件中跟IP地址一起指定端口;這種情況下,如果條件允許(安全性和端口數),你可以在防火牆中開放外網IP的1433端口對應這個發布服務器的1433端口,並且限制某個IP可以訪問這個端口,程序等訪問發布數據庫就使用另外的21433端口,保證了1433端口的安全;又可以解決端口映射問題,可以畫張圖解釋;
(Figure1:邏輯結構圖)
C. 另外一種方案是在SQL Server配置管理器裡建立一個SQL Server別名,這個別名需要跟主機名一樣,不需要啟用SQL Server Browser服務;
三、 搭建過程
(一) 環境信息
系統環境:Windows Server 2008 + SQL Server 2008
發布服務器:192.168.1.101,1924,192.168.1.101,1433服務器名稱:USER-H2B2A89PEK
分發服務器:與發布服務器同一台機器
訂閱服務器:192.168.1.102,1433,服務器名稱:QuZhoushiwei105
發布數據庫:Task
訂閱數據庫:TaskSubscribe
數據庫帳號:ReplicationUser/ ReplicationPassword
(二) 搭建步驟
上面的發布服務器的外網IP開通了兩個端口,一個是默認的1433,一個是1924,如果是默認的1433,可以通過host文件,而如果只有端口1924的話就只能通過SQL Server別名方式實現,這裡為了做測試就一起開通了這2個端口了。
A. 下面是通過host文件的形式創建訂閱的具體步驟:
1) 在發布服務器上創建發布,具體操作可以參考:SQL Server 復制事務發布,只有搭建成功之後下面的步驟才能進行;
2) 設置訂閱服務器C:\Windows\System32\drivers\etc目錄的host文件,添加分發服務器(我的環境是發布服務器與分發服務器是一起的,所以這裡指定的是發布服務器的地址)信息:192.168.1.101 USER-H2B2A89PEK
3) 設置分發服務器C:\Windows\System32\drivers\etc目錄的host文件,添加訂閱服務器信息:192.168.1.102 QuZhoushiwei105
4) 在訂閱服務器上創建訂閱,具體步驟如下:
(Figure2:連接發布服務器)
(Figure3:成功連接發布服務器)
(Figure4:選擇推送訂閱)