Поделиться через


sp_setsubscriptionxactseqno (Transact-SQL)

Используется во время диагностики для задания регистрационного номера следующей транзакции в журнале, подлежащей применению агентом распространителя на подписчике, что позволяет агенту пропустить транзакцию, вызвавшую сбой. Эта хранимая процедура выполняется на подписчике в базе данных подписки. Не поддерживается для подписчиков, отличных от подписчика SQL Server.

ms188764.Caution(ru-ru,SQL.90).gifВнимание!
Неверное использование этой хранимой процедуры или задание неправильного номера LSN может привести к тому, что агент распространителя отменит изменения, уже примененные на подписчике или пропустит все оставшиеся изменения.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

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 имеет тип varbinary(16) и не имеет значения по умолчанию.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Процедура sp_setsubscriptionxactseqno используется в репликации транзакций.

Процедура sp_setsubscriptionxactseqno не может использоваться в одноранговой топологии репликации транзакций.

Процедура sp_setsubscriptionxactseqno может использоваться для пропуска определенной транзакции, вызывающей ошибку при применении на подписчике. При наличии сбоя после остановки агента распространителя вызовите на распространителе процедуру sp_helpsubscriptionerrors (Transact-SQL) для получения значения xact_seqno поврежденной транзакции, затем вызовите процедуру sp_setsubscriptionxactseqno, передав это значение для xact_seqno. Тем самым будет обеспечена обработка только одной команды после этого номера LSN.

Для доставки всех ожидающих применения команд подписчику в базу данных распространителя задайте значение 0 для аргумента xact_seqno.

Если агент распространителя использует потоки нескольких подписок, процедура sp_setsubscriptionxactseqno может закончиться неудачей.

При возникновении этой ошибки необходимо запустить агент распространителя с потоком одной подписки. Дополнительные сведения см. в разделе Replication Distribution Agent.

Разрешения

Только члены фиксированной серверной роли sysadmin или фиксированной роли базы данных db_owner могут выполнять процедуру sp_setsubscriptionxactseqno.

Результирующий набор

Имя столбца Тип данных Описание

ORIGINAL XACT_SEQNO

varbinary(16)

Исходный номер LSN следующей транзакции, которая должна быть применена на подписчике.

UPDATED XACT_SEQNO

varbinary(16)

Обновленный номер LSN следующей транзакции, которая должна быть применена на подписчике.

SUBSCRIPTION STREAM COUNT

int

Количество потоков подписки, используемых во время последней синхронизации.

См. также

Другие ресурсы

Пропуск ошибок в репликации транзакций

Справка и поддержка

Получение помощи по SQL Server 2005