sp_repldone (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

更新用于标识服务器的最后一个已分发事务的记录。 此存储过程在发布服务器上对发布数据库执行。

注意

如果手动执行 sp_repldone ,则可以使传递的事务的顺序和一致性失效。 sp_repldone应仅用于故障排除副本 (replica),由经验丰富的副本 (replica)支持专业人员指示。

Transact-SQL 语法约定

语法

sp_repldone [ @xactid= ] xactid   
        , [ @xact_seqno= ] xact_seqno   
    [ , [ @numtrans= ] numtrans ]   
    [ , [ @time= ] time   
    [ , [ @reset= ] reset ]  

参数

[ @xactid = ] xactid 服务器最后一个分布式事务的第一条记录的日志序列号(LSN)。 xactidbinary(10),没有默认值。

[ @xact_seqno = ] xact_seqno 服务器最后一个分布式事务的最后一条记录的 LSN。 xact_seqnobinary(10),没有默认值。

[ @numtrans = ] numtrans 分布式事务数。 numtransint,无默认值。

[ @time = ] time 分配最后一批事务所需的毫秒数(如果提供)。 时间int,无默认值。

[ @reset = ] reset 重置状态。 重置int,无默认值。 如果为 1,则日志中的所有副本 (replica)事务都标记为分布式。 如果为 0,则事务日志将重置为第一个副本 (replica)事务,并且没有副本 (replica)事务被标记为分布式。 仅当 xactidxact_seqno 均为 NULL 时,重置才有效。

返回代码值

0 (成功) 或 1 (失败)

备注

sp_repldone用于事务副本 (replica)。

日志读取器进程使用sp_repldone来跟踪已分发的事务。

使用sp_repldone,可以手动告知服务器已副本 (replica)事务(发送到分发服务器)。 它还允许您更改被标记为下一个等待复制的事务。 您可以在已复制事务的列表中前后移动。 (所有小于或等于该事务的事务都将标记为已分发。)

可以使用sp_repltranssp_replcmds获取所需的参数 xactidxact_seqno

权限

sysadmin 固定服务器角色的成员或db_owner固定数据库角色的成员可以执行sp_repldone

示例

xactid 为 NULL 时,xact_seqno为 NULL,并且重置1,日志中的所有副本 (replica)事务都标记为分布式。 当事务日志中存在不再有效的复制事务并且想截断该日志时,此过程很有用,例如:

EXEC sp_repldone @xactid = NULL, @xact_seqno = NULL, @numtrans = 0, @time = 0, @reset = 1  

注意

可以在紧急情况下使用此过程,以允许在有事务挂起复制时截断事务日志。

另请参阅

sp_replcmds (Transact-SQL)
sp_replflush (Transact-SQL)
sp_repltrans (Transact-SQL)
系统存储过程 (Transact-SQL)