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


sp_setsubscriptionxactseqno (Transact-SQL)

Область применения: SQL Server

Используется во время устранения неполадок, чтобы указать последнюю доставленную транзакцию с помощью номера последовательности журнала (LSN), что позволяет агент распространения начать доставку в следующую транзакцию. После перезапуска агент распространения возвращает транзакции больше, чем этот водяной знак (LSN) из кэша базы данных распространителя (msrepl_commands). Эта хранимая процедура выполняется на подписчике в базе данных подписки. Не поддерживается для подписчиков, отличных от подписчика 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_db — sysname без значения по умолчанию. Для издателя, отличного от SQL Server, @publisher_db — это имя базы данных распространителя.

[ @publication = ] N'publication'

Имя публикации. @publication — sysname без значения по умолчанию. Если несколько публикаций совместно использует агент распространения, необходимо указать значение ALL для @publication.

[ @xact_seqno = ] xact_seqno

LSN следующей транзакции на распространителю, применяемой на подписчике. @xact_seqno — varbinary(16), без значения по умолчанию.

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

Имя столбца Тип данных Description
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.

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

sp_setsubscriptionxactseqnoМожет завершиться ошибкой, если агент распространения использует потоки с несколькими подписками.

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

Разрешения

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