• No results found

Para realizar la restauración de una Base de Datos, podemos hacer uso de la instrucción RESTORE, o de los contrario, utilizar el management Sql Server.

RESTORE (Transact-SQL)

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

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

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

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

 Restaurar páginas específicas en una base de datos (restauración de páginas).  Restaurar un registro de transacciones en una base de datos (restauración del

registro de transacciones).

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

--To Restore an Entire Database from a Full database backup (a Complete Restore): RESTORE DATABASE { database_name | @database_name_var }

[ FROM <backup_device> [ ,...n ] ] [ WITH

{

[ RECOVERY | NORECOVERY | STANDBY = {standby_file_name | @standby_file_name_var } ] | , <general_WITH_options> [ ,...n ] | , <replication_WITH_option> | , <change_data_capture_WITH_option> | , <service_broker_WITH options> | , <point_in_time_WITH_options—RESTORE_DATABASE> } [ ,...n ] ] [;]

--To perform the first step of the initial restore sequence -- of a piecemeal restore:

RESTORE DATABASE { database_name | @database_name_var } <files_or_filegroups> [ ,...n ]

[ FROM <backup_device> [ ,...n ] ] WITH

PARTIAL, NORECOVERY

[ , <general_WITH_options> [ ,...n ]

| , <point_in_time_WITH_options—RESTORE_DATABASE> ] [ ,...n ]

[;]

--To Restore Specific Files or Filegroups:

RESTORE DATABASE { database_name | @database_name_var } <file_or_filegroup> [ ,...n ] [ FROM <backup_device> [ ,...n ] ] WITH { [ RECOVERY | NORECOVERY ] [ , <general_WITH_options> [ ,...n ] ] } [ ,...n ] [;]

--To Restore Specific Pages:

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

--To Restore a Transaction Log:

RESTORE LOG { database_name | @database_name_var } [ <file_or_filegroup_or_pages> [ ,...n ] ]

[ FROM <backup_device> [ ,...n ] ] [ WITH

{

[ RECOVERY | NORECOVERY | STANDBY =

{standby_file_name | @standby_file_name_var } ] | , <general_WITH_options> [ ,...n ] | , <replication_WITH_option> | , <point_in_time_WITH_options—RESTORE_LOG> } [ ,...n ] ] [;]

RESTORE DATABASE { database_name | @database_name_var } FROM DATABASE_SNAPSHOT = database_snapshot_name

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. No obstante, los medios protegidos con contraseña se pueden sobrescribir mediante la opción FORMAT de la instrucción BACKUP.

Ejemplos sobre el uso del RESTORE 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

RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups

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;

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

D. Restaurar una base de datos y mover archivos

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

RESTORE DATABASE AdventureWorks FROM AdventureWorksBackups WITH NORECOVERY,

'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf', MOVE 'AdventureWorks_Log'

TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf' RESTORE LOG AdventureWorks

FROM AdventureWorksBackups WITH RECOVERY

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

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

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

Related documents