RESTORE (Transact-SQL)

Restaura copias de seguridad realizadas con el comando BACKUP. Este comando le permite realizar los siguientes escenarios de restauración:

  • Restaurar una base de datos completa a partir de una copia de seguridad completa de la base de datos (restauración completa).

  • Restaurar parte de una base de datos (restauración parcial).

  • Restaurar archivos o grupos de archivos en una base de datos (restauración de archivos).

  • Restaurar páginas específicas en una base de datos (restauración de páginas).

  • Restaurar un registro de transacciones en una base de datos (restauración del registro de transacciones).

  • Revertir una base de datos al punto temporal capturado por una instantánea de la base de datos.

Para obtener más información acerca de los escenarios de restauración de SQL Server, vea Información general sobre restauración y recuperación (SQL Server) y Implementar escenarios de restauración para bases de datos de SQL Server.

Nota

Para obtener más información acerca de las descripciones de los argumentos, vea RESTORE (argumentos, Transact-SQL).

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

--To Restore an Entire Database from a Full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var } 
 [ FROM <backup_device> [ ,...n ] ]
 [ WITH 
   {
    [ RECOVERY | NORECOVERY | STANDBY = 
        {standby_file_name | @standby_file_name_var } 
       ]
   | ,  <general_WITH_options> [ ,...n ]
   | , <replication_WITH_option>
   | , <change_data_capture_WITH_option>
   | , <service_broker_WITH options> 
   | , <point_in_time_WITH_options—RESTORE_DATABASE> 
   } [ ,...n ]
 ]
[;]

--To perform the first step of the initial restore sequence
-- of a piecemeal restore:
RESTORE DATABASE { database_name | @database_name_var } 
   <files_or_filegroups> [ ,...n ]
 [ FROM <backup_device> [ ,...n ] ] 
   WITH 
      PARTIAL, NORECOVERY 
      [  , <general_WITH_options> [ ,...n ] 
       | , <point_in_time_WITH_options—RESTORE_DATABASE> 
      ] [ ,...n ] 
[;]

--To Restore Specific Files or Filegroups: 
RESTORE DATABASE { database_name | @database_name_var } 
   <file_or_filegroup> [ ,...n ]
 [ FROM <backup_device> [ ,...n ] ] 
   WITH 
   {
      [ RECOVERY | NORECOVERY ]
      [ , <general_WITH_options> [ ,...n ] ]
   } [ ,...n ] 
[;]

--To Restore Specific Pages: 
RESTORE DATABASE { database_name | @database_name_var } 
   PAGE = 'file:page [ ,...n ]' 
 [ , <file_or_filegroups> ] [ ,...n ]
 [ FROM <backup_device> [ ,...n ] ] 
   WITH 
       NORECOVERY   
      [ , <general_WITH_options> [ ,...n ] ]
[;]

--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var } 
 [ <file_or_filegroup_or_pages> [ ,...n ] ]
 [ FROM <backup_device> [ ,...n ] ] 
 [ WITH 
   {
     [ RECOVERY | NORECOVERY | STANDBY = 
        {standby_file_name | @standby_file_name_var } 
       ]
    | ,  <general_WITH_options> [ ,...n ]
    | , <replication_WITH_option>
    | , <point_in_time_WITH_options—RESTORE_LOG> 
   } [ ,...n ]
 ] 
[;]

--To Revert a Database to a Database Snapshot:   
RESTORE DATABASE { database_name | @database_name_var } 
FROM DATABASE_SNAPSHOT = database_snapshot_name 

<backup_device>::=
{ 
   { logical_backup_device_name |
      @logical_backup_device_name_var }
 | { DISK | TAPE } = { 'physical_backup_device_name' |
      @physical_backup_device_name_var } 
} 

<files_or_filegroups>::= 
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var } 
 | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } 
 | READ_WRITE_FILEGROUPS
} 

<general_WITH_options> [ ,...n ]::= 
--Restore Operation Options
   MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' 
          [ ,...n ] 
 | REPLACE 
 | RESTART 
 | RESTRICTED_USER 

--Backup Set Options
 | FILE = { backup_set_file_number | @backup_set_file_number } 
 | PASSWORD = { password | @password_variable } 

