RESTORE (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Restaura copias de seguridad realizadas con el comando BACKUP. Este comando le permite:

  • 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, grupos de archivos o páginas específicos en una base de datos (restauración de archivos o 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 las operaciones de copia de seguridad y restauración de bases de datos, vea Realizar copias de seguridad y restaurar bases de datos en SQL Server.

[!NOTA] Para obtener descripciones de los argumentos, vea RESTORE (argumentos, Transact-SQL).

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

Sintaxis

--To restore a complete database from a full database backup (a Complete Restore):
RESTORE DATABASE { database_name | @database_name_var } 
[ FROM <backup_device> [ ,...n ] ]
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] KEEP_REPLICATION ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword |
                    @mediapassword_variable } ] 
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
    [ [ , ] BLOCKSIZE = { blocksize | @blocksize_variable } ] 
    [ [ , ] BUFFERCOUNT = { buffercount | @buffercount_variable } ] 
   [ [ , ]    MAXTRANSFERSIZE = { maxtransfersize | @maxtransfersize_variable } ] 
   [ [ , ] ENABLE_BROKER ] 
   [ [ , ] ERROR_BROKER_CONVERSATIONS ] 
   [ [ , ] NEW_BROKER ] 
   [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 
          {standby_file_name | @standby_file_name_var } 
   } ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ] 
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [ = percentage ] ] 
    [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'lsn:lsn_number' }
             [ AFTER 'datetime' ]
   } ] 
]
[;]

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

--Restore part of a database (a partial restore):
RESTORE DATABASE { database_name | @database_name_var } 
  <files_or_filegroups> [ ,...n ] 
 [ FROM <backup_device> [ ,...n ] ] 
 [ WITH 
     PARTIAL 
   [ [ , ] { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword |
                      @mediapassword_variable } ] 
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] NORECOVERY ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [=percentage ] ] 
   [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'lsn:lsn_number' }
             [ AFTER 'datetime' ] 
   } ] 
]
[;]

<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
} 

--To Restore Specific Files, Filegroups, or Pages: 
RESTORE DATABASE { database_name | @database_name_var } 
     <file_or_filegroup_or_pages> [ ,...n ]
[ FROM <backup_device> [ ,...n ] ] 
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 

   [ [ , ] MEDIAPASSWORD = { mediapassword |
                      @mediapassword_variable } ]
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] NORECOVERY ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [ =percentage ] ] 
]
[;]

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

<file_or_filegroup_or_pages> ::=
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
   | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
      | PAGE = 'file:page [ ,...n ]'  
} 

--To Restore a Transaction Log:
RESTORE LOG { database_name | @database_name_var } 
     [ <file_or_filegroup_or_pages> [ ,...n ] ]
[ FROM <backup_device> [ ,...n ] ] 
[ WITH 
   [ { CHECKSUM | NO_CHECKSUM } ]
   [ [ , ] { STOP_ON_ERROR | CONTINUE_AFTER_ERROR } ]
   [ [ , ] FILE = { backup_set_file_number | @backup_set_file_number } ] 
   [ [ , ] KEEP_REPLICATION ] 
   [ [ , ] MEDIANAME = { media_name | @media_name_variable } ] 
   [ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable }      ]
   [ [ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' ] 
                [ ,...n ] 
   [ [ , ] PASSWORD = { password | @password_variable } ] 
   [ [ , ] { RECOVERY | NORECOVERY | STANDBY = 
          {standby_file_name | @standby_file_name_var } }
   ] 
   [ [ , ] REPLACE ] 
   [ [ , ] RESTART ] 
   [ [ , ] RESTRICTED_USER ]
   [ [ , ] { REWIND | NOREWIND } ] 
   [ [ , ] { UNLOAD | NOUNLOAD } ] 
   [ [ , ] STATS [=percentage ] ] 
   [ [ , ] { STOPAT = { 'date_time' | @date_time_var } 
    |  STOPATMARK = { 'mark_name' | 'lsn:lsn_number' }
              [ AFTER 'datetime' ] 
    |  STOPBEFOREMARK = { 'mark_name' | 'lsn:lsn_number' }
             [ AFTER 'datetime' ] 
   } ] 
]
[;]

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

<file_or_filegroup_or_pages> ::=
{ 
   FILE = { logical_file_name_in_backup | @logical_file_name_in_backup_var }
   | FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var } }
      | PAGE = 'file:page [ ,...n ]'  
} 

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

