sp_repldone (Transact-SQL)

适用于: SQL Server Azure SQL 托管实例

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

注意

如果手动执行 sp_repldone ,则可以使传递的事务的顺序和一致性失效。 仅应根据经验丰富的复制支持专业人员的指示,对 sp_repldone 复制进行故障排除。

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_seqno为 binary(10),没有默认值。

[ @numtrans = ] numtrans

分布式事务数。 @numtrans为 int,无默认值。

[ @time = ] time

如果提供,则需要分配最后一批事务的毫秒数。 @time为 int,无默认值。

[ @reset = ] 重置

重置状态。 @reset为 int,无默认值。

  • 如果 1存在,则日志中的所有复制事务都标记为分布式。
  • 如果 0事务日志重置为第一个复制的事务,并且没有将复制的事务标记为分布式。

仅当@xactid和@xact_seqno都有效时@reset才NULL有效。

返回代码值

0(成功)或 1(失败)。

注解

sp_repldone 用于事务复制。

sp_repldone 日志读取器进程用于跟踪哪些事务已分发。

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

可以通过使用或获取所需的参数@xactid@xact_seqnosp_replcmdssp_repltrans

可以在紧急情况下使用此过程,以允许在有事务挂起复制时截断事务日志。 有关详细信息,请参阅示例部分。

权限

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

示例

@xactidNULL@xact_seqnoNULL,@reset1,日志中的所有复制事务都标记为分布式。 当事务日志中存在不再有效的复制事务并且想截断该日志时,此过程很有用,例如:

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