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, за исключением того, что в журнале не регистрируется запись перезапуска.