LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Déplace le numéro de séquence de base du journal vers l’avant. Cette méthode ne peut pas être héritée.
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)
Paramètres
- newBaseSequenceNumber
- SequenceNumber
Spécifie la nouvelle base SequenceNumber du journal. Cela doit se trouver dans la plage entre le numéro de séquence de base actuel et le dernier numéro de séquence du journal inclus.
Implémente
Exceptions
newBaseSequenceNumber n’est pas valide pour cette séquence.
Une fin ou une base d’archivage nouvelle ou existante du journal actif n’est pas valide.
- ou -
newBaseSequenceNumber n’est pas compris entre les nombres de base et de dernière séquence de cette séquence.
Impossible d’effectuer la requête en raison d’une exception d’E/S inattendue.
- ou -
Impossible d’effectuer la requête en raison d’une erreur d’appareil d’E/S.
Le journal spécifié n’a aucune étendue. Une ou plusieurs étendues doivent être créées avant qu’une séquence d’enregistrements puisse être utilisée.
La méthode a été appelée après la suppression de la séquence.
Il n’y a pas assez de mémoire pour poursuivre l’exécution du programme.
L’accès pour la séquence de journaux spécifiée est refusé par le système d’exploitation.
La séquence d’enregistrements est pleine.
Exemples
Cet exemple montre comment utiliser la méthode avec l’événement pour libérer de l’espace AdvanceBaseSequenceNumberTailPinned dans une séquence de journaux.
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);
}
Remarques
Cette méthode est souvent utilisée avec l’événement pour libérer de l’espace TailPinned dans un enregistrement. L’événement TailPinned indique que la fin de la séquence (autrement dit, le numéro de séquence de base) doit être déplacée vers l’avant pour libérer de l’espace. Vous pouvez libérer de l’espace en écrivant des zones de redémarrage à l’aide de la WriteRestartArea méthode, ou en tronquant le journal et en tronquant la AdvanceBaseSequenceNumber méthode pour faire avancer le numéro de séquence de base d’un journal vers celui spécifié par le newBaseSequenceNumber paramètre. L’exemple de code de la section Exemple illustre la deuxième approche.
Notez que l’appel de cette méthode est identique à la définition d’un nouveau numéro de séquence de base à l’aide de la WriteRestartArea méthode, sauf qu’aucun enregistrement de redémarrage n’est écrit dans le journal.