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