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

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