前言:
前兩天接到上司的任務,将一個系統A的客戶資料同步到另一個系統B中,以後客戶錄入入口隻有A系統,B系統不提供錄入入口,因為各種原因不能使用接口方式A系統和B系統直接互動同步,隻能通過資料庫重A庫同步到B庫。原想通過觸發器直接些過去的,但在跨伺服器方面遇到種種問題,穩定性太差最終放棄,選擇使用釋出訂閱的方式;沒想到釋出訂閱也沒有想象的那麼順利,今天就來就釋出訂閱遇到的問題說說解決方法,不全面隻是我遇到的問題;
遇到問題:
1、如果伺服器開啟了防火牆,需要添加1433端口的出站入站
2、釋出伺服器釋出成功後,在訂閱伺服器上訂閱,顯示訂閱成功後但是在本地訂閱下看不到訂閱資訊:
1)可能是釋出的快照路徑權限問題,釋出時一般預設在系統盤,可以将路徑修改到可配置權限的檔案夾下(見下面釋出部署2.3),将路徑下的repldata檔案夾權限開放(注意:指定給這個檔案夾設定,在上級設定不一定有效);
2)服務名稱和主機名不同
可以通過執行一下SQL查詢是否相同
如果不相同執行下面SQL修改

View Code
需注意的是,改過之後必須要重新開機一下SQL 伺服器才可以
3)主機名和其它伺服器主機名稱相同
修改主機名,重新開機主機,按上一種方法将伺服器名稱改為主機名稱,重新開機服務;
但是這樣可能還會有問題:釋出訂閱都成功後,但是并不能同步資料,在釋出伺服器看同步狀态,檢視詳細會看到說無法連接配接訂閱伺服器,使用SQL用戶端遠端連接配接訂閱伺服器發現使用IP方式可以連接配接,但用主機名稱方式不能連接配接;這裡咱們就要檢查一下訂閱伺服器的登入名裡面,會發現有一個以原來主機名稱+‘/administrator’命名的一個登入名
我們将這個登入名删掉,然後建立登入名
修改之後在釋出伺服器上重新初始化釋出就可以了,啟動複制監視檢視可以看到訂閱正在運作,檢視資料庫資料同步成功
1、釋出伺服器跟訂閱伺服器必須在同一區域網路内
2、釋出的時候SQL Server 需要有實際的伺服器名稱才能連接配接到伺服器。不支援通過伺服器别名、IP位址或者其他備用名稱進行連接配接。是以如果目前的SQL Server的連接配接是IP位址的話,最好斷開連接配接,以實際的伺服器名稱重新進行登入
展開SQL Server 2008 伺服器下的 【複制】 節點,會發現有【本地釋出】和【本地訂閱】兩個節點,右擊【本地釋出】節點,選擇【建立釋出】
1、如果伺服器第一次進行釋出設定,會彈出【釋出向導】對話框
2、設定【分發伺服器】,選擇第一個
點選【下一步】,會出現設定【快照檔案夾】對話框,我們選擇預設
點選【下一步】,選擇要釋出的資料庫
點選【下一步】,選擇【釋出類型】,我們選擇 【事務釋出】。
點選【下一步】,選擇資料庫中的釋出對象,選擇所需的表、視圖,也可選擇所有的表
點選【下一步】,SQL Server 要求已釋出存儲過程引用的所有對象(例如,表和使用者定義函數)在訂閱伺服器上可用。如果沒有将被引用對象作為此釋出中的項目釋出,則必須在訂閱伺服器上手動建立這些對象。(預設)
1、點選【下一步】,進入【篩選表行】對話框:
2、如果需要篩選表行點選【添加】就會出現如下的篩選器對話框,可在篩選語句中添加SQL查詢語句
不需要篩選,即所有資料全部同步,點選【取消】後,直接【下一步】,進入【快照代理】設定對話框,這裡有兩個選擇一個是立即建立快照,一個是指定一個計劃(比如可以指定xxx天xxx時間運作),我們選擇第一個
1、點選【下一步】進入【代理的安全性】設定
2、點選【安全性設定】,我們選擇 SQL SERVER 使用者
1、點選【确定】 後,傳回 【代理安全性】設定對話框,繼續點選【下一步】
2、點選【下一步】,我們給釋出進行命名為:FaBu_TEST
3、點選【完成】,就會建立釋出,并會顯示建立釋出的結果
釋出建立完成後設定C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL路勁下repldata檔案權限
右鍵點選【本地訂閱】節點,打開,【建立訂閱】對話框
1、彈出建立訂閱向導點
2、擊下一步,選擇釋出伺服器,選擇查找SQL Server 釋出伺服器
3、彈對外連結接到伺服器,連結到釋出伺服器。
注:不支援通過伺服器别名、IP位址等名連結,需用伺服器實際名稱進行連結
4、點選連結 ,選擇要為其建立一個或多個訂閱的釋出, 我們選擇釋出伺服器WIN-XXX 中的資料庫釋出 FaBu_TEST,然後點選【下一步】
在【分發代理位置】對話框中,選擇第一項,點選【下一步】
在【訂閱伺服器】對話框中,選擇建立資料庫,或者提前建好一個新資料庫選擇這個資料庫
1、在【分發代理安全性】對話框中,我們點選“...”,進入安全性設定,我們選則的是 SQL 帳戶
2、輸入訂閱伺服器SQL Server的登陸名和密碼
點選【下一步】,設定代理計劃,我們選擇預設的“連續運作”
點選【下一步】,進入【初始化訂閱】對話框,選擇 “立即” 初始化
1、在【初始化訂閱】點選【下一步】:選建立訂閱
2、點選【下一步】:完成向導
3、點選【完成】,就會建立訂閱,并顯示建立結果