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

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


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

一、若是採用默認的設置,每次都須要從新初始化快照,從庫從新應用快照和未執行的同步命令,這在生產環境中對數據庫壓力或性能或DBA可維護性表現的不好。服務器

二、將新增的架構變動新建一個新的發佈訂閱,但會形成維護困難,增長出錯的概率。架構

三、能夠經過設置immediate_sync和allow_anonymous 來實現不從新初始化快照的前提下,在原有的發佈訂閱中新增表/函數/存儲過程。ide

   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,則表示不容許對該發佈建立匿名訂閱。spa

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

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


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

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

##注意:這裏如何建立事務發佈的複製操做(事務發佈中的數據庫全部表都須要主鍵列。),能夠自行百度,或參考如下連接:http://blog.csdn.net/hliq5399/article/details/51678774   

二、建立事務發佈發佈名稱爲: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

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

wKioL1l23aSgismjAABZ3Q***Cg256.jpg-wh_50

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


wKioL1l23brgHwOjAABxJ0z0vQA322.jpg-wh_50

wKiom1l23bvRvUs_AAF5SQOqCcI686.jpg-wh_50

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

wKioL1l23dXjJrQ3AAAXro0Erc8442.jpg-wh_50


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

相關文章
相關標籤/搜索