LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.