更新標(biāo)識(shí)服務(wù)器的上次分布式事務(wù)的記錄。此存儲(chǔ)過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_repldone [ @xactid = ] xactid
,
[ @xact_seqno = ] xact_seqno
[ , [ @numtrans = ] numtrans ]
[ , [ @time = ] time
[ , [ @reset = ] reset ]
[@xactid =] xactid
是服務(wù)器上次分布式事務(wù)的第一個(gè)記錄的日志序列號(hào) (LSN)。xactid 的數(shù)據(jù)類型為 binary(10),無默認(rèn)值。
[@xact_seqno =] xact_seqno
是服務(wù)器上次分布式事務(wù)的最后一個(gè)記錄的日志序列號(hào) (LSN)。xact_seqno 的數(shù)據(jù)類型為 binary(10),無默認(rèn)值。
[@numtrans =] numtrans
是分發(fā)的事務(wù)數(shù)。numtrans 的數(shù)據(jù)類型為 int,無默認(rèn)值。
[@time =] time
是分發(fā)上一批事務(wù)所需的毫秒數(shù)(如果提供)。time 的數(shù)據(jù)類型為 int,無默認(rèn)值。
[@reset =] reset
是重置狀態(tài)。reset 的數(shù)據(jù)類型為 int,無默認(rèn)值。如果是 1,則日志中的所有復(fù)制事務(wù)都標(biāo)記為已分發(fā)。如果是 0,則事務(wù)日志重置為第一個(gè)復(fù)制事務(wù)并且復(fù)制事務(wù)不標(biāo)記為已分發(fā)。僅當(dāng) xactid 和 xact_seqno 均為 NULL 時(shí) reset 才有效。
0(成功)或 1(失?。?/P>
sp_repldone 用于事務(wù)復(fù)制。
sp_repldone 由日志讀取器進(jìn)程用來跟蹤已分發(fā)的事務(wù)。
注意 如果手工執(zhí)行 sp_repldone,可以使已傳送事務(wù)的順序和一致性無效。
通過使用 sp_repldone,可以手工告訴服務(wù)器某個(gè)事務(wù)已復(fù)制(已發(fā)送到分發(fā)服務(wù)器)。此過程還使您得以更改標(biāo)記為下一個(gè)等待復(fù)制的事務(wù)。可以在復(fù)制事務(wù)列表中前后移動(dòng)。(小于或等于那個(gè)事務(wù)的所有事務(wù)都標(biāo)記為已分發(fā)。)
可以通過使用 sp_repltrans 或 sp_replcmds 獲得必需的參數(shù) xactid 和 xact_seqno。
sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員可以執(zhí)行 sp_repldone。
當(dāng) xactid 為 NULL、xact_seqno 為 NULL 并且 reset 是 1 時(shí),日志中的所有復(fù)制事務(wù)都標(biāo)記為已分發(fā)。此過程在事務(wù)日志中存在不再有效的復(fù)制事務(wù)并且想截?cái)嘣撊罩緯r(shí)很有用,例如:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
注意 可以在緊急情況下使用此過程,以允許在有事務(wù)掛起復(fù)制時(shí)截?cái)嗍聞?wù)日志。使用此過程可防止 Microsoft® SQL Server™ 2000 在未發(fā)布和重新發(fā)布數(shù)據(jù)庫之前復(fù)制數(shù)據(jù)庫。
相關(guān)文章