您好,登錄后才能下訂單哦!
SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)
一、在生產(chǎn)環(huán)境中已有事務(wù)復(fù)制中(復(fù)制類型為事務(wù)發(fā)布),需要對(duì)已有發(fā)布的數(shù)據(jù)庫(kù)新增表、視圖、存儲(chǔ)過程等,這些變更是不會(huì)同步到從庫(kù)中。如必須應(yīng)用到從庫(kù),有以下兩種方法:
1、如果采用默認(rèn)的設(shè)置,每次都需要重新初始化快照,從庫(kù)重新應(yīng)用快照和未執(zhí)行的同步命令,這在生產(chǎn)環(huán)境中對(duì)數(shù)據(jù)庫(kù)壓力或性能或DBA可維護(hù)性表現(xiàn)的很差。
2、將新增的架構(gòu)變更新建一個(gè)新的發(fā)布訂閱,但會(huì)造成維護(hù)困難,增加出錯(cuò)的幾率。
3、可以通過設(shè)置immediate_sync和allow_anonymous 來實(shí)現(xiàn)不重新初始化快照的前提下,在原有的發(fā)布訂閱中新增表/函數(shù)/存儲(chǔ)過程。
immediate_sync:指定每次運(yùn)行快照代理時(shí)是否為發(fā)布創(chuàng)建同步文件。
immediate_synchronization的數(shù)據(jù)類型為 nvarchar(5),默認(rèn)值為 FALSE。 如果為 True,表示每次運(yùn)行快照代理時(shí)都創(chuàng)建或重新創(chuàng)建同步文件。 如果快照代理在訂閱創(chuàng)建前完成,則訂閱服務(wù)器可以立即獲得同步文件。 新訂閱將獲取最近一次執(zhí)行快照代理所生成的最新同步文件。 independent_agent 必須為 true,以便于 immediate_synchronization 為 true。 如果為 False,則僅當(dāng)有新訂閱時(shí),才創(chuàng)建同步文件。 當(dāng)以增量方式向現(xiàn)有發(fā)布添加新項(xiàng)目時(shí),必須為每個(gè)訂閱調(diào)用 sp_addsubscription。 訂閱后訂閱服務(wù)器無法接收同步文件,直到啟動(dòng)并完成快照代理為止。
allow_anonymous:指定是否可為給定發(fā)布創(chuàng)建匿名訂閱。
allow_anonymous的數(shù)據(jù)類型為nvarchar(5),默認(rèn)值為 FALSE。如果為True,則immediate_synchronization 也必須設(shè)置為True。 如果為False,則表示不允許對(duì)該發(fā)布創(chuàng)建匿名訂閱。
##注意:從定義中看出來,immediate_sync為false時(shí),新的項(xiàng)目(表、存儲(chǔ)過程等)可以以增量方式發(fā)布,而allow_anonymous也必須為false,immediate_sync才能為false。
##同時(shí)如果刪除發(fā)布項(xiàng)目的中已發(fā)布的表/函數(shù)/存儲(chǔ)過程/字段訂閱庫(kù)中的對(duì)應(yīng)的表/函數(shù)/存儲(chǔ)過程/字段仍然被保留,如要?jiǎng)h除必須手工操作
二、根據(jù)以上定義進(jìn)行測(cè)試
1、示例庫(kù)為platform1126(發(fā)布數(shù)據(jù)庫(kù)),訂閱數(shù)據(jù)庫(kù)為TDB1
##注意:這里如何創(chuàng)建事務(wù)發(fā)布的復(fù)制操作(事務(wù)發(fā)布中的數(shù)據(jù)庫(kù)所有表都需要主鍵列。),可以自行百度,或參考以下鏈接:http://blog.csdn.net/hliq5399/article/details/51678774
2、創(chuàng)建事務(wù)發(fā)布發(fā)布名稱為:pl_tdb,發(fā)布數(shù)據(jù)庫(kù)上(platform1126)查看immediate_sync、allow_anonymous這兩個(gè)屬性當(dāng)前默認(rèn)屬性。
USE platform1126 sp_helppublication; 或者: select immediate_sync ,allow_anonymous from dbo .syspublications 查其默認(rèn)結(jié)果為: immediate_sync allow_anonymous 1 1 #修改immediate_sync、allow_anonymous參數(shù)為false或0: use platform1126; GO EXEC sp_changepublication @publication = 'pl_tdb', #publication為發(fā)布名稱 @property = 'allow_anonymous', @value = 'false' GO EXEC sp_changepublication @publication = 'pl_tdb', @property = 'immediate_sync' , @value = 'false' GO #重新檢查其設(shè)置結(jié)果 select immediate_sync ,allow_anonymous from dbo .syspublications 查其默認(rèn)結(jié)果為: immediate_sync allow_anonymous 0 0
3、在platform1126發(fā)布數(shù)據(jù)庫(kù)中,重新添加新發(fā)布項(xiàng)目Advertise表
4、啟動(dòng)復(fù)制監(jiān)視器,并啟動(dòng)快照代理,并查看詳細(xì)
5、查看訂閱庫(kù)TDB1,是否已經(jīng)同步Advertise表
##注:新增函數(shù)/存儲(chǔ)過程類似如上操作,新增字段直接在發(fā)布庫(kù)執(zhí)行即可
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。