允許管理員清理 MSmerge_contents 和 MSmerge_tombstone 系統(tǒng)表中的元數(shù)據(jù)。此存儲(chǔ)過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_mergecleanupmetadata [ [ @publication = ] 'publication' ]
[ , [ @reinitialize_subscriber = ] 'reinitialize_subscriber' ]
[@publication =] 'publication'
是發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 %,表示將返回所有發(fā)布的信息。如果顯式指定發(fā)布,則此發(fā)布必須已存在。
[@reinitialize_subscriber =] 'subscriber'
指定是否重新初始化訂閱服務(wù)器。reinitialize_subscriber 的數(shù)據(jù)類型為 nvarchar(5),可以是 true 或 false,默認(rèn)值為 TRUE。如果為 true,則訂閱標(biāo)記為重新初始化。如果為 false,則訂閱不標(biāo)記為重新初始化。
0(成功)或 1(失?。?/P>
sp_mergecleanupmetadata 用于合并復(fù)制,并使管理員得以清除 MSmerge_contents 和 MSmerge_tombstone 系統(tǒng)表中的元數(shù)據(jù)。盡管這些表可以無限擴(kuò)展,但在某些情形下清理其中的元數(shù)據(jù)可提高合并性能。此過程通過壓縮發(fā)布服務(wù)器和訂閱服務(wù)器中上述表的大小以節(jié)省空間。
默認(rèn)情況下,@reinitialize_subscriber 參數(shù)設(shè)置為 true,而所有的訂閱都標(biāo)記為重新初始化。如果將參數(shù) @reinitialize_subscriber 設(shè)置為 false,則訂閱不標(biāo)記為重新初始化。將參數(shù)設(shè)置為 false 時(shí)必須慎重,因?yàn)槿绻x擇不對(duì)訂閱進(jìn)行重新初始化,則必須確保發(fā)布服務(wù)器與訂閱服務(wù)器上的數(shù)據(jù)同步。
在沒有將訂閱標(biāo)記為重新初始化時(shí),若要運(yùn)行 sp_mergecleanupmetadata,需執(zhí)行以下步驟:
運(yùn)行此存儲(chǔ)過程時(shí),請(qǐng)注意在運(yùn)行此存儲(chǔ)過程的計(jì)算機(jī)上,日志文件不得已而且有可能增長得很大。
重要 運(yùn)行了合并元數(shù)據(jù)清除后應(yīng)執(zhí)行發(fā)布數(shù)據(jù)庫的備份。如果沒有這樣做,會(huì)在發(fā)布數(shù)據(jù)庫還原后導(dǎo)致合并失敗。
如果有正在進(jìn)行的合并進(jìn)程,而該進(jìn)程在喚醒調(diào)用此存儲(chǔ)過程時(shí)正在嘗試向發(fā)布服務(wù)器上載更改,則 sp_mergecleanupmetadata 將失敗。嘗試僅當(dāng)包括連續(xù)模式合并在內(nèi)的所有合并都已完成時(shí)才運(yùn)行此存儲(chǔ)過程。
管理員可以停用發(fā)布并在合并清除完成后重新激活它。下面是示例代碼,說明管理員如何完成此任務(wù)。
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'inactive'
EXEC central..sp_mergecleanupmetadata @publication = 'dynpart_pubn', @reinitialize_subscriber = 'false'
EXEC central..sp_changemergepublication @publication = 'dynpart_pubn', @property = 'status', @value = 'active'
如果將合并清除傳播到作為再次發(fā)布者的訂閱服務(wù)器,而此再次發(fā)布者還未激活,則將返回一個(gè)錯(cuò)誤,說明由于存在正在進(jìn)行的合并進(jìn)程,不能在再次發(fā)布者上執(zhí)行元數(shù)據(jù)的清除。
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員才能執(zhí)行 sp_mergesubscription。
若要使用此存儲(chǔ)過程,發(fā)布服務(wù)器必須運(yùn)行 Microsoft® SQL Server™ 2000。訂閱服務(wù)器必須運(yùn)行 Microsoft SQL Server 2000 或 Microsoft SQL Server 7.0 Service Pack 2。
相關(guān)文章