LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metodo

Definizione

Sposta il numero di sequenza di base del log in avanti. Questo metodo non può essere ereditato.

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)

Parametri

newBaseSequenceNumber
SequenceNumber

Specifica la nuova base SequenceNumber per il log. Deve trovarsi nell'intervallo compreso tra il numero di sequenza di base corrente e l'ultimo numero di sequenza del log in modo inclusivo.

Implementazioni

Eccezioni

newBaseSequenceNumber non è valido per questa sequenza.

Una parte finale o una base di archiviazione nuova o esistente del log attivo non è valida.

oppure

newBaseSequenceNumber non è compreso tra il numero di base e l'ultimo numero di sequenza di questa sequenza.

Impossibile eseguire la richiesta a causa di un'eccezione di I/O imprevista.

oppure

Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.

Il log specificato non dispone di extent. È necessario creare uno o più extent prima che venga usata una sequenza di record.

Il metodo è stato chiamato dopo che la sequenza è stata eliminata.

Memoria insufficiente per continuare l'esecuzione del programma.

L'accesso per la sequenza di log specificata viene negato dal sistema operativo.

La sequenza di record è piena.

Esempio

In questo esempio viene illustrato come usare il AdvanceBaseSequenceNumber metodo con l'evento TailPinned per liberare spazio in una sequenza di log.

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

}

Commenti

Questo metodo viene spesso usato con l'evento TailPinned per liberare spazio in un record. L'evento TailPinned indica che la parte finale della sequenza , ovvero il numero di sequenza di base, deve essere spostata in avanti per liberare spazio. Liberare spazio può essere eseguito scrivendo aree di riavvio usando il WriteRestartArea metodo o troncando il log e usando il AdvanceBaseSequenceNumber metodo per far avanzare il numero di sequenza di base di un log a quello specificato dal newBaseSequenceNumber parametro . L'esempio di codice nella sezione Esempio illustra il secondo approccio.

Si noti che la chiamata a questo metodo equivale all'impostazione di un nuovo numero di sequenza di base usando il WriteRestartArea metodo , ad eccezione del fatto che nel log non viene scritto alcun record di riavvio.

Si applica a