--Media Set Options
 | MEDIANAME = { media_name | @media_name_variable } 
 | MEDIAPASSWORD = { mediapassword | @mediapassword_variable } 
 | BLOCKSIZE = { blocksize | @blocksize_variable } 

--Data Transfer Options
 | BUFFERCOUNT = { buffercount | @buffercount_variable } 
 | MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable }

--Error Management Options
 | { CHECKSUM | NO_CHECKSUM } 
 | { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } 

--Monitoring Options
 | STATS [ = percentage ] 

--Tape Options
 | { REWIND | NOREWIND } 
 | { UNLOAD | NOUNLOAD } 

<replication_WITH_option>::=
 | KEEP_REPLICATION 

<change_data_capture_WITH_option>::=
 | KEEP_CDC

<service_broker_WITH_options>::= 
 | ENABLE_BROKER 
 | ERROR_BROKER_CONVERSATIONS 
 | NEW_BROKER 


<point_in_time_WITH_options—RESTORE_DATABASE>::= 
 | {
   STOPAT = { 'datetime'| @datetime_var } 
 | STOPATMARK = { 'lsn:lsn_number' }
                 [ AFTER 'datetime'] 
 | STOPBEFOREMARK = {  'lsn:lsn_number' }
                 [ AFTER 'datetime'] 
   } 

<point_in_time_WITH_options—RESTORE_LOG>::= 
 | {
   STOPAT = { 'datetime'| @datetime_var } 
 | STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
                 [ AFTER 'datetime'] 
 | STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
                 [ AFTER 'datetime'] 
   } 

Argumentos

Para obtener descripciones de los argumentos, vea RESTORE (argumentos, Transact-SQL).

Comentarios

Durante una restauración sin conexión, si la base de datos especificada se está usando, RESTORE obliga a los usuarios a desconectarse tras un breve retraso. En el caso de una restauración en línea de un grupo de archivos no principal, la base de datos puede seguir usándose excepto si el grupo de archivos que se está restaurando se ha puesto fuera de conexión. Los datos de la base de datos especificada se reemplazan por los datos restaurados.

Para obtener más información sobre la recuperación de bases de datos, vea Descripción de cómo funcionan la restauración y la recuperación de copias de seguridad en SQL Server e Implementar escenarios de restauración para bases de datos de SQL Server.

Se pueden realizar operaciones de restauración entre plataformas, incluso entre diferentes tipos de procesador, siempre que el sistema operativo admita la intercalación de la base de datos.

RESTORE se puede reiniciar después de un error. Además, puede indicar a RESTORE que continúe a pesar de los errores para que restaure la mayor cantidad de datos posible (vea la opción CONTINUE_AFTER_ERROR). Para obtener más información, vea Responder a errores de restauración de SQL Server provocados por copias de seguridad dañadas.

RESTORE no se permite en una transacción explícita o implícita.

Para restaurar una base de datos maestra dañada se utiliza un procedimiento especial. Para obtener más información, vea Consideraciones para restaurar la base de datos maestra.

Las copias de seguridad creadas con Microsoft SQL Server no se pueden restaurar a una versión anterior de SQL Server.

Al restaurar una base de datos se borra la memoria caché del plan para la instancia de SQL Server. Al borrar la memoria caché del plan, se produce una recompilación de todos los planes de ejecución posteriores y puede ocasionar una disminución repentina y temporal del rendimiento de las consultas. A partir de SQL Server 2005 Service Pack 2, para cada almacén de caché borrado de la memoria caché del plan, el registro de errores de SQL Server contendrá el siguiente mensaje informativo: "SQL Server ha detectado %d instancias de vaciado del almacén de caché '%s' (parte de la caché del plan) debido a determinadas operaciones de mantenimiento de base de datos o reconfiguración". Este mensaje se registra cada cinco minutos siempre que se vacía la memoria caché dentro de ese intervalo de tiempo.

La versión de la base de datos que se desea restaurar debe ser, como mínimo, la versión 80 (SQL Server 2000) para poder restaurarla en SQL Server 2008 R2. Al restaurar bases de datos de SQL Server 2000 o SQL Server 2005 con un nivel de compatibilidad inferior a 80, se establecerán con una compatibilidad de 80.

Nota

