LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Flyttar loggens bassekvensnummer framåt. Den här metoden kan inte ärvas.
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)
Parametrar
- newBaseSequenceNumber
- SequenceNumber
Anger den nya basen SequenceNumber för loggen. Detta måste ligga i intervallet mellan det aktuella bassekvensnumret och loggens sista sekvensnummer.
Implementeringar
Undantag
newBaseSequenceNumber är inte giltig för den här sekvensen.
En ny eller befintlig arkivstjärt eller bas för den aktiva loggen är ogiltig.
-eller-
newBaseSequenceNumber är inte mellan bas- och sista sekvensnumren i den här sekvensen.
Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.
-eller-
Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.
Den angivna loggen har inga omfattningar. En eller flera omfattningar måste skapas innan en postsekvens kan användas.
Metoden anropades efter att sekvensen har tagits bort.
Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.
Åtkomst för den angivna loggsekvensen nekas av operativsystemet.
Postsekvensen är full.
Exempel
Det här exemplet visar hur du använder AdvanceBaseSequenceNumber metoden med TailPinned händelsen för att frigöra utrymme i en loggsekvens.
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);
}
Kommentarer
Den här metoden används ofta med TailPinned händelsen för att frigöra utrymme i en post. Händelsen TailPinned anger att sekvensens svans (dvs. bassekvensnumret) måste flyttas framåt för att frigöra utrymme. Frigör utrymme kan göras genom att antingen skriva omstartsområden med hjälp av WriteRestartArea metoden eller trunkera loggen och använda AdvanceBaseSequenceNumber metoden för att föra fram bassekvensnumret för en logg till den som anges av parametern newBaseSequenceNumber . Kodexemplet i avsnittet Exempel visar den andra metoden.
Observera att det är samma sak att anropa den här metoden som att ange ett nytt bassekvensnummer med hjälp av WriteRestartArea metoden, förutom att ingen omstartspost skrivs till loggen.