sp_setsubscriptionxactseqno (Transact-SQL)
适用于:SQL Server
在故障排除期间使用日志序列号(LSN)指定上次传递的事务,从而允许分发代理在下一个事务中开始传递。 重启后,分发代理从分发数据库缓存(msrepl_commands)返回大于此水印(LSN)的事务。 此存储过程在订阅服务器的订阅数据库中执行。 非 SQL Server 订阅服务器不支持该过程。
注意
如果未正确使用此存储过程或指定了错误的 LSN 值,则将导致分发代理还原已应用于订阅服务器的更改,或跳过所有剩余的更改。
语法
sp_setsubscriptionxactseqno
[ @publisher = ] N'publisher'
, [ @publisher_db = ] N'publisher_db'
, [ @publication = ] N'publication'
, [ @xact_seqno = ] xact_seqno
[ ; ]
参数
[ @publisher = ] N'publisher'
发布服务器的名称。 @publisher为 sysname,无默认值。
[ @publisher_db = ] N'publisher_db'
发布数据库的名称。 @publisher_db 为 sysname,无默认值。 对于非 SQL Server 发布服务器, @publisher_db 是分发数据库的名称。
[ @publication = ] N'publication'
发布的名称。 @publication 为 sysname,无默认值。 当多个发布共享分发代理时,必须为@publication指定值。ALL
[ @xact_seqno = ] xact_seqno
要应用于订阅服务器的下一个事务的 LSN。 @xact_seqno为 varbinary(16),没有默认值。
结果集
列名称 | 数据类型 | 描述 |
---|---|---|
ORIGINAL XACT_SEQNO |
varbinary(16) | 要应用于订阅服务器的下一个事务的原始 LSN。 |
UPDATED XACT_SEQNO |
varbinary(16) | 要应用于订阅服务器的下一个事务的更新后的 LSN。 |
SUBSCRIPTION STREAM COUNT |
int | 上次同步期间使用的订阅流数。 |
返回代码值
0
(成功)或 1
(失败)。
注解
sp_setsubscriptionxactseqno
用于事务复制。
sp_setsubscriptionxactseqno
不能在对等事务复制拓扑中使用。
sp_setsubscriptionxactseqno
可用于跳过在订阅服务器上应用时导致错误的特定事务。 发生故障后,分发代理停止后,请在分发服务器上调用sp_helpsubscriptionerrors以检索xact_seqno
失败事务的值,然后调用sp_setsubscriptionxactseqno
,为@xact_seqno传递此值。 这可确保仅处理此 LSN 后的命令。
指定@xact_seqno的值0
,以将分发数据库中的所有挂起命令传递到订阅服务器。
sp_setsubscriptionxactseqno
如果分发代理使用多订阅流,则可能会失败。
如果出现此错误,必须运行使用单个订阅流的分发代理。 有关详细信息,请参阅 Replication Distribution Agent。
权限
只有 sysadmin 固定服务器角色的成员或db_owner固定数据库角色的成员才能执行sp_setsubscriptionxactseqno
。