Compartir a través de


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 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).

[!NOTA]

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

[!NOTA]

A partir de la actualización acumulativa 2 de SQL Server 2012 SP1, se admite la copia de seguridad de SQL Server en el servicio de almacenamiento Blob de Windows Azure. Para obtener más información, vea Mejoras en la copia de seguridad y la restauración y Copia de seguridad y restauración de SQL Server con el servicio de almacenamiento Blob de Windows Azure.

Icono de vínculo a temas Convenciones 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>
   | , <FILESTREAM_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

<FILESTREAM_WITH_option>::=
 | FILESTREAM ( DIRECTORY_NAME = directory_name )


<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).

Escenarios de restauración

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

Consideraciones adicionales sobre las opciones de RESTORE

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

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 de la cola del registro produce un error, a menos que la instrucción RESTORE DATABASE contenga la 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 (SQL Server).

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, el Motor de base de datos genera un error.

Soporte de compatibilidad

En SQL Server 2012, puede restaurar una base de datos de usuario a partir de una copia de seguridad de la base de datos creada utilizando SQL Server 2005 o una versión posterior. Sin embargo, las copias de seguridad las bases de datos maestra, de modelos y msdb creadas utilizando SQL Server 2005 o SQL Server 2008 no pueden restaurarse con SQL Server 2012. Asimismo, las copias de seguridad creadas en SQL Server 2012 no se pueden restaurar con versiones anteriores de SQL Server.

[!NOTA]

No se puede restaurar una copia de seguridad de SQL Server a una versión de SQL Server anterior a la versión en que se creó la copia de seguridad.

SQL Server 2012 utiliza una ruta de acceso predeterminada distinta de la de versiones anteriores. Por tanto, para restaurar una base de datos creada en la ubicación predeterminada para las copias de seguridad de SQL Server 2005 o SQL Server 2008, es preciso usar la opción MOVE. Para obtener información acerca de la nueva ruta de acceso predeterminada, vea Ubicaciones de archivos para las instancias predeterminadas y con nombre de SQL Server.

Después de restaurar una base de datos de SQL Server 2005 o de SQL Server 2008 a SQL Server 2012, la base de datos se actualiza automáticamente. Normalmente, la base de datos está disponible inmediatamente. Sin embargo, si una base de datos de SQL Server 2005 tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, dependiendo de la configuración 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 volver a generar puede requerir hasta diez veces más. Observe también que 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 un catálogo de texto completo. Para cambiar el valor de la propiedad de servidor upgrade_option, utilice sp_fulltext_service.

La primera vez que se adjunta una base de datos o se restaura en una instancia nueva de SQL Server, aún no se ha almacenado una copia de la clave maestra de la base de datos (cifrada por la clave maestra de servicio) en el servidor. Debe usar la instrucción OPEN MASTER KEY para descifrar la clave maestra de la base de datos (DMK). Una vez que se ha descifrado la clave maestra de la base de datos, tiene la posibilidad de habilitar el descifrado automático en el futuro usando la instrucción ALTER MASTER KEY REGENERATE para proporcionar al servidor una copia de la clave maestra de la base de datos cifrada con la clave maestra de servicio (SMK). Cuando una base de datos se haya actualizado desde una versión anterior, se debe volver a generar la DMK para usar el algoritmo AES más reciente. Para obtener más información acerca de cómo volver a generar la DMK, vea ALTER MASTER KEY (Transact-SQL). El tiempo necesario para volver a generar la DMK con el fin de actualizarse a AES depende del número de objetos protegidos por la DMK. Solo es necesario volver a generar la DMK una vez y no tiene ningún efecto sobre las nuevas generaciones futuras como parte de una estrategia de rotación de claves.

