LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Mueve el número de secuencia base del reenvío del registro. Este método no se puede heredar.
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 la nueva base SequenceNumber para el registro. Esto debe estar en el intervalo entre el número de secuencia base actual y el último número de secuencia del registro de forma inclusiva.
Implementaciones
Excepciones
newBaseSequenceNumber no es válido para esta secuencia.
Una cola o base de archivo nueva o existente del registro activo no es válida.
O bien
newBaseSequenceNumber no está entre los números de base y última secuencia de esta secuencia.
No se pudo realizar la solicitud debido a una excepción de E/S inesperada.
O bien
No se pudo realizar la solicitud debido a un error de dispositivo de E/S.
El registro especificado no tiene ninguna extensión. Se deben crear una o varias extensiones para poder usar una secuencia de registros.
Se llamó al método después de eliminar la secuencia.
No hay memoria suficiente para continuar con la ejecución del programa.
El sistema operativo deniega el acceso a la secuencia de registro especificada.
La secuencia de registros está llena.
Ejemplos
En este ejemplo se muestra cómo usar el AdvanceBaseSequenceNumber método con el TailPinned evento para liberar espacio en una secuencia de registro.
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);
}
Comentarios
Este método se usa a menudo con el TailPinned evento para liberar espacio en un registro. El TailPinned evento indica que la cola de la secuencia (es decir, el número de secuencia base) debe moverse hacia delante para liberar espacio. El espacio libre se puede realizar escribiendo áreas de reinicio mediante el WriteRestartArea método , o truncando el registro y usando el AdvanceBaseSequenceNumber método para avanzar el número de secuencia base de un registro al especificado por el newBaseSequenceNumber parámetro . El ejemplo de código de la sección Ejemplo muestra el segundo enfoque.
Tenga en cuenta que llamar a este método es el mismo que establecer un nuevo número de secuencia base mediante el WriteRestartArea método , excepto que no se escribe ningún registro de reinicio en el registro.