將訂閱標(biāo)記為重新初始化。此存儲(chǔ)過程在發(fā)布服務(wù)器的強(qiáng)制訂閱上執(zhí)行。
sp_reinitsubscription [ [ @publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
, [ @subscriber = ] 'subscriber'
[ , [ @destination_db = ] 'destination_db']
[ , [ @for_schema_change = ] 'for_schema_change']
[@publication =] 'publication'
是發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 all。
[@article =] 'article'
是項(xiàng)目名。article 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 all。對(duì)于即時(shí)更新發(fā)布,article 必須是 all;否則,此存儲(chǔ)過程將跳過該發(fā)布并報(bào)告錯(cuò)誤。
[@subscriber =] 'subscriber'
是訂閱服務(wù)器名。subscriber 的數(shù)據(jù)類型為 sysname,無默認(rèn)值。
[@destination_db =] 'destination_db'
是目的數(shù)據(jù)庫名。destination_db 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 all。
[@for_schema_change =] 'for_schema_change'
表示發(fā)布數(shù)據(jù)庫上的架構(gòu)更改時(shí)是否重新初始化。for_schema_change 的數(shù)據(jù)類型為 bit,默認(rèn)值為 0。如果為 0,則只要重新初始化整個(gè)發(fā)布而不只是其中的某些項(xiàng)目,就將重新激活允許即時(shí)更新的發(fā)布的活動(dòng)訂閱。這表示架構(gòu)更改時(shí)將調(diào)用重新初始化。如果為 1,則直到運(yùn)行快照代理程序時(shí)才重新激活活動(dòng)訂閱。
0(成功)或 1(失敗)
sp_reinitsubscription 用于事務(wù)復(fù)制。
對(duì)于自動(dòng)應(yīng)用初始快照和發(fā)布不允許可更新訂閱的訂閱,執(zhí)行此存儲(chǔ)過程之后必須運(yùn)行快照代理程序,以便準(zhǔn)備架構(gòu)和大容量復(fù)制程序文件,并使分發(fā)代理程序隨后能夠重新同步訂閱。
對(duì)于自動(dòng)應(yīng)用初始快照和發(fā)布允許可更新訂閱的訂閱,分發(fā)代理程序使用先前由快照代理程序創(chuàng)建的最新架構(gòu)和大容量復(fù)制程序文件重新同步訂閱。如果分發(fā)代理程序不忙,則在用戶執(zhí)行 sp_reinitsubscription 后,分發(fā)代理程序?qū)⒘⒓粗匦峦接嗛?;否則,可能會(huì)在消息間隔(由分發(fā)代理程序命令提示符參數(shù):MessageInterval 指定)后進(jìn)行同步。
對(duì)于手工應(yīng)用初始快照的訂閱,由用戶負(fù)責(zé)確保訂閱服務(wù)器上的表與發(fā)布服務(wù)器上的表同步,并且在執(zhí)行此存儲(chǔ)過程前沒有訂閱服務(wù)器掛起的未送達(dá)復(fù)制命令。
若要使匿名訂閱與發(fā)布重新同步,請(qǐng)將 all 或 NULL 作為 subscriber 傳遞。
事務(wù)復(fù)制支持項(xiàng)目級(jí)的訂閱重新初始化。當(dāng)項(xiàng)目被標(biāo)記為重新初始化后,在下一個(gè)同步過程中將在訂閱服務(wù)器上重新應(yīng)用項(xiàng)目快照。但是,如果有相關(guān)的項(xiàng)目也由同一個(gè)訂閱服務(wù)器訂閱,那么在項(xiàng)目上重新應(yīng)用快照可能會(huì)失敗,除非發(fā)布中的相關(guān)項(xiàng)目在某些情況下也自動(dòng)重新初始化:
只有 sysadmin 固定服務(wù)器角色成員、db_owner 固定數(shù)據(jù)庫角色成員或訂閱創(chuàng)建者才能執(zhí)行 sp_reinitsubscription。
相關(guān)文章