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