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.
Avance le numéro de séquence de base du journal. 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 le nouveau SequenceNumber de base pour le journal. Il doit être compris 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 base d'archive nouvelle ou existante du journal actif n'est pas valide.
- ou -
newBaseSequenceNumber
n'est pas compris entre le numéro de base et le dernier numéro de la séquence.
La requête n'a pas pu être exécutée en raison d'une exception d'E/S inattendue.
- ou -
La requête n'a pas pu être exécutée en raison d'une erreur de périphérique d'E/S.
Le journal spécifié n'a pas d'étendues. Une ou plusieurs étendues doivent être créées avant qu'une séquence d'enregistrement puisse être utilisée.
La méthode a été appelée après la suppression de la séquence.
La mémoire disponible n'est pas suffisante pour continuer l'exécution du programme.
L'accès à la séquence de journal spécifiée est refusé par le système d'exploitation.
La séquence d'enregistrement est complète.
Exemples
Cet exemple montre comment utiliser la méthode AdvanceBaseSequenceNumber avec l'événement TailPinned pour libérer de l'espace dans une séquence de journal.
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 TailPinned pour libérer de l'espace dans un enregistrement. L'événement TailPinned indique que la fin de la séquence (c'est-à-dire, le numéro de séquence de base) doit être avancée pour libérer de l'espace. Libérer de l'espace peut se faire soit en écrivant des zones de reprise à l'aide de la méthode WriteRestartArea, soit en tronquant le journal et en utilisant la méthode AdvanceBaseSequenceNumber pour avancer le numéro de séquence de base d'un journal à celui spécifié par le paramètre newBaseSequenceNumber
. L'exemple de code de la section Exemple illustre la deuxième approche.
Notez qu'appeler cette méthode revient à définir un nouveau numéro de séquence de base à l'aide de la méthode WriteRestartArea, à ceci près qu'aucun enregistrement de reprise n'est écrit dans le journal.