此次實驗分別在局域網和跨網段進行,先局域網中配置,再跨網段配置,按需查看。sql
下面文章的內容將分爲兩個部分數據庫
目錄windows
1、經過非命令行方式配置同步訂閱安全
(1)實驗環境說明服務器
(2)實驗前準備網絡
(3)訂閱設置工具
(4)測試同步訂閱sqlserver
2、常見問題彙總測試
3、總結.net
正文部分
1、經過非命令行方式配置同步訂閱
(1)實驗環境說明
實驗環境,兩臺在同一局域網(跨網段的在後面再詳細說明)的PC機,這裏PC1是做爲分發服務器,PC2做爲訂閱服務器
PC1
系統:win10
數據庫版本:SQL Server 2016
IP:192.168.0.62
Sqlserver端口:1433
計算機名:DESKTOP-Aaron1
工做組:WORKGROUP
用戶名:SqlServer
PC2
系統:win10
數據庫版本:SQL Server 2016
IP:192.168.0.152
Sqlserver端口:1433
計算機名:DESKTOP-Aaron2
工做組:WORKGROUP
用戶名:SqlServer
(2)實驗前準備
檢查幾個設置,這是實驗成功的關鍵,PC1和PC2都要進行相同的配置。
a.開共享
在任務欄的計算機圖標右鍵->打開網絡和共享中心->更改高級共享設置
在高級共享裏面開啓共享
b.防火牆開1433 端口
打開控制面板,選擇系統與安全
打開防火牆設置中的高級設置
新建一個入站規則
點擊新建規則->端口
端口->填寫開放的端口號
填寫開放的端口號->選擇容許鏈接
下面的所有默認就能夠
c.配置管理器設置TCP/IP啓用
打開SQL Server 2016 配置管理器,網絡配置->協議->TCP/IP開啓
選中TCP/IP右鍵「屬性」,在屬性中把對應的ip 192.168.0.152的Enabled設置爲「是」,端口號爲默認的1433
d.Sql Server Browser 服務開啓
若是在SSMS工具中找不到局域網內的其餘數據庫服務器,能夠開啓這個功能
e.兩臺機有相同的帳戶(用戶名和密碼要一致)
在兩臺機中我都新建了一個相同的賬戶名和密碼的帳戶
f.數據庫添加windows帳戶訪問
打開SSMS添加上面新建的windows帳戶SqlServer
g.數據庫開啓容許遠程鏈接
在SSMS中開啓數據庫容許遠程鏈接
h.測試網絡是否鏈接成功
這是最關鍵的一步,也是下面訂閱同步操做的前提,打開cmd命令窗口(windows+R 輸入cmd回車)。
先使用ping命令測試網絡鏈接是否有問題(PC1和PC2都要ping測試是否互通)
就算能ping通,只能說明局域網內存在這臺機,也不表明能實現同步,還要測試端口是否可用。
使用telnet命令測試端口是否可用 telnet 192.168.0.62 1433
出現這個窗口表示可用
(3)訂閱設置
已經在PC1新建了一個新的數據庫Test1,Test1裏面有一張表Table_1, Table_1插入了幾條測試數據,把數據庫Test1備份複製到PC2機器上還原。
配置PC1做爲分發服務器
打開數據庫的 複製->本地發佈,右鍵新建發佈
下面的步驟按照截圖來,這裏的發佈數據庫選擇的是測試用的Test1,咱們的實驗就是要把PC1的Test1數據庫同步到PC2的數據庫Test1。
選擇要發佈的表,後期還能夠添加新表。
這裏爲了方便測試數據,點擊了「更改」按鈕,設置同步的頻率爲10秒。
下一步。選擇「在如下windows帳戶下運行」,填寫PC1機windows帳戶(這裏要填域\帳戶),鏈接發佈服務器使用的是sa帳戶。(這裏選擇「在sqlserver代理帳戶下運行」通過測試也是能夠的)
配置PC2做爲訂閱服務器
設置訂閱能夠在分發服務器上也能夠在訂閱服務器上,結果是同樣的,這裏咱們在分發服務器上設置
右鍵本地訂閱,新建訂閱
選擇PC1機發布服務器的發佈任務
下一步,有兩個選項,此次實驗是在分發服務器運行推送訂閱,選擇第一項
下一步,點擊「添加訂閱服務器」,服務器名稱選擇的是PC2機的名稱,使用windows身份驗證,這裏能鏈接上的緣由是咱們兩臺機都有相同的用戶名和密碼,也是上面說明中要配置相同windows帳戶的緣由(這裏也可使用數據庫的帳戶登陸)
要訂閱的是PC2機上的Test1數據庫
下一步,設置訂閱屬性
選擇「在如下windows帳戶下運行」,填寫PC1機windows帳戶,由於咱們在發佈服務器上進行分發。
後面的設置默認就行
(4)測試同步訂閱
當前PC1的Test1數據庫表內容爲
咱們插入幾條數據
查看PC2機的數據庫Test1的表數據有沒有變化
詳細的內容還能夠查看同步狀態信息,選中訂閱服務器右鍵,查看同步狀態。
點擊「監視」
還有代理狀態
雙擊右表的狀態條能夠查看同步的各類參數
到這裏同步訂閱功能測試完成。
2、常見問題彙總
(1)搜索不到局域網內的其它SqlServer數據庫
首先檢查一下網絡是否有問題,是否開啓了網絡發現,具體看上面的實驗前準備。
(2)訂閱的時候提示沒法訪問文件之類的問題
這個是訪問文件的權限問題,在windows裏對不能訪問的文件添加相應的權限便可。這裏遇到過的是沒法訪問快照文件。
(3)跨網段配置發佈訂閱
因爲公司的兩臺服務器不在同一個網段,因此上面的配置是不成功的,差異在哪裏呢?
情景再現:
PC1:發佈服務器
IP:10.33.1.222
掩碼:255.255.254.0
PC2:訂閱服務器
IP:10.24.0.100
掩碼:255.255.248.0
首先判斷兩臺機器是否連通的,否則什麼都是白搭。使用ping命令互相ping一下,若是沒問題再使用telnet測試端口是否可用telnet 10.248.22.100 1433,確認沒問題以後,發現鏈接沒問題啊,而後直接使用IP做爲數據庫登錄名:
結果報了要使用數據庫實例名稱登陸的錯誤,以前測試過使用名稱也是登陸不上的,問題的根源是由於不在同一個網段中,網絡發現開啓了也找不到對應這個名字的機器。那咱們本身指定這個名稱對應的IP地址就好啦。good~
在發佈服務器的C:\Windows\System32\drivers\etc 目錄下找到hosts 文件,配置訂閱服務器的ip地址和數據庫實例名稱,這樣發佈服務器就能夠找到不在同一個網段的訂閱服務器實例了。