sp_setsubscriptionxactseqno (Transact-SQL)

适用于SQL Server

在故障排除期间使用日志序列号(LSN)指定上次传递的事务,从而允许分发代理在下一个事务中开始传递。 重启后,分发代理从分发数据库缓存(msrepl_commands)返回大于此水印(LSN)的事务。 此存储过程在订阅服务器的订阅数据库中执行。 非 SQL Server 订阅服务器不支持该过程。

注意

如果未正确使用此存储过程或指定了错误的 LSN 值,则将导致分发代理还原已应用于订阅服务器的更改,或跳过所有剩余的更改。

Transact-SQL 语法约定

语法

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_dbsysname,无默认值。 对于非 SQL Server 发布服务器, @publisher_db 是分发数据库的名称。

[ @publication = ] N'publication'

发布的名称。 @publicationsysname,无默认值。 当多个发布共享分发代理时,必须为@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