LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metodo

Definizione

Sposta in avanti il numero di sequenza di base del log.Moves the base sequence number of the log forward. Questo metodo non può essere ereditato.This method cannot be inherited.

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.Specifies the new base SequenceNumber for the log. Deve essere compreso tra il numero di sequenza di base corrente e l'ultimo numero di sequenza del log inclusi.This must lie in the range between the current base sequence number and the last sequence number of the log inclusively.

Implementazioni

Eccezioni

newBaseSequenceNumber non è valido per questa sequenza.newBaseSequenceNumber is not valid for this sequence.

Una coda o base di archivio nuova o esistente del log attivo non è valida.A new or existing archive tail or base of the active log is invalid.

-oppure--or- newBaseSequenceNumber non è compreso tra i numeri di sequenza di base e finale di questa sequenza.newBaseSequenceNumber is not between the base and last sequence numbers of this sequence.

Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.The request could not be performed because of an unexpected I/O exception.

-oppure--or-

Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.The request could not be performed because of an I/O device error.

Nel log specificato non esistono extent.The specified log does not have any extents. Prima di utilizzare una sequenza di record, è necessario creare uno o più extent.One or more extents must be created before a record sequence may be used.

Il metodo è stato chiamato dopo l'eliminazione sequenza.The method was called after the sequence has been disposed of.

Memoria insufficiente per continuare l'esecuzione del programma.There is not enough memory to continue the execution of the program.

L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.Access for the specified log sequence is denied by the operating system.

Sequenza di record piena.The record sequence is full.

Esempi

In questo esempio viene illustrato come utilizzare il metodo AdvanceBaseSequenceNumber con l'evento TailPinned per liberare spazio in una sequenza del log.This example shows how to use the AdvanceBaseSequenceNumber method with the TailPinned event to free up space in a log sequence.

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.This method is often used with the TailPinned event to free up space in a 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.The TailPinned event indicates that the tail of the sequence (that is, the base sequence number) needs to be moved forward to free up space. 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.Freeing space can be done by either writing restart areas using the WriteRestartArea method, or truncating the log and using the AdvanceBaseSequenceNumber method to advance the base sequence number of a log to the one specified by the newBaseSequenceNumber parameter. Il codice riportato nella sezione relativa agli esempi illustra la seconda possibilità.The code sample in the Example section demonstrates the second approach.

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.Note that calling this method is the same as setting a new base sequence number using the WriteRestartArea method, except that no restart record is written to the log.

Si applica a