使用Sqlserver事務發布實現數據同步


事務的功能在sqlserver中由來已久,因為最近在做一個數據同步方案,所以有機會再次研究一下它以及快照等,發現還是有很多不錯的功能和改進的。這里以sqlserver2008的事務發布功能為例,對發布訂閱的方式簡要介紹一下操作流程,一方面做個總結備份,一方面與大家進行一下分享和交流。費話就不多說了,進入一下今天的正題:)

這里要說明一下環境:首先我在本地局域網內有兩台安裝有sqlserver2008的機器(注意:已發布的快照版本無法向老版本數據庫兼容,意味着2008下創建的事務或快照發布,無法被sqlserver2005訂閱)。當然這兩台機器要放在同一個網段,一方面出現性能和安全性考慮,另一方面是我目前還沒有找到跨不同網段的快照應用方案(可行性的那種)。

好了,這里我以我們產品數據庫為准來介紹一下如何通過發布訂閱的方式來進行數據同步。

首先,在要發布的數據庫上創建一個我們的產品數據庫(這里叫做dnt_new),然后在該數據庫實例的左側導航的“復制”–“本地發布”上擊右鍵,然后選擇“新建發布”,如下:

sqlserver_snap_1

 

這樣,系統就會啟動‘發布向導’來引導大家,這里我們在歡迎界面下點擊”下一步”,然后在當前窗口中選擇要發布的數據庫,如下:

sqlserver_snap_2

點擊下一步,然后在接下來的窗口中選擇“事務發布”,如下圖:

sqlserver_snap_3

然后點擊下一步,選擇要同步的數據對象(數據表,存儲過程,自定義函數等),如下:

sqlserver_snap_4

 

然后就是“項目問題窗口”,因為之前已用dbo身份登陸,所以這里只要點擊下一步即可,如下圖:

sqlserver_snap_5

這里可以通過“添加”方式來過濾要同步的數據信息,因為要做全表數據同步,所以這里就不做設置了,感興趣的朋友可以自己研究一下,這里接着點擊下一步,如下:

sqlserver_snap_6

然后在‘代理安全性’窗口中,點擊“安全設置”按鈕:

sqlserver_snap_7

在彈出的‘安全設置’子窗口中設置如下信息,並點擊‘確定’按鈕:

sqlserver_snap_8

然后點擊下一步按鈕:

sqlserver_snap_9

選擇“創建發布”復選框,然后點擊下一步,這時向導會讓您輸入“發布名稱”,這里命名為“dnt_new_snap”:

sqlserver_snap_10

 

點擊“完成按鈕”,這里系統就開始根據之前收集的信息來創建該發布對象信息了,如下:

sqlserver_snap_11

 

 

到這里,‘創建發布’的工作就完成了。下面介紹一下創建訂閱的流程。在另一個機器的sqlserver實例上,打開該實例並使用“復制”—“新建訂閱”,如下圖:

sqlserver_snap_12

 

這時系統就會啟動“新建訂閱”向導,點擊下一步,並在“發布”窗口中的“發布服務器”下拉框中選擇“查打發布sqlserver服務器”項,如下:

sqlserver_snap_13

然后在彈出窗口中選擇之前‘創建發布時所使用的數據庫實例’並進行驗進登陸,這時,發布服務器的信息就會出現在下方的列表框中:

sqlserver_snap_14

 

選擇之前我們創建的那個發布對象“dnt_new_snap”,接着點擊下一步:

sqlserver_snap_15

在分發代理位置窗口中,選擇“在分布服務器上運行所有代理”,然后點擊下一步,然后在“訂閱服務器”窗口中的訂閱數據庫列表框中選擇一下要同步的訂閱數據庫名稱(可新建):

sqlserver_snap_16

點擊下一步,然后在‘分發代理安全性’窗口中,點擊列表框中的‘…’來設置安裝性,並做如下設置(注意紅框部分):

sqlserver_snap_18

 

 

然后點擊“確定”按鈕,之后在向導上點擊“下一步”按鈕,這時系統就會顯示“代理計划執行方式”窗口,選擇“連續運行”:

sqlserver_snap_19

 

點擊下一步,在窗口中選擇“立即執行”:

sqlserver_snap_20

完成了這一步,點擊下一步按鈕,然后就可以創建該訂閱對象了,如果一切運行正常,sqlserver就會從‘發布服務器’那邊,將之前指定的數據表和存儲過程等同步到當前的‘訂閱數據庫’中了。

這時我們可以在源數據庫(發布服務器)上的表中添加或修改指定表數據信息,在等待1-3秒之后,所做的添加和修改就會同步到‘訂閱數據庫’上的相應表中。看來目的是達到了,呵呵。

 

好了,今天的內容就到這里了。

 注:本文中的兩台機器必定是可以使用sqlserver客戶端互聯(在sqlserver studio中設置’允許遠程鏈接’,同時要設置相應的ip地址,以及在配置管理器中開啟tcp/ip協議即可)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM