LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método

Definição

Move o número de sequência de base para a parte inicial do log. 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 o novo SequenceNumber de base para o log. Isso deve ficar no intervalo entre o número de sequência de base atual e o último número de sequência do log de modo inclusivo.

Implementações

Exceções

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

Uma cauda ou base de um arquivo novo ou existente do registro ativo é inválida.

- ou -

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

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

- ou -

Não foi possível executar a solicitação 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 de uma sequência de registro poder 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 foi 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 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);  

}  

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 da 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