SQLserver 2008同步複製創建後新增表/函數/存儲過程(不重新初始化快照)

SQLserver 2008同步複製創建後新增表/函數/存儲過程(不重新初始化快照)


一、在生產環境中已有事務複製中(複製類型爲事務發佈),需要對已有發佈的數據庫新增表、視圖、存儲過程等,這些變更是不會同步到從庫中。如必須應用到從庫,有以下兩種方法:

1、如果採用默認的設置,每次都需要重新初始化快照,從庫重新應用快照和未執行的同步命令,這在生產環境中對數據庫壓力或性能或DBA可維護性表現的很差。

2、將新增的架構變更新建一個新的發佈訂閱,但會造成維護困難,增加出錯的機率。

3、可以通過設置immediate_sync和allow_anonymous 來實現不重新初始化快照的前提下,在原有的發佈訂閱中新增表/函數/存儲過程。

   immediate_sync:指定每次運行快照代理時是否爲發佈創建同步文件。 

   immediate_synchronization的數據類型爲 nvarchar(5),默認值爲 FALSE。 如果爲 True,表示每次運行快照代理時都創建或重新創建同步文件。 如果快照代理在訂閱創建前完成,則訂閱服務器可以立即獲得同步文件。 新訂閱將獲取最近一次執行快照代理所生成的最新同步文件。 independent_agent 必須爲 true,以便於 immediate_synchronization 爲 true。 如果爲 False,則僅當有新訂閱時,才創建同步文件。 當以增量方式向現有發佈添加新項目時,必須爲每個訂閱調用 sp_addsubscription。 訂閱後訂閱服務器無法接收同步文件,直到啓動並完成快照代理爲止。

    allow_anonymous:指定是否可爲給定發佈創建匿名訂閱。 

    allow_anonymous的數據類型爲nvarchar(5),默認值爲 FALSE。如果爲True,則immediate_synchronization 也必須設置爲True。 如果爲False,則表示不允許對該發佈創建匿名訂閱。

    ##注意:從定義中看出來,immediate_sync爲false時,新的項目(表、存儲過程等)可以以增量方式發佈,而allow_anonymous也必須爲false,immediate_sync才能爲false。

    ##同時如果刪除發佈項目的中已發佈的表/函數/存儲過程/字段訂閱庫中的對應的表/函數/存儲過程/字段仍然被保留,如要刪除必須手工操作


二、根據以上定義進行測試

1、示例庫爲platform1126(發佈數據庫),訂閱數據庫爲TDB1 

##注意:這裏如何創建事務發佈的複製操作(事務發佈中的數據庫所有表都需要主鍵列。),可以自行百度,或參考以下鏈接:http://blog.csdn.net/hliq5399/article/details/51678774   

2、創建事務發佈發佈名稱爲:pl_tdb,發佈數據庫上(platform1126)查看immediate_sync、allow_anonymous這兩個屬性當前默認屬性。

wKioL1l23YuT_fjeAAChmMM-hNQ052.jpg-wh_50

USE platform1126
sp_helppublication;
或者:
select immediate_sync ,allow_anonymous from dbo .syspublications
查其默認結果爲:
immediate_sync     allow_anonymous
1                  1
#修改immediate_sync、allow_anonymous參數爲false或0:
use platform1126;
GO
EXEC sp_changepublication
@publication = 'pl_tdb', #publication爲發佈名稱
@property = 'allow_anonymous',
@value = 'false'
GO
EXEC sp_changepublication
@publication = 'pl_tdb',
@property = 'immediate_sync' ,
@value = 'false'   
GO
#重新檢查其設置結果
select immediate_sync ,allow_anonymous from dbo .syspublications
查其默認結果爲:
immediate_sync    allow_anonymous
0                  0

3、在platform1126發佈數據庫中,重新添加新發布項目Advertise表

wKioL1l23aSgismjAABZ3Q***Cg256.jpg-wh_50

4、啓動複製監視器,並啓動快照代理,並查看詳細


wKioL1l23brgHwOjAABxJ0z0vQA322.jpg-wh_50

wKiom1l23bvRvUs_AAF5SQOqCcI686.jpg-wh_50

5、查看訂閱庫TDB1,是否已經同步Advertise表

wKioL1l23dXjJrQ3AAAXro0Erc8442.jpg-wh_50


##注:新增函數/存儲過程類似如上操作,新增字段直接在發佈庫執行即可


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章