sp_setsubscriptionxactseqno (Transact-SQL)
Используется при устранении неполадок для задания регистрационного номера следующей транзакции в журнале, подлежащей применению агентом распространителя на подписчике, что позволяет агенту пропустить поврежденную транзакцию. Эта хранимая процедура выполняется на подписчике в базе данных подписки. Не поддерживается для подписчиков, отличных от подписчика 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
Номер xact_seqno для транзакции, вызвавшей ошибку на подписчике. Аргумент 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 (Transact-SQL) для получения значения xact_seqno поврежденной транзакции, затем вызовите процедуру sp_setsubscriptionxactseqno, передав это значение для xact_seqno. Тем самым будет обеспечена обработка только одной команды после этого номера LSN.
Для доставки всех ожидающих применения команд подписчику в базу данных распространителя задайте значение 0 для аргумента xact_seqno.
Если агент распространителя использует потоки нескольких подписок, процедура sp_setsubscriptionxactseqno может закончиться неудачей.
При возникновении этой ошибки необходимо запустить агент распространителя с потоком одной подписки. Дополнительные сведения см. в разделе Агент распространения репликации.
Разрешения
Только члены предопределенной роли сервера sysadmin или предопределенной роли базы данных db_owner могут выполнять процедуру sp_setsubscriptionxactseqno.
Журнал изменений
Обновленное содержимое |
---|
Изменено определение аргумента @xact_seqno. Этот аргумент должен содержать значение xact_seqno транзакции, которую не удается выполнить на подписчике. Ранее в определении ошибочно утверждалось, что этот параметр указывает на транзакцию, следующую после вызвавшей ошибку. |