LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método

Definição

Move o número de sequência base do log para frente. Esse método não pode ser herdado.

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)

Parâmetros

newBaseSequenceNumber
SequenceNumber

Especifica a nova base SequenceNumber para o log. Isso deve estar no intervalo entre o número da sequência base atual e o último número de sequência do log, inclusive.

Implementações

Exceções

newBaseSequenceNumber não é válido para essa sequência.

Uma parte ou base de arquivo morto nova ou existente do log ativo é inválida.

- ou -

newBaseSequenceNumber não está entre os números base e de última sequência dessa sequência.

A solicitação não pôde ser executada devido a uma exceção inesperada de E/S.

- ou -

A solicitação não pôde ser executada devido a um erro de dispositivo de E/S.

O log especificado não tem nenhuma extensão. Uma ou mais extensões devem ser criadas antes que uma sequência de registros possa ser usada.

O método foi chamado depois que a sequência foi descartada.

Não há memória suficiente para continuar a execução do programa.

O acesso para a sequência de log especificada é negado pelo sistema operacional.

A sequência de registros está cheia.

Exemplos

Este exemplo mostra como usar o AdvanceBaseSequenceNumber método com o TailPinned evento para liberar espaço em uma sequência de logs.

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);

}

Comentários

Esse método geralmente é usado com o TailPinned evento para liberar espaço em um registro. O TailPinned evento indica que a parte final da sequência (ou seja, o número de sequência base) precisa ser movida para frente para liberar espaço. Liberar espaço pode ser feito gravando áreas de reinicialização usando o WriteRestartArea método ou truncando o log e usando o AdvanceBaseSequenceNumber método para avançar o número de sequência base de um log para o especificado pelo newBaseSequenceNumber parâmetro. O exemplo de código na seção Exemplo demonstra a segunda abordagem.

Observe que chamar esse método é o mesmo que definir um novo número de sequência base usando o WriteRestartArea método, exceto que nenhum registro de reinicialização é gravado no log.

Aplica-se a