事務的功能在sqlserver中由來已久,因為最近在做一個數據同步方案,所以有機會再次研究一下它以及快照等,發現還是有很多不錯的功能和改進的。這裡以sqlserver2008的事務發布功能為例,對發布訂閱的方式簡要介紹一下操作流程,一方面做個總結備份,一方面與大家進行一下分享和交流。費話就不多說了,進入一下今天的正題:)
這裡要說明一下環境:首先我在本地局域網內有兩台安裝有sqlserver2008的機器(注意:已發布的快照版本無法向老版本數據庫兼容,意味著2008下創建的事務或快照發布,無法被sqlserver2005訂閱)。當然這兩台機器要放在同一個網段,一方面出現性能和安全性考慮,另一方面是我目前還沒有找到跨不同網段的快照應用方案(可行性的那種)。
好了,這裡我以我們產品數據庫為准來介紹一下如何通過發布訂閱的方式來進行數據同步。
首先,在要發布的數據庫上創建一個我們的產品數據庫(這裡叫做dnt_new),然後在該數據庫實例的左側導航的“復制”--“本地發布”上擊右鍵,然後選擇“新建發布”,如下:
這樣,系統就會啟動‘發布向導'來引導大家,這裡我們在歡迎界面下點擊"下一步”,然後在當前窗口中選擇要發布的數據庫,如下:
點擊下一步,然後在接下來的窗口中選擇“事務發布”,如下圖:
然後點擊下一步,選擇要同步的數據對象(數據表,存儲過程,自定義函數等),如下:
然後就是“項目問題窗口”,因為之前已用dbo身份登陸,所以這裡只要點擊下一步即可,如下圖:
這裡可以通過“添加”方式來過濾要同步的數據信息,因為要做全表數據同步,所以這裡就不做設置了,感興趣的朋友可以自己研究一下,這裡接著點擊下一步,如下:
然後在‘代理安全性'窗口中,點擊“安全設置”按鈕:
在彈出的‘安全設置'子窗口中設置如下信息,並點擊‘確定'按鈕:
然後點擊下一步按鈕:
選擇“創建發布”復選框,然後點擊下一步,這時向導會讓您輸入“發布名稱”,這裡命名為“dnt_new_snap”:
點擊“完成按鈕”,這裡系統就開始根據之前收集的信息來創建該發布對象信息了,如下:
到這裡,‘創建發布'的工作就完成了。下面介紹一下創建訂閱的流程。在另一個機器的sqlserver實例上,打開該實例並使用“復制”—“新建訂閱”,如下圖:
這時系統就會啟動“新建訂閱”向導,點擊下一步,並在“發布”窗口中的“發布服務器”下拉框中選擇“查打發布sqlserver服務器”項,如下:
然後在彈出窗口中選擇之前‘創建發布時所使用的數據庫實例'並進行驗進登陸,這時,發布服務器的信息就會出現在下方的列表框中:
選擇之前我們創建的那個發布對象“dnt_new_snap”,接著點擊下一步:
在分發代理位置窗口中,選擇“在分布服務器上運行所有代理”,然後點擊下一步,然後在“訂閱服務器”窗口中的訂閱數據庫列表框中選擇一下要同步的訂閱數據庫名稱(可新建):
點擊下一步,然後在‘分發代理安全性'窗口中,點擊列表框中的‘…'來設置安裝性,並做如下設置(注意紅框部分):
然後點擊“確定”按鈕,之後在向導上點擊“下一步”按鈕,這時系統就會顯示“代理計劃執行方式”窗口,選擇“連續運行”:
點擊下一步,在窗口中選擇“立即執行”:
完成了這一步,點擊下一步按鈕,然後就可以創建該訂閱對象了,如果一切運行正常,sqlserver就會從‘發布服務器'那邊,將之前指定的數據表和存儲過程等同步到當前的‘訂閱數據庫'中了。
這時我們可以在源數據庫(發布服務器)上的表中添加或修改指定表數據信息,在等待1-3秒之後,所做的添加和修改就會同步到‘訂閱數據庫'上的相應表中。看來目的是達到了,呵呵。
好了,今天的內容就到這裡了。
注:本文中的兩台機器必定是可以使用sqlserver客戶端互聯(在sqlserver studio中設置'允許遠程鏈接',同時要設置相應的ip地址,以及在配置管理器中開啟tcp/ip協議即可)
作者: daizhj, 代震軍