Argumentos

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

Notas

Durante una restauración sin conexión, si la base de datos especificada está en uso, RESTORE obliga a los usuarios a desconectarse tras un breve retraso. En el caso de una restauración con conexión de un grupo de archivos no principal, la base de datos puede seguir en uso excepto si la restauración del grupo de archivos se realiza 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 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 master dañada se utiliza un procedimiento especial. Para obtener más información, vea Consideraciones para Restaurar la base de datos master.

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

Al restaurar una base de datos se borra la caché del plan para la instancia de SQL Server. Al borrar la caché del plan, se provoca una nueva compilación de todos los planes de ejecución posteriores y puede ocasionar una disminución repentina y temporal del rendimiento de las consultas. En el Service Pack 2 de SQL Server 2005, para cada almacén de caché borrado de la 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 caché dentro de ese intervalo de tiempo.

Escenarios de restauración

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

Compatibilidad con versiones anteriores

Para mantener la compatibilidad con versiones anteriores, se pueden utilizar las siguientes palabras clave en la sintaxis de la instrucción RESTORE:

  • Se puede utilizar la palabra clave LOAD en lugar de la palabra clave RESTORE.
  • Se puede utilizar la palabra clave TRANSACTION en lugar de la palabra clave LOG.
  • Se puede utilizar la palabra clave DBO_ONLY en lugar de la palabra clave RESTRICTED_USER.

Bases de datos habilitadas para el formato de almacenamiento vardecimal

La copia de seguridad y la restauración funcionan correctamente con el formato de almacenamiento vardecimal, pero Database Engine (Motor de base de datos) se debe actualizar al menos a la versión Service Pack 2 de SQL Server 2005. No puede restaurar la copia de seguridad de una base de datos comprimida en una base de datos sin comprimir. Tampoco puede restaurar una copia de seguridad de una base de datos del Service Pack 2 comprimida a una versión anterior de SQL Server. 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 para ser coherente con la base de datos y se especifica RECOVERY, el motor de base de datos genera un error.

Rehacer una restauración

Aunque deshacer los efectos de una restauración no es posible, puede negar 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

En SQL Server 2005, los datos de texto se restauran junto con otros datos de la base de datos durante una restauración completa. La operación de restauración trata los catálogos de texto como archivos. Con el uso de la sintaxis RESTORE DATABASE database_name FROM backup_device normal, los archivos de texto 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. Además, RESTORE puede restaurar archivos de texto por separado y junto con los datos de la base de datos.

[!NOTA] No puede restaurar un catálogo de texto en el directorio raíz.

Para obtener más información, vea Realizar copias de seguridad y restaurar catálogos de texto.

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 anula 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 copia de seguridad y restauración

SQL Server incluye las tablas del historial de restauraciones y copias de seguridad 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

A partir de SQL Server 2005, RESTORE LOG puede incluir una lista de archivos para 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 por medio de registros de operaciones masivas, SQL Server 2005 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. La restauración de una base de datos sin crear una copia de seguridad de registros después del error genera un error a menos que la instrucción RESTORE contenga la cláusula WITH REPLACE o WITH STOPAT. Para obtener más información sobre las copias de seguridad de registros después del error, vea Copias de seguridad de registros después del error.

Restauración con conexión

[!NOTA] Sólo se permite la restauración con conexión en SQL Server 2005 Enterprise Edition.

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

[!NOTA] Las restauraciones con conexión pueden incluir transacciones diferidas.

Para obtener más información, vea Realizar restauraciones con conexión.

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 ya no existe en SQL Server 2005.

Para obtener más información, 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 tiempo en que se creó la instantánea especificada. Sólo puede existir actualmente 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 produjesen 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 que no tienen conexión tenían conexión 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 las funciones fijas 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 funciones en las que la información acerca de los miembros está siempre disponible para el servidor. Debido a que los miembros de una función fija 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 de la función fija 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 2005. No obstante, los medios protegidos con contraseña se pueden sobrescribir mediante la opción FORMAT de la instrucción BACKUP.

