LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Methode

Definition

Verschiebt die Basissequenznummer des Protokolls vorwärts. Diese Methode kann nicht geerbt werden.

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)

Parameter

newBaseSequenceNumber
SequenceNumber

Gibt die neue Basis SequenceNumber für das Protokoll an. Dies muss sich im Bereich zwischen der aktuellen Basissequenznummer und der letzten Sequenznummer des inklusiven Protokolls befinden.

Implementiert

Ausnahmen

newBaseSequenceNumber ist für diese Sequenz ungültig.

Ein neuer oder vorhandener Archivschwanz oder eine Basis des aktiven Protokolls ist ungültig.

-oder-

newBaseSequenceNumber ist nicht zwischen der Basis- und der letzten Sequenznummer dieser Sequenz.

Die Anforderung konnte aufgrund einer unerwarteten E/A-Ausnahme nicht ausgeführt werden.

-oder-

Die Anforderung konnte aufgrund eines E/A-Gerätefehlers nicht ausgeführt werden.

Das angegebene Protokoll hat keine Ausdehnungen. Mindestens eine Erweiterung muss erstellt werden, bevor eine Datensatzsequenz verwendet werden kann.

Die Methode wurde aufgerufen, nachdem die Sequenz verworfen wurde.

Es ist nicht genügend Arbeitsspeicher vorhanden, um die Ausführung des Programms fortzusetzen.

Der Zugriff auf die angegebene Protokollsequenz wird vom Betriebssystem verweigert.

Die Datensatzsequenz ist voll.

Beispiele

In diesem Beispiel wird gezeigt, wie die AdvanceBaseSequenceNumber Methode mit dem TailPinned Ereignis verwendet wird, um Speicherplatz in einer Protokollsequenz freizugeben.

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);

}

Hinweise

Diese Methode wird häufig mit dem TailPinned Ereignis verwendet, um Speicherplatz in einem Datensatz freizugeben. Das TailPinned Ereignis gibt an, dass der Tail der Sequenz (d. h. die Basissequenznummer) vorwärts verschoben werden muss, um Speicherplatz freizugeben. Das Freigeben von Speicherplatz kann entweder durch Schreiben von Neustartbereichen mithilfe der WriteRestartArea Methode erfolgen oder das Abschneiden des Protokolls und die Verwendung der AdvanceBaseSequenceNumber Methode, um die Basissequenznummer eines Protokolls auf die durch den newBaseSequenceNumber Parameter angegebene zu setzen. Das Codebeispiel im Beispielabschnitt veranschaulicht den zweiten Ansatz.

Beachten Sie, dass das Aufrufen dieser Methode mit dem Festlegen einer neuen Basissequenznummer mit der WriteRestartArea Methode identisch ist, mit der Ausnahme, dass kein Neustartdatensatz in das Protokoll geschrieben wird.

Gilt für: