LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Przenosi numer sekwencji podstawowej dziennika do przodu. Nie można dziedziczyć tej metody.
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)
Parametry
- newBaseSequenceNumber
- SequenceNumber
Określa nową bazę SequenceNumber dziennika. Musi to znajdować się w zakresie między bieżącym numerem sekwencji podstawowej a ostatnim numerem sekwencji dziennika włącznie.
Implementuje
Wyjątki
newBaseSequenceNumber
jest nieprawidłowa dla tej sekwencji.
Nowy lub istniejący archiwum ogon lub baza aktywnego dziennika jest nieprawidłowa.
-lub-
newBaseSequenceNumber
nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.
Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.
-lub-
Nie można wykonać żądania z powodu błędu urządzenia we/wy.
Określony dziennik nie ma żadnych zakresów. Przed zastosowaniem sekwencji rekordów należy utworzyć co najmniej jeden zakres.
Metoda została wywołana po usunięciu sekwencji.
Za mało pamięci, aby kontynuować wykonywanie programu.
Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.
Sekwencja rekordów jest pełna.
Przykłady
W tym przykładzie pokazano, jak używać AdvanceBaseSequenceNumber metody ze TailPinned zdarzeniem, aby zwolnić miejsce w sekwencji dzienników.
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);
}
Uwagi
Ta metoda jest często używana z zdarzeniem TailPinned , aby zwolnić miejsce w rekordzie. Zdarzenie TailPinned wskazuje, że ogon sekwencji (czyli numer sekwencji podstawowej) musi zostać przeniesiony do przodu, aby zwolnić miejsce. Zwolnij miejsce można zrobić, zapisując obszary ponownego uruchamiania przy użyciu WriteRestartArea metody lub obcinając dziennik i używając AdvanceBaseSequenceNumber metody w celu przyspieszenia numeru sekwencji bazowej dziennika do jednego określonego newBaseSequenceNumber
przez parametr . Przykładowy kod w sekcji Przykład przedstawia drugie podejście.
Należy pamiętać, że wywołanie tej metody jest takie samo jak ustawienie nowego numeru sekwencji podstawowej przy użyciu WriteRestartArea metody, z wyjątkiem tego, że żaden rekord ponownego uruchomienia nie jest zapisywany w dzienniku.