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). Para obtener más información acerca de las descripciones de los argumentos, vea RESTORE (argumentos, Transact-SQL).
Nota
Para obtener más información sobre la restauración desde el servicio de almacenamiento Blob de Windows Azure, vea Copia de seguridad y restauración de SQL Server con el servicio de almacenamiento Blob de Windows Azure.
Se aplica a: SQL Server (desde SQL Server 2008 hasta la versión actual). |
Convenciones de sintaxis de Transact-SQL (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 | URL } = { 'physical_backup_device_name' |
@physical_backup_device_name_var }
}
Note: URL is the format used to specify the location and the file name for the Windows Azure Blob. Although Windows Azure storage is a service, the implementation is similar to disk and tape to allow for a consistent and seemless restore experince for all the three devices.
<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
| CREDENTIAL
--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:
Restauración completa de la base de datos
Restaura la base de datos completa, empezando por una copia de seguridad completa de la base de datos, que puede ir seguida de una restauración de una copia de seguridad diferencial de la base de datos (y copias de seguridad de registros). Para obtener más información, vea Restauraciones de base de datos completas (modelo de recuperación simple) o Restauraciones de base de datos completas (modelo de recuperación completa).
Restauración de archivos
Restaura un archivo o un grupo de archivos en una base de datos de varios grupos de archivos. Tenga en cuenta que con el modelo de recuperación simple, el archivo debe pertenecer a un grupo de archivos de solo lectura. Después de una restauración de archivos completa, se puede restaurar una copia de seguridad de archivos diferencial. Para obtener más información, vea Restauraciones de archivos (modelo de recuperación completa) y Restauraciones de archivos (modelo de recuperación simple).
Restauración de página
Restaura páginas individuales. La restauración de página está disponible solo con el modelo de recuperación completa y el modelo de recuperación optimizado para cargas masivas de registros. Para obtener más información, vea Restaurar páginas (SQL Server).
Restauración por etapas
Restaura la base de datos por etapas, empezando por el grupo de archivos principal y uno o más grupos de archivos secundarios. Una restauración por etapas empieza por RESTORE DATABASE mediante la opción PARTIAL y la especificación de uno o más grupos de archivos secundarios que se van a restaurar. Para obtener más información, vea Restauraciones por etapas (SQL Server).
Solo recuperación
Recupera los datos coherentes con la base de datos y solo necesita estar disponible. Para obtener más información, vea Recuperar una base de datos sin restaurar los datos (Transact-SQL).
Restauración del registro de transacciones.
Con el modelo de recuperación completa o el modelo de recuperación optimizado para cargas masivas de registros, es necesaria la restauración de copias de seguridad de registros para alcanzar el punto de recuperación deseado. Para obtener más información sobre la restauración de copias de seguridad de registros, vea Aplicar copias de seguridad de registros de transacción (SQL Server).
Preparar una base de datos de disponibilidad para un grupo de disponibilidad AlwaysOn
Para obtener más información, vea Preparar manualmente una base de datos secundaria para un grupo de disponibilidad (SQL Server).
Preparar una base de datos reflejada para la creación de reflejo de la base de datos
Para obtener más información, vea Preparar una base de datos reflejada para la creación de reflejo (SQL Server).
Restauración en línea
Nota
La restauración en línea solo se admite en la edición Enterprise de SQL Server.
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 implicar transacciones diferidas.
Para obtener más información, vea Restauración en línea (SQL Server).
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 primero una copia 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 tiempo o una transacción producidos después de 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
Las copias de seguridad de las bases de datos maestra, de modelos y msdb creadas utilizando una versión anterior de SQL Server no pueden restaurarse con SQL Server 2014.
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.
Cada versión de SQL Server utiliza una ruta de acceso predeterminada distinta de la de las versiones anteriores. Por tanto, para restaurar una base de datos creada en la ubicación predeterminada para las copias de seguridad de versiones anteriores, 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 una versión anterior en SQL Server 2014, 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 la operación de 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, use 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 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 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 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. 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 memoria 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.
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 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.
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, al igual que 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 Realizar copias de seguridad de los catálogos de texto completo y restaurarlos.
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 existen varias instantáneas de la 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 para un conjunto de medios, para un conjunto de copia de seguridad o para 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 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. Para obtener información específica sobre la copia de seguridad y la restauración de SQL Server con el servicio de almacenamiento Blob de Windows Azure, vea Copia de seguridad y restauración de SQL Server con el servicio de almacenamiento Blob de Windows Azure. |
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
K. Restaurar desde el servicio de almacenamiento Blob de Windows Azure Ejemplos
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 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 (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\MSSQL12.MSSQLSERVER\MSSQL\Data.
RESTORE DATABASE AdventureWorks2012
FROM AdventureWorksBackups
WITH NORECOVERY,
MOVE 'AdventureWorks2012_Data' TO
'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',
MOVE 'AdventureWorks2012_Log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.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 copia de seguridad en el dispositivo (FILE = 3), la primera copia de seguridad de registros es el cuarto conjunto de copia de seguridad (FILE = 4) y la segunda copia de seguridad de registros es el quinto conjunto de copia 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
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)