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


sp_repldone (Transact-SQL)

Обновляет запись, которая идентифицирует последнюю распределенную транзакцию сервера. Эта хранимая процедура выполняется в базе данных публикации на издателе.

ПредупреждениеВнимание!

При выполнении хранимой процедуры sp_repldone вручную можно нарушить порядок и согласованность доставленных транзакций. Процедуру sp_repldone следует использовать только для диагностики репликации под руководством опытного специалиста по репликации.

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

Синтаксис

sp_repldone [ @xactid= ] xactid 
        , [ @xact_seqno= ] xact_seqno 
    [ , [ @numtrans= ] numtrans ] 
    [ , [ @time= ] time 
    [ , [ @reset= ] reset ]

Аргументы

  • [ @xactid=] xactid
    Регистрационный номер транзакции в журнале (номер LSN), содержащий первую запись последней распределенной транзакции сервера. Аргумент xactid имеет тип binary(10) и не имеет значения по умолчанию.

  • [ @xact_seqno=] xact_seqno
    Номер LSN, содержащий последнюю запись последней распределенной транзакции сервера. Аргумент xact_seqno имеет тип binary(10) и не имеет значения по умолчанию.

  • [ @numtrans=] numtrans
    Количество распределенных транзакций. Аргумент numtrans имеет тип int и не имеет значения по умолчанию.

  • [ @time=] time
    Количество миллисекунд, необходимых для распределения последнего пакета транзакций. Аргумент time имеет тип int и не имеет значения по умолчанию.

  • [ @reset=] reset
    Состояние переустановки. Аргумент reset имеет тип int и не имеет значения по умолчанию. Если он равен 1, все реплицированные транзакции в журнале отмечаются как распределенные. Если он равен 0, журнал транзакций устанавливается на первую реплицированную транзакцию, и никакие реплицированные транзакции не отмечаются как распределенные. Аргумент reset имеет силу только в том случае, если параметры xactid и xact_seqno имеют значение NULL.

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

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

Замечания

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

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

С помощью процедуры sp_repldone можно вручную сообщить серверу, что транзакция была реплицирована (отправлена распространителю). Кроме того, эта процедура позволяет изменить транзакцию, отмеченную в качестве следующей транзакции, подлежащей репликации. По списку реплицированных транзакций можно перемещаться вперед и назад. (Все транзакции, номера которых не превышают номера этой транзакции, отмечаются как распределенные.)

Требуемые параметры xactid и xact_seqno можно получить при помощи хранимой процедуры sp_repltrans или sp_replcmds.

Разрешения

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

Примеры

Если аргументы xactid и xact_seqno имеют значения NULL, а аргумент reset1, то все реплицированные транзакции в журнале отмечаются как распределенные. Это полезно, если в журнале транзакций имеются реплицированные транзакции, ставшие недействительными, и нужно усечь журнал, например:

EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0,     @time = 0, @reset = 1
ПредупреждениеВнимание!

Данную процедуру можно использовать в аварийных случаях для усечения журнала транзакций при наличии транзакций, ожидающих репликации. Применение этой процедуры не позволяет Microsoft SQL Server 2000 реплицировать базу данных до отмены ее публикации и повторной публикации.