更新标识服务器的上次分布式事务的记录。此存储过程在发布服务器的发布数据库上执行。
sp_repldone [ @xactid = ] xactid
,
[ @xact_seqno = ] xact_seqno
[ , [ @numtrans = ] numtrans ]
[ , [ @time = ] time
[ , [ @reset = ] reset ]
[@xactid =] xactid
是服务器上次分布式事务的第一个记录的日志序列号 (LSN)。xactid 的数据类型为 binary(10),无默认值。
[@xact_seqno =] xact_seqno
是服务器上次分布式事务的最后一个记录的日志序列号 (LSN)。xact_seqno 的数据类型为 binary(10),无默认值。
[@numtrans =] numtrans
是分发的事务数。numtrans 的数据类型为 int,无默认值。
[@time =] time
是分发上一批事务所需的毫秒数(如果提供)。time 的数据类型为 int,无默认值。
[@reset =] reset
是重置状态。reset 的数据类型为 int,无默认值。如果是 1,则日志中的所有复制事务都标记为已分发。如果是 0,则事务日志重置为第一个复制事务并且复制事务不标记为已分发。仅当 xactid 和 xact_seqno 均为 NULL 时 reset 才有效。
0(成功)或 1(失败)
sp_repldone 用于事务复制。
sp_repldone 由日志读取器进程用来跟踪已分发的事务。
注意 如果手工执行 sp_repldone,可以使已传送事务的顺序和一致性无效。
通过使用 sp_repldone,可以手工告诉服务器某个事务已复制(已发送到分发服务器)。此过程还使您得以更改标记为下一个等待复制的事务。可以在复制事务列表中前后移动。(小于或等于那个事务的所有事务都标记为已分发。)
可以通过使用 sp_repltrans 或 sp_replcmds 获得必需的参数 xactid 和 xact_seqno。
sysadmin 固定服务器角色成员或 db_owner 固定数据库角色成员可以执行 sp_repldone。
当 xactid 为 NULL、xact_seqno 为 NULL 并且 reset 是 1 时,日志中的所有复制事务都标记为已分发。此过程在事务日志中存在不再有效的复制事务并且想截断该日志时很有用,例如:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
注意 可以在紧急情况下使用此过程,以允许在有事务挂起复制时截断事务日志。使用此过程可防止 Microsoft® SQL Server™ 2000 在未发布和重新发布数据库之前复制数据库。
相关文章