Compartir a través de


Prácticas recomendadas para recuperar una base de datos a un punto de recuperación específico

Este tema solamente es relevante para las bases de datos de SQL Server que utilizan el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros. Presenta algunos procedimientos recomendados para restaurar una base de datos en un punto de recuperación específico (un momento dado, una transacción marcada o un número de secuencia de registro (LSN)).

Usar STANDBY para encontrar un momento dado desconocido

A veces desea restaurar una base de datos en un momento dado específico, pero no sabe exactamente el momento dado que mejor se adapta al objetivo de recuperación (es decir, el punto de recuperación óptimo). Para encontrar este punto de recuperación, puede usar RESTORE … WITH STANDBY **=**standby_file_name junto con una cláusula STOPAT cuyo momento de destino precede al punto de recuperación que busca. Una operación de restauración STANDBY recupera la base de datos para acceso de solo lectura, permitiéndole inspeccionar la base de datos para buscar el punto de recuperación óptimo.

Mediante el uso de series de operaciones de restauración STANDBY puede poner al día incrementalmente el archivo de datos principal (y, opcionalmente, otros archivos de datos) hasta que encuentre el punto de recuperación óptimo. Después de haber identificado el punto de recuperación óptimo, puede volver a poner al día la base de datos, especificando WITH STOPAT con el fin de especificar el punto de recuperación óptimo como el momento dado de destino. Al llegar este momento dado de destino, restaure la base de datos parcial mediante la opción WITH RECOVERY.

A partir de entonces, los archivos restantes, si los hay, se podrán restaurar y recuperar para que sean coherentes con la base de datos. Después de restaurar la última restauración completa del registro, restaure la primera copia de seguridad de registros realizada después del punto de recuperación de destino.

Para obtener más información sobre la opción STANDBY, vea RESTORE (argumentos, Transact-SQL).

Especificar el momento dado al principio de una secuencia de restauración

Una secuencia de restauración está formada por una o más operaciones de restauración que mueven los datos mediante una o varias fases de restauración. Cuanta más información proporcione acerca de la intención de la secuencia, menos probabilidad tendrá de obtener errores que podrían obligarle a volver a empezar. Para la restauración a un momento dado, SQL Server Database Engine (Motor de base de datos de SQL Server) utiliza la información especificada durante y al principio de una secuencia de restauración para identificar el objetivo del momento dado de la restauración. Si se espera demasiado en la secuencia, ésta genera un error. Debe proporcionar la información de detención en un momento dado lo suficientemente pronto en la secuencia de restauración para asegurarse de que la restauración no va más allá de su objetivo de momento dado.

Si pretende detenerse en un punto de recuperación determinado, debe comunicar esta intención en cada instrucción RESTORE LOG (con STOPAT, STOPBEFOREMARK o STOPATMARK), junto con la opción RECOVERY. Cuando las opciones RECOVERY y STOPAT se utilizan juntas, si la copia de seguridad del registro de transacciones no contiene la hora requerida (por ejemplo, si la hora especificada está fuera de los límites del intervalo cubierto por el registro de transacciones), se genera una advertencia y no se recupera la base de datos. Cuando se alcanza el punto de recuperación, se recupera la base de datos y se produce un error al intentar restaurar otra copia de seguridad de registros. Si utiliza las opciones RECOVERY y STOPAT juntas al restaurar una copia de seguridad de registros, se asegura de que ninguna restauración del registro vaya más allá del momento de detención.

Nota importanteImportante

Si una secuencia de restauración parcial excluye cualquier grupo de archivos FILESTREAM, no se admite la restauración a un momento dado. Puede forzarse la continuación de la secuencia de restauración. Sin embargo, no se podrán restaurar los grupos de archivos FILESTREAM omitidos en la instrucción RESTORE. Para forzar una restauración a un momento específico, especifique la opción CONTINUE_AFTER_ERROR junto con la opción STOPAT, STOPATMARK o STOPBEFOREMARK, que debe especificar también en las instrucciones RESTORE LOG siguientes. Si se especifica CONTINUE_AFTER_ERROR, la secuencia de restauración parcial será correcta y el grupo de archivos FILESTREAM no será recuperable.

Ejemplo: restauración a un momento dado

En el siguiente ejemplo, la secuencia de restauración empieza a declarar la intención de detenerse en un momento determinado cuando se aplica la primera copia de seguridad de registros. En este ejemplo, el momento de detención se produce en la primera copia de seguridad de registros después de la copia de seguridad diferencial.

RESTORE DATABASE database_name FROM full_backup 
    WITH NORECOVERY;
RESTORE DATABASE database_name FROM full_differential_backup 
    WITH NORECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;
RESTORE LOG database_name FROM log_backup 
    WITH STOPAT = time, RECOVERY;

Que una restauración de registro especificada se realice correctamente depende de si time se encuentra en el intervalo capturado por una copia de seguridad de registros, tal como se describe en la tabla siguiente.

Relación de time con el intervalo capturado por la copia de seguridad de registros:

Efecto

time es anterior al intervalo.

La restauración genera un error y no se produce ninguna puesta al día.

time se encuentra durante el intervalo.

La última restauración se realiza correctamente y se recupera la base de datos.

time es posterior al intervalo.

La puesta al día se realiza correctamente, pero no se recupera la base de datos, porque todavía no se ha llegado a time.

Declarar el punto de detención en cada instrucción RESTORE posterior

Un punto de detención es propio de la instrucción que especifica la opción STOPAT, STOPBEFOREMARK o STOPATMARK. Si omite esa opción de una instrucción RESTORE, se restaura la copia de seguridad completa.

A medida que progresa una secuencia de restauración a un momento dado, puede cambiar el punto de recuperación especificando un nuevo valor para time, suponiendo que la base de datos no haya ido más allá del nuevo valor time.

[!NOTA]

Las opciones STOPBEFOREMARK y STOPATMARK tienen dos parámetros, mark_name y lsn_number. El parámetro mark_name, que identifica una marca de transacción en una copia de seguridad de registros, sólo se admite en instrucciones RESTORE LOG. El parámetro lsn_number, que especifica un número de secuencia de registro, se admite tanto en instrucciones RESTORE DATABASE como en instrucciones RESTORE LOG.

Historial de cambios

Contenido actualizado

Se ha corregido la sección "Usar STANDBY para encontrar un momento dado desconocido" para aclarar que WITH STANDBY simplemente permite deshacer los efectos del proceso de recuperación.