ms186858.security(es-es,SQL.90).gifNota de seguridad:
El nivel de protección que proporciona esta contraseña es bajo. Está diseñado para impedir que los usuarios autorizados o no autorizados realicen una restauración incorrecta con las herramientas de SQL Server 2005. No impide la lectura de los datos de las copias de seguridad por otros medios o el reemplazo de la contraseña. 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 AdventureWorks se muestra a modo de ejemplo. AdventureWorks es una de las bases de datos de ejemplo de SQL Server 2005. 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 Ejemplos y bases de datos de ejemplo.

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

[!NOTA] Para obtener más ejemplos, vea Ejemplos de secuencias de restauración para varios escenarios de restauración y los temas acerca de cómo restaurar que aparecen en Temas de procedimientos de copia de seguridad y restauración (Transact-SQL).

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 AdventureWorks 
   FROM AdventureWorksBackups

[!NOTA] En el caso de una base de datos que utilice el modelo de recuperación completa o por medio de registros de operaciones masivas, SQL Server 2005 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 de seguridad de registros después del error.

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

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH NORECOVERY, 
      MOVE 'AdventureWorks_Data' TO 
'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.mdf', 
      MOVE 'AdventureWorks_Log' 
TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\NewAdvWorks.ldf'
RESTORE LOG AdventureWorks
   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 AdventureWorks. 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 AdventureWorks 
   TO AdventureWorksBackups ;

RESTORE FILELISTONLY 
   FROM AdventureWorksBackups ;

RESTORE DATABASE TestDB 
   FROM AdventureWorksBackups 
   WITH MOVE 'AdventureWorks_Data' TO 'C:\MySQLServer\testdb.mdf',
   MOVE 'AdventureWorks_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 varios registros y varios dispositivos de copia de seguridad.

RESTORE DATABASE AdventureWorks
   FROM AdventureWorksBackups
   WITH NORECOVERY;

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups
   WITH RECOVERY, STOPAT = 'Apr 15, 2020 12:00 AM';

[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 AdventureWorks
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 AdventureWorks
FROM AdventureWorksBackups
WITH FILE = 3, NORECOVERY;
GO

RESTORE LOG AdventureWorks
   FROM AdventureWorksBackups 
   WITH FILE = 4,
   RECOVERY, 
   STOPATMARK = 'ListPriceUpdate';

[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 AdventureWorks 
   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 llamada 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 llamado 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.

USE master  
RESTORE DATABASE AdventureWorks FROM DATABASE_SNAPSHOT = 'AdventureWorks_dbss1800';
GO

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

[Inicio de los ejemplos]

Vea también

Referencia

BACKUP (Transact-SQL)
RESTORE REWINDONLY (Transact-SQL)
RESTORE VERIFYONLY (Transact-SQL)

Otros recursos

Realizar copias de seguridad y restaurar catálogos de texto
Realizar copias de seguridad de bases de datos de réplica y restaurarlas
Implementar escenarios de restauración para bases de datos de SQL Server
Conjuntos de medios, familias de medios y conjuntos de copias de seguridad
Descripción de cómo funcionan la restauración y la recuperación de copias de seguridad en SQL Server
Ver información acerca de las copias de seguridad

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se agregaron las opciones BLOCKSIZE, BUFFERCOUNT y MAXTRANSFERSIZE a la sección de la sintaxis.
  • Se corrigió la sintaxis de STOPATMARK y STOPBEFOREMARK para RESTORE DATABASE.
  • Se agregó una sección a las Notas acerca de cómo restaurar las bases de datos del Service Pack 2 de SQL Server 2005 habilitadas para el formato de almacenamiento vardecimal.
  • Se ha agregado una sección a las Notas acerca de cómo borrar la caché del plan.
Contenido modificado:
  • Se corrigió la sintaxis de STOPAT, STOPATMARK y STOPBEFOREMARK.

14 de abril de 2006

Contenido modificado:
  • Se aclaró la restricción de instantáneas de base de datos para archivos sin conexión.
  • Se cambió la sintaxis del nombre lógico de un archivo con copia de seguridad del nombre de variable logical_file_name a logical_file_name_in_backup.