在SQL SERVER的復制(Replication)中,有可能出現(xiàn)由于業(yè)務需求變更,需要新增一張表或一些表到已有的復制(發(fā)布訂閱)當中,這種需求應該是很正常,也很常見的。但是在已有的復制(發(fā)布訂閱)當中增加新表/文章,往往需要將整個快照重新初始化,這樣做雖然簡單,但是往往在實際應用中會出現(xiàn)一些問題,例如,發(fā)布訂閱的表比較多,數(shù)據(jù)量比較大,那么重新初始化快照往往需要很長一段時間,影響系統(tǒng)正常運行。另外就是這樣做會增大服務器的負荷,影響網(wǎng)絡帶寬.
那么是否可以在新增表/文章后,不用初始化整個快照,而只是初始化新增的表呢? 當然可以,下面以一個小案例來講述一下如何操作:
在數(shù)據(jù)庫TTT上建立了名為RPL_TTT的發(fā)布,要發(fā)布的對象為WipNoToReed和WipNoToStarch這兩張表,在另外一個服務器的數(shù)據(jù)庫Test上訂閱了該發(fā)布。現(xiàn)在由于需求變跟,需要增加一張表WipNoToLoosen
我們可以按照下面三個步驟來操作,如下所示:
1:使用sp_helppublication查看該發(fā)布的相關信息,如下所示,你會看到默認情況下,'immediate_sync' 和 'allow_anonymous'這兩個屬性都是啟用的。我們首先需要禁用這兩個屬性。
allow_anonymous 表示是否允許對發(fā)布使用匿名訂閱。
immediate_sync 表示是否在每次快照代理運行時創(chuàng)建或重新創(chuàng)建同步文件。
use TTT;
go
sp_helppublication;
或
use TTT;
go
exec sp_helppublication 'RPL_TTT';
--Run on your publisher database
use TTT;
新聞熱點
疑難解答
圖片精選