Condividi tramite


LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metodo

Definizione

Sposta in avanti il numero di sequenza di base del log. 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 il nuovo SequenceNumber di base per il log. Deve essere compreso tra il numero di sequenza di base corrente e l'ultimo numero di sequenza del log inclusi.

Implementazioni

Eccezioni

newBaseSequenceNumber non è valido per questa sequenza.

Una coda o base di archivio nuova o esistente del log attivo non è valida.

-oppure-

newBaseSequenceNumber non è compreso tra i numeri di sequenza di base e finale di questa sequenza.

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

-oppure-

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

Nel log specificato non esistono extent. Prima di utilizzare una sequenza di record, è necessario creare uno o più extent.

Il metodo è stato chiamato dopo l'eliminazione sequenza.

Memoria insufficiente per continuare l'esecuzione del programma.

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

Sequenza di record piena.

Esempio

In questo esempio viene illustrato come utilizzare il metodo AdvanceBaseSequenceNumber con l'evento TailPinned per liberare spazio in una sequenza del 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 utilizzato con l'evento TailPinned per liberare spazio in un record. L'evento TailPinned indica che la coda della sequenza (ovvero il numero di sequenza di base) deve essere spostata in avanti per liberare spazio. Il recupero dello spazio può essere ottenuto scrivendo aree di riavvio mediante il metodo WriteRestartArea o troncando il log e utilizzando il metodo AdvanceBaseSequenceNumber per spostare in avanti il numero di sequenza di base di un log a quello specificato dal parametro newBaseSequenceNumber. Il codice riportato nella sezione relativa agli esempi illustra la seconda possibilità.

Si noti che la chiamata a questo metodo corrisponde all'impostazione di un nuovo numero di sequenza di base utilizzando il metodo WriteRestartArea, con la differenza che nessun record di riavvio viene scritto nel log.

Si applica a