LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Avança o número base da sequência do log. Este 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 tronco. Este deve situar-se no intervalo entre o número de 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 esta sequência.
Uma cauda ou base de arquivo nova ou existente do registo ativo é inválida.
-ou-
newBaseSequenceNumber não está entre os números base e último desta sequência.
O pedido não pôde ser realizado devido a uma exceção inesperada de I/O.
-ou-
O pedido não pôde ser realizado devido a um erro no dispositivo de E/S.
O registo especificado não tem quaisquer extensões. Uma ou mais extensões devem ser criadas antes de poder ser utilizada uma sequência de registos.
O método era chamado depois de a sequência ter sido eliminada.
Não há memória suficiente para continuar a execução do programa.
O acesso para a sequência de registo especificada é negado pelo sistema operativo.
A sequência de discos está cheia.
Exemplos
Este exemplo mostra como usar o AdvanceBaseSequenceNumber método com o TailPinned evento para libertar espaço numa sequência logarítmica.
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);
}
Observações
Este método é frequentemente usado com o TailPinned evento para libertar espaço num registo. O TailPinned evento indica que a cauda da sequência (isto é, o número base da sequência) precisa de ser movida para a frente para libertar espaço. Libertar espaço pode ser feito escrevendo áreas de reinício usando o WriteRestartArea método, ou truncando o log e usando o AdvanceBaseSequenceNumber método para avançar o número base da sequência de um log para o especificado pelo newBaseSequenceNumber parâmetro. O exemplo de código na secção de Exemplo demonstra a segunda abordagem.
Note que chamar este método é o mesmo que definir um novo número base de sequência usando o WriteRestartArea método, exceto que nenhum registo de reinício é escrito no log.