sp_repldone (Transact-SQL)
适用于: SQL Server Azure SQL 托管实例
更新用于标识服务器的最后一个已分发事务的记录。 此存储过程在发布服务器上对发布数据库执行。
注意
如果手动执行 sp_repldone
,则可以使传递的事务的顺序和一致性失效。 仅应根据经验丰富的复制支持专业人员的指示,对 sp_repldone
复制进行故障排除。
语法
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为 int,无默认值。
- 如果
1
存在,则日志中的所有复制事务都标记为分布式。 - 如果
0
事务日志重置为第一个复制的事务,并且没有将复制的事务标记为分布式。
仅当@xactid和@xact_seqno都有效时,@reset才NULL
有效。
返回代码值
0
(成功)或 1
(失败)。
注解
sp_repldone
用于事务复制。
sp_repldone
日志读取器进程用于跟踪哪些事务已分发。
使用 sp_repldone
时,可以手动告知服务器已复制事务(发送到分发服务器)。 它还允许您更改被标记为下一个等待复制的事务。 您可以在已复制事务的列表中前后移动。 (所有小于或等于该事务的事务都将标记为已分发。)
可以通过使用或获取所需的参数@xactid和@xact_seqno。sp_replcmds
sp_repltrans
可以在紧急情况下使用此过程,以允许在有事务挂起复制时截断事务日志。 有关详细信息,请参阅示例部分。
权限
sysadmin 固定服务器角色或db_owner固定数据库角色的成员可以执行sp_repldone
。
示例
当@xactid为NULL
@xact_seqnoNULL
,@reset时1
,日志中的所有复制事务都标记为分布式。 当事务日志中存在不再有效的复制事务并且想截断该日志时,此过程很有用,例如:
EXEC sp_repldone
@xactid = NULL,
@xact_seqno = NULL,
@numtrans = 0,
@time = 0,
@reset = 1;