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