LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Метод

Определение

Перемещает базовый порядковый номер журнала вперед. Этот метод нельзя наследовать.

public:
 virtual void AdvanceBaseSequenceNumber(System::IO::Log::SequenceNumber newBaseSequenceNumber);
public void AdvanceBaseSequenceNumber(System.IO.Log.SequenceNumber newBaseSequenceNumber);
abstract member AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
override this.AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
Public Sub AdvanceBaseSequenceNumber (newBaseSequenceNumber As SequenceNumber)

Параметры

newBaseSequenceNumber
SequenceNumber

Задает новую базу SequenceNumber для журнала. Это должно быть в диапазоне между текущим базовым порядковым номером и последним порядковым номером журнала включительно.

Реализации

Исключения

newBaseSequenceNumber недопустимо для этой последовательности.

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

–или–

newBaseSequenceNumber не находится между базовыми и последними номерами последовательности этой последовательности.

Не удалось выполнить запрос из-за неожиданного исключения ввода-вывода.

–или–

Не удалось выполнить запрос из-за ошибки устройства ввода-вывода.

Указанный журнал не имеет экстентов. Перед использованием последовательности записей необходимо создать один или несколько экстентов.

Метод был вызван после удаления последовательности.

Недостаточно памяти для продолжения выполнения программы.

Доступ к указанной последовательности журналов запрещен операционной системой.

Последовательность записей заполнена.

Примеры

В этом примере показано, как использовать AdvanceBaseSequenceNumber метод с TailPinned событием для освобождения места в последовательности журналов.

recordSequence.RetryAppend = true;
recordSequence.TailPinned += new EventHandler<TailPinnedEventArgs>(HandleTailPinned);

void HandleTailPinned(object sender, TailPinnedEventArgs tailPinnedEventArgs)
{
   // tailPinnedEventArgs.TargetSequenceNumber is the target
   // sequence number to free up space to.
   // However, this sequence number is not necessarily valid.  We have
   // to use this sequence number as a starting point for finding a
   // valid point within the log to advance toward. You need to
   // identify a record with a sequence number equal to, or greater
   // than TargetSequenceNumber; let's call this
   // realTargetSequenceNumber. Once found, move the base

   recordSequence.AdvanceBaseSequenceNumber(realTargetSequenceNumber);

}

Комментарии

Этот метод часто используется с событием TailPinned для освобождения места в записи. Событие TailPinned указывает, что хвост последовательности (то есть базовый номер последовательности) необходимо переместить вперед, чтобы освободить место. Освобождение места можно сделать путем записи областей перезапуска с помощью WriteRestartArea метода или усечения журнала и использования AdvanceBaseSequenceNumber метода для перемещения базового номера последовательности журнала в один из указанных параметром newBaseSequenceNumber . Пример кода в разделе "Пример" демонстрирует второй подход.

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

Применяется к