Recuperar una base de datos a un momento específico

Este tema sólo es relevante para las bases de datos de SQL Server que utilizan los modelos de recuperación completa o de recuperación optimizado para cargas masivas de registros.

En el modelo de recuperación optimizado para cargas masivas de registros, si la copia de seguridad de registros contiene cambios registrados de forma masiva, no es posible la recuperación a un momento dado de la copia de seguridad. La base de datos debe recuperarse al final de la copia de seguridad del registro de transacciones.

Para restaurar a un momento específico

Sintaxis de Transact-SQL para la restauración a un momento específico

La restauración a un momento específico siempre se realiza a partir de una copia de seguridad del registro. En cada instrucción RESTORE LOG de la secuencia de restauración, debe especificar el momento de destino o transacción en una cláusula STOPAT idéntica. Como requisito previo para la restauración a un momento específico, debe restaurar primero una copia de seguridad completa de la base de datos cuyo punto final sea anterior al momento de restauración de destino. La copia de seguridad completa de la base de datos puede ser anterior a la copia de seguridad completa de la base de datos más reciente siempre y cuando restaure cada copia de seguridad del registro siguiente, hasta la copia de seguridad del registro que contiene el momento específico de destino, inclusive.

Para ayudarle a identificar qué copia de seguridad de base de datos debe restaurar, puede especificar opcionalmente la cláusula WITH STOPAT en la instrucción RESTORE DATABASE para que se produzca un error si una copia de seguridad de los datos es demasiado reciente para el momento específico de destino. La copia de seguridad completa de los datos se restaura siempre, aunque contenga el momento de destino.

La sintaxis básica es:

RESTORE LOG database_name FROM <backup_device> WITH STOPAT =time, RECOVERY…

El punto de recuperación es la última confirmación de transacción que se ha producido durante o antes del valor datetime que se especifica en time.

Para recuperar únicamente las modificaciones que se han realizado antes de un momento concreto, especifique WITH STOPAT = time para cada copia de seguridad que restaure. Esto garantiza que no se pasará el momento de destino.

Por lo general, una secuencia de restauración a un momento dado implica las siguientes etapas:

  • Restaure la última copia de seguridad de base de datos completa y, si existe, la última copia de seguridad diferencial de base de datos sin recuperar la base de datos (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY).

  • Aplique cada copia de seguridad del registro de transacciones en la misma secuencia en que fueron creadas, especificando la hora a la que tiene previsto detener la restauración del registro (RESTORE DATABASE database_name FROM <backup_device> WITH STOPAT**=time,** RECOVERY).

Para obtener más información, vea Restaurar bases de datos a un punto de una copia de seguridad.