LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee verplaatst u het basisreeksnummer van het logboek vooruit. Deze methode kan niet worden overgenomen.
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)
Parameters
- newBaseSequenceNumber
- SequenceNumber
Hiermee geeft u de nieuwe basis SequenceNumber voor het logboek. Dit moet in het bereik liggen tussen het huidige basisreeksnummer en het laatste volgnummer van het logboek.
Implementeringen
Uitzonderingen
newBaseSequenceNumber is niet geldig voor deze reeks.
Een nieuwe of bestaande archiefstaart of basis van het actieve logboek is ongeldig.
– of –
newBaseSequenceNumber ligt niet tussen de basis- en laatste reeksnummers van deze reeks.
De aanvraag kan niet worden uitgevoerd vanwege een onverwachte I/O-uitzondering.
– of –
De aanvraag kan niet worden uitgevoerd vanwege een I/O-apparaatfout.
Het opgegeven logboek heeft geen gebieden. Een of meer gebieden moeten worden gemaakt voordat een recordreeks kan worden gebruikt.
De methode is aangeroepen nadat de reeks is verwijderd.
Er is onvoldoende geheugen om door te gaan met de uitvoering van het programma.
De toegang voor de opgegeven logboekreeks wordt geweigerd door het besturingssysteem.
De recordreeks is vol.
Voorbeelden
In dit voorbeeld ziet u hoe u de AdvanceBaseSequenceNumber methode gebruikt met de TailPinned gebeurtenis om ruimte vrij te maken in een logboekreeks.
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);
}
Opmerkingen
Deze methode wordt vaak gebruikt met de TailPinned gebeurtenis om ruimte vrij te maken in een record. De TailPinned gebeurtenis geeft aan dat de staart van de reeks (dat wil gezegd het basisreeksnummer) vooruit moeten worden verplaatst om ruimte vrij te maken. Ruimte vrijmaken kan worden gedaan door opnieuw opstarten gebieden te schrijven met behulp van de WriteRestartArea methode, of door het logboek af te kapen en de AdvanceBaseSequenceNumber methode te gebruiken om het basisreeksnummer van een logboek door te zetten naar het logboek dat is opgegeven door de newBaseSequenceNumber parameter. Het codevoorbeeld in de sectie Voorbeeld demonstreert de tweede benadering.
Houd er rekening mee dat het aanroepen van deze methode hetzelfde is als het instellen van een nieuw basisreeksnummer met behulp van de WriteRestartArea methode, behalve dat er geen herstartrecord naar het logboek wordt geschreven.