LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.