溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)

發(fā)布時(shí)間:2020-08-02 12:26:50 來源:網(wǎng)絡(luò) 閱讀:3463 作者:yikayi 欄目:數(shù)據(jù)庫(kù)

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)屬性。

SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)

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表

SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)

4、啟動(dòng)復(fù)制監(jiān)視器,并啟動(dòng)快照代理,并查看詳細(xì)


SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)

SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)

5、查看訂閱庫(kù)TDB1,是否已經(jīng)同步Advertise表

SQLserver 2008同步復(fù)制創(chuàng)建后新增表/函數(shù)/存儲(chǔ)過程(不重新初始化快照)


##注:新增函數(shù)/存儲(chǔ)過程類似如上操作,新增字段直接在發(fā)布庫(kù)執(zhí)行即可


向AI問一下細(xì)節(jié)

免責(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)容。

AI