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

Icono que muestra un disco de base de datos azul Este tema sólo es relevante para las bases de datos que utilizan los modelos de recuperación completa o por medio de registros de operaciones masivas.

En este tema se ofrecen prácticas recomendadas para restaurar una base de datos a un punto de recuperación concreto.

Usar STANDBY para encontrar un momento dado desconocido

En ocasiones, desea restaurar una base de datos a un punto de recuperación concreto, pero no sabe el momento de destino, el LSN o la transacción marcada, si los hay. Una solución es poner al día de forma incremental el archivo de datos principal y, opcionalmente, otros archivos de datos especificando WITH STANDBY **=**standby_file_name en lugar de WITH RECOVERY. El uso de la opción STANDBY recupera la base de datos para acceso de sólo lectura. De este modo podrá leer la base de datos y buscar la información del momento dado que desea. El archivo en espera permite revertir los efectos del proceso de recuperación, en el caso de que la base de datos se ponga al día más allá del momento dado de destino. Si la base de datos aún no ha alcanzado el momento dado de destino, puede restaurar copias de seguridad de registros sucesivas mediante WITH STANDBY, especificando el mismo archivo en espera en cada instrucción de restauración.

Después de identificar el punto de recuperación de destino, puede volver a realizar una puesta al día a ese momento dado. Al llegar el momento dado de destino, restaure la base de datos parcial mediante la opción RECOVERY. A continuación, 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.

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.

Vea también

Conceptos

Aplicar copias de seguridad del registro de transacciones
Recuperar a un número de secuencia de registro (LSN)
Recuperar hasta una transacción marcada

Otros recursos

RESTORE (Transact-SQL)
Restaurar bases de datos a un punto de una copia de seguridad

Ayuda e información

Obtener ayuda sobre SQL Server 2005