Después de restaurar una base de datos de SQL Server 2005 o SQL Server 2000 a SQL Server 2008 R2, la base de datos se pone inmediatamente disponible y se actualiza a continuación automáticamente. Si la base de datos tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, dependiendo del valor de la propiedad de servidor upgrade_option. Si la opción de actualización se establece en Importar (upgrade_option = 2) o en Volver a generar (upgrade_option = 0), los índices de texto completo no estarán disponibles durante la actualización. Dependiendo de la cantidad de datos que se indicen, la importación puede requerir varias horas y la operación de volver a generar puede requerir hasta diez veces más. Cuando la opción de actualización se establece en importar, se vuelven a generar los índices de texto completo asociados si no se dispone de ningún catálogo de texto completo. Para cambiar el valor de la propiedad de servidor upgrade_option, utilice sp_fulltext_service.

Escenarios de restauración

SQL Server admite una serie de escenarios de restauración:

Palabras clave de RESTORE no incluidas

Las siguientes palabras clave no se incluyeron en SQL Server 2008:

Palabra clave no incluida

Se reemplaza por…

Ejemplo de palabra clave de reemplazo

LOAD

RESTORE

RESTORE DATABASE

TRANSACTION

LOG

RESTORE LOG

DBO_ONLY

RESTRICTED_USER

RESTORE DATABASE ... WITH RESTRICTED_USER

Requisito para restaurar una base de datos cifrada

Para restaurar una base de datos cifrada debe tener acceso al certificado o la clave asimétrica que se usó para cifrarla. La base de datos no se puede restaurar sin el certificado o la clave asimétrica. Como resultado se debe conservar el certificado que se usa para cifrar la clave de cifrado de base de datos mientras se necesite la copia de seguridad. Para obtener más información, vea Certificados y claves asimétricas de SQL Server.

Bases de datos habilitadas para el formato de almacenamiento vardecimal

Las copias de seguridad y restauración se realizan correctamente con el formato de almacenamiento vardecimal. Para obtener más información acerca del formato de almacenamiento vardecimal, vea Almacenar datos decimales como longitud variable.

Comparación de RECOVERY y NORECOVERY

La reversión se controla con la instrucción RESTORE mediante las opciones [ RECOVERY | NORECOVERY ]:

  • NORECOVERY especifica que la reversión no se produce. Esto permite la puesta al día para continuar con la siguiente instrucción de la secuencia.

    En este caso, la secuencia de restauración puede restaurar otras copias de seguridad y ponerlas al día.

  • RECOVERY (predeterminado) indica que se debe realizar la reversión una vez completada la puesta al día para la copia de seguridad actual.

    La recuperación de la base de datos requiere a su vez que la restauración del conjunto de datos completo (conjunto de puestas al día) sea coherente con la base de datos. Si el conjunto de puestas al día no se ha puesto al día lo suficiente como para ser coherente con la base de datos y se especifica RECOVERY, Motor de base de datos genera un error.

Rehacer una restauración

Aunque no es posible deshacer los efectos de una restauración, puede cancelar los efectos de la copia de datos y realizar una puesta al día si comienza de nuevo con los archivos de uno en uno. Para comenzar de nuevo, restaure el archivo que desee y vuelva a realizar la puesta al día. Por ejemplo, si ha restaurado demasiadas copias de seguridad de registros por error y ha superado el punto de detención deseado, debe reiniciar la secuencia.

Una secuencia de restauración se puede anular y reiniciar mediante la restauración de todo el contenido de los archivos afectados.

Restaurar datos de texto completo

Los datos de texto completo se restauran junto con otros datos de la base de datos durante una restauración completa. Con el uso de la sintaxis RESTORE DATABASE database_name FROM backup_device normal, los archivos de texto completo se restauran como parte de la restauración de archivos de la base de datos.

La instrucción RESTORE también se puede utilizar para realizar restauraciones en ubicaciones alternativas, restauraciones diferenciales, restauraciones de archivos y grupos de archivos, y restauraciones de archivos y grupos de archivos diferenciales de datos de texto completo. Además, la instrucción RESTORE puede restaurar sólo los archivos de texto completo, así como con datos de la base de datos.

Nota

Los catálogos de texto completo importados de SQL Server 2005 o SQL Server 2000 todavía se tratan como archivos de base de datos. Para estos, el procedimiento de SQL Server 2005 para realizar la copia de seguridad de los catálogos de texto completo se sigue pudiendo aplicar, excepto en que ya no es necesario pausar y reanudar la operación de copia de seguridad. Para obtener más información, vea Realizar copias de seguridad y restaurar catálogos de texto completo en los Libros en pantalla de SQL Server 2005.

Configuración y restauración de bases de datos

Durante una restauración, la mayoría de las opciones de la base de datos que se pueden configurar con ALTER DATABASE se restablecen a los valores vigentes en el momento en que finaliza la copia de seguridad.

Nota

Este comportamiento varía en las versiones de SQL Server anteriores a SQL Server 2000.

Sin embargo, la opción WITH RESTRICTED_USER invalida este comportamiento para configurar la opción de acceso del usuario. Esta configuración siempre se establece tras una instrucción RESTORE que contiene la opción WITH RESTRICTED_USER.

Tablas del historial de copias de seguridad y restauración

SQL Server incluye las tablas del historial de copias de seguridad y restauración que realizan el seguimiento de estas actividades para cada instancia del servidor. Cuando se realiza una restauración, se modifican las tablas del historial de copias de seguridad. Para obtener información acerca de estas tablas, vea Ver información acerca de las copias de seguridad.

RESTORE LOG

RESTORE LOG puede incluir una lista de archivos que permita la creación de archivos durante la puesta al día. Esta opción se utiliza cuando la copia de seguridad de registros contiene entradas de registro escritas al agregar un archivo a la base de datos.

Nota

En el caso de una base de datos que utilice el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, en la mayoría de los casos se debe realizar una copia de seguridad del final del registro antes de restaurar la base de datos. Restaurar una base de datos sin hacer una copia de seguridad primero del final del registro produce un error, a menos que la instrucción RESTORE DATABASE contenga una cláusula WITH REPLACE o WITH STOPAT, que deben especificar un momento o transacción que se produjeran tras finalizar la copia de seguridad de los datos. Para obtener más información sobre las copias del final del registro, vea Copias del final del registro.

Restauración en línea

Nota

La restauración en línea sólo se admite en SQL Server 2005 Enterprise Edition y versiones posteriores.

Cuando se admite la restauración en línea, si la base de datos está en línea, las restauraciones de archivos y de página se convierten automáticamente en restauraciones en línea y en restauraciones de grupos de archivos secundarios tras la fase inicial de una restauración por etapas.

Nota

Las restauraciones en línea pueden incluir transacciones diferidas.

Para obtener más información, vea Realizar restauraciones en línea.

Restauración por etapas

La restauración por etapas, nueva en SQL Server 2005, mejora la restauración parcial de Microsoft SQL Server 2000. La restauración por etapas permite restaurar grupos de archivos tras una restauración inicial parcial del grupo de archivos principal y algunos grupos de archivos secundarios. Los grupos de archivos que no se restauran se marcan como sin conexión y no son accesibles. No obstante, los grupos de archivos sin conexión se pueden restaurar más adelante mediante una restauración de archivos. Para permitir la restauración de la base de datos completa por etapas en distintos momentos, la restauración por etapas mantiene una serie de comprobaciones para garantizar que la base de datos sea coherente al final del proceso.

Nota

En SQL Server 2000, sólo se puede hacer una restauración parcial a partir de una copia de seguridad de la base de datos completa. Esta restricción se quitó en SQL Server 2005.

Si una secuencia de restauración parcial excluye cualquier grupo de archivos FILESTREAM, no se admite la restauración a un momento dado. Puede forzar la continuación de la secuencia de restauración. Sin embargo, nunca 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.

Para obtener más información acerca de las restauraciones por etapas, vea Realizar restauraciones por etapas.

Revertir una base de datos a una instantánea de base de datos

Una operación de reversión de base de datos (especificada mediante la opción DATABASE_SNAPSHOT) hace retroceder en el tiempo una base de datos de origen completa al revertirla a una instantánea de la base de datos, es decir, al sobrescribir la base de datos de origen con datos del momento en que se creó la instantánea especificada. En un momento dado sólo puede existir la instantánea a la que se va a revertir la base de datos. A continuación, la operación de reversión vuelve a generar el registro (por lo tanto, no puede poner al día una base de datos revertida en el punto del error del usuario).

La pérdida de datos se limita a las actualizaciones de la base de datos desde la creación de la instantánea. Los metadatos de una base de datos revertida son iguales a los metadatos en el momento de la creación de la instantánea. No obstante, si se revierte a una instantánea, se quitan todos los catálogos de texto.

La reversión a partir de una instantánea de la base de datos no se utiliza para la recuperación de medios. A diferencia de un conjunto de copia de seguridad normal, la instantánea de la base de datos es una copia incompleta de los archivos de la base de datos. Si la base de datos o la instantánea de la base de datos están dañadas, es probable que sea imposible realizar la reversión a partir de una instantánea. Además, aunque sea posible, no es probable que la reversión corrija el problema si se produjeran daños.

Restricciones de la reversión

La reversión no se admite en las siguientes condiciones:

  • La base de datos de origen contiene todos los grupos de archivos de sólo lectura o comprimidos.

  • Algunos archivos sin conexión estaban en línea en el momento de crear la instantánea.

  • Actualmente existen varias instantáneas de la base de datos.

Para obtener más información, vea Revertir a una instantánea de la base de datos.

Permisos

Si la base de datos que se va a restaurar no existe, el usuario debe tener permisos CREATE DATABASE para poder ejecutar RESTORE. Si la base de datos existe, los permisos RESTORE corresponden de forma predeterminada a los miembros de los roles fijos de servidor sysadmin y dbcreator, y al propietario (dbo) de la base de datos (para la opción FROM DATABASE_SNAPSHOT, la base de datos siempre existe).

Los permisos RESTORE se conceden a los roles en los que la información acerca de los miembros está siempre disponible para el servidor. Debido a que los miembros de un rol fijo de base de datos sólo se pueden comprobar cuando la base de datos es accesible y no está dañada, lo que no siempre ocurre cuando se ejecuta RESTORE, los miembros del rol fijo de base de datos db_owner no tienen permisos RESTORE.

La operación de copia de seguridad puede especificar opcionalmente contraseñas de un conjunto de medios, de un conjunto de copia de seguridad o de ambos. Si se ha definido una contraseña en un conjunto de medios o un conjunto de copia de seguridad, debe especificar la contraseña o contraseñas correctas en la instrucción RESTORE. Estas contraseñas impiden operaciones de restauración y anexiones no autorizadas de los conjuntos de copia de seguridad en medios que utilizan herramientas de SQL Server. No obstante, los medios protegidos con contraseña se pueden sobrescribir mediante la opción FORMAT de la instrucción BACKUP.

Nota de seguridadNota de seguridad

El nivel de protección que proporciona esta contraseña es bajo. El objetivo es impedir una restauración incorrecta con las herramientas de SQL Server, ya sea por parte de usuarios autorizados o no autorizados. No impide la lectura de los datos de las copias de seguridad por otros medios o el reemplazo de la contraseña. Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. La práctica recomendada para proteger las copias de seguridad consiste en almacenar las cintas de copia de seguridad en una ubicación segura o hacer una copia de seguridad en archivos de disco protegidos mediante las listas de control de acceso (ACL) adecuadas. Las ACL se deben establecer en el directorio raíz en el que se crean las copias de seguridad.

Ejemplos

Nota

La base de datos AdventureWorks2008R2 se muestra a modo de ejemplo. AdventureWorks2008R2 es una de las bases de datos de ejemplo de SQL Server. Adventure Works Cycles es una compañía ficticia que se utiliza para mostrar situaciones y conceptos de bases de datos. Para obtener más información acerca de esta base de datos, vea Bases de datos de ejemplo AdventureWorks2008R2.

En todos los ejemplos se supone que se ha realizado una copia de seguridad completa de la base de datos.

Entre los ejemplos de RESTORE se incluyen los siguientes:

  • A. Restaurar una base de datos completa

  • B. Restaurar copias de seguridad de bases de datos completas y diferenciales

  • C. Restaurar una base de datos con la sintaxis de RESTART

  • D. Restaurar una base de datos y mover archivos

  • E. Copiar una base de datos con BACKUP y RESTORE

  • F. Restaurar a un momento dado con STOPAT

  • G. Restaurar el registro de transacciones hasta una marca

  • H. Restaurar con la sintaxis de TAPE

  • I. Restaurar con la sintaxis de FILE y FILEGROUP

  • J. Revertir a una instantánea de la base de datos

A. Restaurar una base de datos completa

En el siguiente ejemplo se restaura una copia de seguridad completa de la base de datos desde un dispositivo lógico de copia de seguridad de AdventureWorks2008R2Backups. Para obtener un ejemplo de creación de este dispositivo, vea Dispositivos de copia de seguridad.

RESTORE DATABASE AdventureWorks2008R2 
   FROM AdventureWorks2008R2Backups

Nota

En el caso de una base de datos que utilice el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, SQL Server requiere en la mayoría de los casos que realice una copia de seguridad de registros después del error antes de restaurar la base de datos. Para obtener más información, vea Copias del final del registro.

[Inicio de los ejemplos]

B. Restaurar copias de seguridad de bases de datos completas y diferenciales

En el siguiente ejemplo se restaura una copia de seguridad completa después de una copia de seguridad diferencial del dispositivo de copia de seguridad Z:\SQLServerBackups\AdventureWorks2008R2.bak, que contiene las dos copias de seguridad. La copia de seguridad de bases de datos completa que se va a restaurar es el sexto conjunto de copias de seguridad del dispositivo (FILE = 6), y la copia de seguridad de base de datos diferencial es el noveno conjunto del dispositivo (FILE = 9). En cuanto se recupere la copia de seguridad diferencial, se recuperará la base de datos.

RESTORE DATABASE AdventureWorks2008R2
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
   WITH FILE = 6
      NORECOVERY;
RESTORE DATABASE AdventureWorks2008R2
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
   WITH FILE = 9
      RECOVERY;

[Inicio de los ejemplos]

C. Restaurar una base de datos con la sintaxis de RESTART

En el ejemplo siguiente se usa la opción RESTART para reiniciar una operación RESTORE interrumpida por un error de alimentación del servidor.

-- This database RESTORE halted prematurely due to power failure.
RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2008R2 
   FROM AdventureWorks2008R2Backups WITH RESTART

[Inicio de los ejemplos]

D. Restaurar una base de datos y mover archivos

En el ejemplo siguiente se restaura una base de datos completa y el registro de transacciones, y se mueve la base de datos restaurada al directorio C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data.

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2008R2_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\NewAdvWorks2008R2.mdf', 
      MOVE 'AdventureWorks2008R2_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\NewAdvWorks2008R2.ldf'
RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH RECOVERY

[Inicio de los ejemplos]

E. Copiar una base de datos con BACKUP y RESTORE

En el ejemplo siguiente se usan las instrucciones BACKUP y RESTORE para realizar una copia de la base de datos AdventureWorks2008R2. La instrucción MOVE hace que se restauren los datos y el archivo de registro en las ubicaciones especificadas. La instrucción RESTORE FILELISTONLY se usa para determinar el número y los nombres de los archivos de la base de datos que se están restaurando. La nueva copia de la base de datos se llama TestDB. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL).

BACKUP DATABASE AdventureWorks2008R2 
   TO AdventureWorks2008R2Backups ;

RESTORE FILELISTONLY 
   FROM AdventureWorks2008R2Backups ;

RESTORE DATABASE TestDB 
   FROM AdventureWorks2008R2Backups 
   WITH MOVE 'AdventureWorks2008R2_Data' TO 'C:\MySQLServer\testdb.mdf',
   MOVE 'AdventureWorks2008R2_Log' TO 'C:\MySQLServer\testdb.ldf';
GO

[Inicio de los ejemplos]

F. Restaurar a un momento dado con STOPAT

En el ejemplo siguiente se restaura una base de datos al estado en que se encontraba a las 12:00 AM del April 15, 2020 y se muestra una operación de restauración que implica varias copias de seguridad de registros. En el dispositivo de copia de seguridad, AdventureWorks2008R2Backups, la copia de seguridad de base de datos completa que se va a restaurar es el tercer conjunto de copias de seguridad del dispositivo (FILE = 3), la primera copia de seguridad de registros es el cuarto conjunto de copias de seguridad (FILE = 4) y la segunda copia de seguridad de registros es el quinto conjunto de copias de seguridad (FILE = 5).

RESTORE DATABASE AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=3, NORECOVERY;

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=4, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2008R2 WITH RECOVERY; 

[Inicio de los ejemplos]

G. Restaurar el registro de transacciones hasta una marca

En el ejemplo siguiente se restaura el registro de transacciones hasta la marca de la transacción marcada denominada ListPriceUpdate.

USE AdventureWorks2008R2;
GO
BEGIN TRANSACTION ListPriceUpdate
   WITH MARK 'UPDATE Product list prices';
GO

UPDATE Production.Product
   SET ListPrice = ListPrice * 1.10
   WHERE ProductNumber LIKE 'BK-%';
GO

COMMIT TRANSACTION ListPriceUpdate;
GO

-- Time passes. Regular database 
-- and log backups are taken.
-- An error occurs in the database.
USE master
GO

RESTORE DATABASE AdventureWorks2008R2
FROM AdventureWorks2008R2Backups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks2008R2
   FROM AdventureWorks2008R2Backups 
   WITH FILE = 4,
   RECOVERY, 
   STOPATMARK = 'UPDATE Product list prices';

[Inicio de los ejemplos]

H. Restaurar con la sintaxis de TAPE

En el siguiente ejemplo se restaura una copia de seguridad completa de la base de datos desde un dispositivo de copia de seguridad TAPE.

RESTORE DATABASE AdventureWorks2008R2 
   FROM TAPE = '\\.\tape0'

[Inicio de los ejemplos]

I. Restaurar con la sintaxis de FILE y FILEGROUP

En el siguiente ejemplo se restaura una base de datos denominada MyDatabase que tiene dos archivos, un grupo de archivos secundario y un registro de transacciones. La base de datos usa el modelo de recuperación completa.

La copia de seguridad de la base de datos es el noveno conjunto de copia de seguridad del conjunto de medios en un dispositivo lógico de copia de seguridad denominado MyDatabaseBackups. A continuación se restauran mediante WITH NORECOVERY tres copias de seguridad de registros que están en los tres conjuntos de copia de seguridad siguientes (10, 11 y 12) en el dispositivo MyDatabaseBackups. Tras restaurar la última copia de seguridad de registros se restaura la base de datos.

Nota

La recuperación se realiza como un paso independiente para reducir las posibilidades de recuperar antes de que se hayan restaurado todas las copias de seguridad de registros.

Tenga en cuenta que en RESTORE DATABASE hay dos tipos de opciones FILE. Las opciones FILE que preceden al nombre del dispositivo de copia de seguridad especifican los nombres de archivos lógicos de los archivos de base de datos que se van a restaurar desde el conjunto de copia de seguridad; por ejemplo, FILE = 'MyDatabase_data_1'. Este conjunto de copia de seguridad no es la primera copia de seguridad de la base de datos en el conjunto de medios; por ello, su posición en el conjunto de medios se indica mediante la opción FILE de la cláusula WITH, FILE=9.

RESTORE DATABASE MyDatabase
   FILE = 'MyDatabase_data_1',
   FILE = 'MyDatabase_data_2',
   FILEGROUP = 'new_customers'
   FROM MyDatabaseBackups
   WITH 
      FILE = 9,
      NORECOVERY;
GO
-- Restore the log backups.
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 10, 
      NORECOVERY;
GO
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 11, 
      NORECOVERY;
GO
RESTORE LOG MyDatabase
   FROM MyDatabaseBackups
   WITH FILE = 12, 
      NORECOVERY;
GO
--Recover the database:
RESTORE DATABASE MyDatabase WITH RECOVERY;
GO

[Inicio de los ejemplos]

J. Revertir a una instantánea de la base de datos

En este ejemplo se revierte una base de datos a una instantánea de la base datos. En el ejemplo se supone que sólo existe una instantánea en la base de datos. Para obtener un ejemplo de creación de esta instantánea de la base de datos, vea Cómo crear una instantánea de base de datos (Transact-SQL).

Nota

Si se revierte a una instantánea, se quitan todos los catálogos de texto completo.

USE master  
RESTORE DATABASE AdventureWorks2008R2 FROM DATABASE_SNAPSHOT = 'AdventureWorks2008R2_dbss1800';
GO

Para obtener más información, vea Revertir a una instantánea de la base de datos.

[Inicio de los ejemplos]