Observaciones generales

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 sin 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 Información general sobre restauración y recuperación (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).

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 Realizar copias de seguridad y restaurar bases de datos del sistema (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 provoca 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, por cada borrado del almacén de la caché del plan, el registro de errores de SQL Server contendrá el siguiente mensaje informativo: "SQL Server detectó %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 y cuando la memoria caché se vacíe dentro de ese intervalo de tiempo.

Para restaurar una base de datos de disponibilidad, restaure primero la base de datos a la instancia de SQL Server y, a continuación, agréguela al grupo de disponibilidad

Interoperabilidad

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.

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.

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 consecuencia, se debe conservar el certificado usado para cifrar la clave de cifrado de la base de datos tanto tiempo como sea necesario conservar la copia de seguridad. Para obtener más información, vea Certificados y claves asimétricas de SQL Server.

Restaurar una base de datos habilitada 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 sp_db_vardecimal_storage_format (Transact-SQL).

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 solo 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 se tratan todavía 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 el tema sobre cómo realizar copias de seguridad y restauración de catálogos de texto completo en los Libros en pantalla de SQL Server 2005.

Metadatos

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 también las tablas del historial de copias de seguridad. Para obtener información acerca de estas tablas, vea Historial de copias de seguridad e información de encabezados (SQL Server).

Impacto de la opción REPLACE

REPLACE no debe usarse a menudo y solo después de haberlo pensado detenidamente. La opción Restore suele impedir que se sobrescriba accidentalmente una base de datos con otra base de datos. Si la base de datos especificada en una instrucción RESTORE ya existe en el servidor actual y el GUID de la familia de base de datos especificado difiere del GUID de la familia de base de datos registrado en el conjunto de copia de seguridad, no se restaura la base de datos. Ésta es una importante medida preventiva.

La opción REPLACE omite varias comprobaciones de seguridad importantes que suele realizar la opción Restore. Las comprobaciones que se omiten son:

  • Restauración sobre una base de datos existente con una copia de seguridad tomada de otra base de datos.

    Con la opción REPLACE, la operación de restauración permite sobrescribir una base de datos existente con cualquier base de datos del conjunto de copia de seguridad, incluso si el nombre de base de datos especificado difiere del nombre de base de datos grabado en el conjunto de copia de seguridad. Esto puede dar lugar a que se sobrescriba accidentalmente una base de datos con una base de datos diferente.

  • Restauración de una base de datos con el modelo de recuperación completa o con el modelo de recuperación optimizado para cargas masivas de registros donde no se ha realizado una copia del final del registro y no se utiliza la opción STOPAT.

    Con la opción REPLACE, puede perder trabajo comprometido, porque no se ha realizado una copia de seguridad del registro escrito más recientemente.

  • Sobrescritura de archivos existentes.

    Por ejemplo, un error puede permitir la sobrescritura de archivos del tipo equivocado, como archivos .xls, o archivos que está utilizando otra base de datos que no está actualmente en línea. La pérdida arbitraria de datos es posible si se sobrescriben archivos existentes, aunque la base de datos restaurada esté completa.

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.

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 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 solo 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 completo.

La reversión a partir de una instantánea de 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 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 base de datos están dañadas, es probable que no se pueda 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 solo lectura o comprimidos.

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

  • Actualmente existe más de una instantánea de base de datos.

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

Seguridad

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.

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 la pertenencia está siempre disponible para el servidor. Debido a que la pertenencia a un rol fijo de base de datos solo 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.

Ejemplos

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 desde una instantánea de base de datos

[!NOTA]

Para obtener más ejemplos, vea los temas acerca de cómo restaurar que aparecen en Información general sobre restauración y recuperación (SQL Server).

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 AdventureWorksBackups. Para obtener un ejemplo de creación de este dispositivo, vea Dispositivos de copia de seguridad.

RESTORE DATABASE AdventureWorks2012 
   FROM AdventureWorks2012Backups;

[!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 del final del registro antes de restaurar la base de datos. Para obtener más información, vea Copias del final del registro (SQL Server).

[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 de la base de datos seguida de una copia de seguridad diferencial desde un dispositivo de copia de seguridad de Z:\SQLServerBackups\AdventureWorks2012.bak, que contiene las dos copias de seguridad. La copia de seguridad de base de datos completa que se va a restaurar es el sexto conjunto de copia de seguridad del dispositivo (FILE = 6), y la copia de seguridad de base de datos diferencial es el noveno conjunto de copia de seguridad en el dispositivo (FILE = 9). En cuanto se recupere la copia de seguridad diferencial, se recuperará la base de datos.

RESTORE DATABASE AdventureWorks2012
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.bak'
   WITH FILE = 6
      NORECOVERY;
RESTORE DATABASE AdventureWorks2012
   FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2012.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 AdventureWorks2012
   FROM AdventureWorksBackups;
-- Here is the RESTORE RESTART operation.
RESTORE DATABASE AdventureWorks2012 
   FROM AdventureWorksBackups 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\MSSQL11.MSSQLSERVER\MSSQL\Data.

RESTORE DATABASE AdventureWorks2012
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks2012_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks2012_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf';
RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   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 AdventureWorks2012 . 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 denomina TestDB. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL).

BACKUP DATABASE AdventureWorks2012 
   TO AdventureWorksBackups ;

RESTORE FILELISTONLY 
   FROM AdventureWorksBackups ;

RESTORE DATABASE TestDB 
   FROM AdventureWorksBackups 
   WITH MOVE 'AdventureWorks2012_Data' TO 'C:\MySQLServer\testdb.mdf',
   MOVE 'AdventureWorks2012_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, AdventureWorksBackups, 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 AdventureWorks2012
   FROM AdventureWorksBackups
   WITH FILE=3, NORECOVERY;

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

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups
   WITH FILE=5, NORECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';
RESTORE DATABASE AdventureWorks2012 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 AdventureWorks2012
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 AdventureWorks2012
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks2012
   FROM AdventureWorksBackups 
   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 AdventureWorks2012 
   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]

K.Revertir desde una instantánea de base de datos

En este ejemplo se revierte una base de datos a una instantánea de base datos. En el ejemplo se supone que solo existe una instantánea en la base de datos. Para obtener un ejemplo de creación de esta instantánea de base de datos, vea 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 AdventureWorks2012 FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

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

[Inicio de los ejemplos]

Vea también

Referencia

BACKUP (Transact-SQL)

RESTORE REWINDONLY (Transact-SQL)

RESTORE VERIFYONLY (Transact-SQL)

Conceptos

Realizar copias de seguridad y restaurar bases de datos de SQL Server

Realizar copias de seguridad y restaurar bases de datos del sistema (SQL Server)

Realizar copias de seguridad de los catálogos de texto completo y restaurarlos

Hacer copias de seguridad y restaurar bases de datos replicadas

Conjuntos de medios, familias de medios y conjuntos de copias de seguridad (SQL Server)

Historial de copias de seguridad e información de encabezados (SQL Server)