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, а аргумент reset — 1, то все реплицированные транзакции в журнале отмечаются как распределенные. Это полезно, если в журнале транзакций имеются реплицированные транзакции, ставшие недействительными, и нужно усечь журнал, например:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
Внимание! |
---|
Данную процедуру можно использовать в аварийных случаях для усечения журнала транзакций при наличии транзакций, ожидающих репликации. |