紙上得來終覺淺,絕知此事要躬行。搞技術尤其如此,看別人配置SQL SERVER的復制,發布-訂閱、鏡像、日志傳送者方面的文章,感覺挺簡單,好像輕輕松松的,但是當你自己去實踐的時候,你會發現還真不是那么一回事,畢竟環境不同、數據庫版本或經驗關系,你實踐的時候會或多或少碰到一些問題,有可能人家是多次實踐后,繞開了那些“坑”,畢竟寫文章是事后總結,人家台上一分鍾,台下十年功。閑話不扯了,進入正題,本文雖然簡單,但是趁現在有時間,也記錄一下前幾天配置Replication的發布訂閱。
環境:發布服務器A:Windows Server 2008 R2 Standard, SQL SERVER 2008 R2, 訂閱服務器B:Windows Server 2003 R2 Standard X64 Edition Service Pack2, SQL SERVER 2008 R2 Standard
開始前,你必須確保實例已經安裝了Replication Componets,否則會報錯,詳情請見MS SQL 2008 發布訂閱配置遇到的錯誤,在服務器A上,打開SSMS,右鍵單擊Local Publication(本地發布),選擇New Publication(新建發布)
(圖1)
然后就進入新建發布的向導了,如果第一次新建發布,有可能出現下面圖2、圖3,否則不會遇到這些界面
(圖2)
不建議將快照文件夾放在C盤,最好設置在其它非系統磁盤。如果下面你不用UNC路徑並且共享改目錄,必須設置可讀權限,否則后面你可能會碰到一個讓你棘手的錯誤,具體參見MS SQL 2008 發布訂閱配置錯誤總結
(圖3)
選擇你要發布的數據庫,這里只能單選,不能選擇多個數據庫。
(圖4)
接下來,關於選擇發布類型,根據你的實際情況,選擇合適的發布類型
快照復制:快照復制將數據以特定時刻的瞬時狀態分發,而不監視對數據的更新。發生同步時,將生成完整的快照並將其發送到訂閱服務器。 當符合以下一個或多個條件時,使用快照復制本身是最合適的:
1: 很少更改數據。
2: 在一段時間內允許具有相對發布服務器已過時的數據副本。
3: 復制少量數據。
4: 在短期內出現大量更改。
事務復制:事務復制通常用於服務器到服務器環境中, 在以下各種情況下適合采用事務復制:
1: 希望發生增量更改時將其傳播到訂閱服務器。
2: 從發布服務器上發生更改,至更改到達訂閱服務器,應用程序需要這兩者之間的滯后時間較短。
3: 應用程序需要訪問中間數據狀態。 例如,如果某一行更改了五次,事務復制將允許應用程序響應每次更改(例如,激發觸發器),而不只是響應該行最終的數據更改。
4:發布服務器有大量的插入、更新和刪除活動。
5:發布服務器或訂閱服務器不是 SQL Server 數據庫(例如,Oracle)。
具有可更新訂閱的事務發布:
事務復制支持在訂閱服務器中通過可更新訂閱和對等復制來進行更新。下面介紹兩種可更新訂閱:
-
立即更新。必須連接發布服務器和訂閱服務器才能在訂閱服務器中更新數據。
-
排隊更新。不必連接發布服務器和訂閱服務器即可在訂閱服務器中更新數據。可以在訂閱服務器或發布服務器脫機時進行更新。
在訂閱服務器中更新數據時,首先將數據傳播到發布服務器,然后再傳播到其他訂閱服務器。如果使用立即更新,將使用兩階段提交協議立即傳播更改。如果使用排隊更新,更改將存儲在隊列中;當網絡連接可用時,再在發布服務器中異步應用排隊事務。由於更新異步傳播至發布服務器,所以發布服務器或另一台訂閱服務器有可能更新同一數據,而在應用更新時會發生沖突。將根據創建發布時設置的沖突解決策略檢測和解決沖突。
如果在新建發布向導中創建具有可更新訂閱的事務發布,將同時啟用立即更新和排隊更新。如果使用存儲過程創建發布,則可以啟用一個或兩個選項。創建發布的訂閱時,可以指定要使用的更新模式。如有必要,以后可以在兩種更新模式之間切換。有關詳細信息,請參閱下面的“在更新模式之間切換”部分
合並復制:並復制通常用於服務器到客戶端的環境中。合並復制適用於下列各種情況:
1:多個訂閱服務器可能會在不同時間更新同一數據,並將其更改傳播到發布服務器和其他訂閱服務器。
2:訂閱服務器需要接收數據,脫機更改數據,並在以后與發布服務器和其他訂閱服務器同步更改。
3:每個訂閱服務器都需要不同的數據分區。
4:可能會發生沖突,並且在沖突發生時,您需要具有檢測和解決沖突的能力。
5:應用程序需要最終的數據更改結果,而不是訪問中間數據狀態。 例如,如果在訂閱服務器與發布服務器進行同步之前,訂閱服務器上的行更改了五次,則該行在發布服務器上僅更改一次來反映最終數據更改(也就是第五次更改的值)。
(圖5)
(圖6)
其中被打上紅圈叉叉的表,表示沒有Primary Key的表是沒法發布,關於Article Properties,主要是設置過濾表數據的
(圖7)
(圖8)
(圖9)
(圖10)
第二個生成創建發布的腳本選項,不是必須的,如果你想研究,也可以選擇
(圖11)
(圖12)
在發布名稱(Publication name)的選項里面輸入你想命名的名稱,然后點擊Finish,那么OK了
(圖13)
(圖14)
接下來,登錄訂閱服務器B,打開SSMS管理器,右鍵單擊Local Subscriptions(本地訂閱),選擇新建訂閱
(圖15)
(圖16)
(圖17)
(圖18)
(圖19)
(圖20)
(圖21)
(圖22)
(圖23)
(圖24)
(圖25)
接下來,你就可以測試數據是否同步,相關作業是否報錯,檢查具體原因,如果出現錯誤,建議大家看看這篇文件,囊括了大部分你可能會遇到的錯誤:http://kb.cnblogs.com/page/71979/, 我的這篇文章MS SQL 2008 發布訂閱配置遇到的錯誤也打算不斷整理收集復制發布訂閱中碰到的問題.
參考資料: