Restaurar una base de datos a una nueva ubicación (SQL Server)
Se aplica a: SQL Server
En este artículo se explica cómo restaurar una base de datos de SQL Server en una nueva ubicación y, opcionalmente, cómo cambiar el nombre de la base de datos, en SQL Server con SQL Server Management Studio (SSMS) o Transact-SQL. Puede mover una base de datos a una nueva ruta de acceso de directorio o crear una copia de una base de datos en la misma instancia de servidor o en una instancia de servidor diferente.
Antes de empezar
Limitaciones y restricciones
- El administrador del sistema encargado de restaurar una copia de seguridad de la base de datos completa debe ser la única persona que esté utilizando la base de datos que se va a restaurar.
Requisitos previos
En el modelo de recuperación optimizado para cargas masivas de registros o completo, para poder restaurar una base de datos, se debe realizar una copia de seguridad del registro de transacciones activo. Para obtener más información, vea Realizar copia de seguridad de un registro de transacciones (SQL Server).
Para restaurar una base de datos cifrada, debe tener acceso al certificado o la clave asimétrica usados para cifrar la base de datos. Sin ese certificado o clave asimétrica, no puede restaurar la base de datos. Debes conservar el certificado usado para cifrar la clave de cifrado de base de datos durante el tiempo que necesites guardar la copia de seguridad. Para obtener más información, consulte SQL Server Certificates and Asymmetric Keys.
Recomendaciones
Para otras consideraciones sobre cómo mover una base de datos, consulta Copiar bases de datos con Copias de seguridad y restauración.
Si restaura una base de datos de SQL Server 2005 (9.x) o superior en SQL Server, la base de datos se actualiza automáticamente. Normalmente, la base de datos está disponible inmediatamente. Pero si la base de datos de SQL Server 2005 (9.x) tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, en función del valor de la propiedad del 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 tardar varias horas en completarse y la duración de la regeneración puede multiplicarse por diez. 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.
Seguridad
Por razones de seguridad, se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza. Es posible que dichas bases de datos contengan código malintencionado que podría ejecutar código de Transact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física. Para usar una base de datos desde un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos de un servidor que no sea de producción y examine también el código, como procedimientos almacenados u otro código definido por el usuario, en la base de datos.
Permisos
Si la base de datos que se va a restaurar no existe, el usuario debe tener permisos CREATE DATABASE para poder ejecutar RESTORE. Si la base de datos existe, los permisos RESTORE corresponden de forma predeterminada a los miembros de los roles fijos de servidor sysadmin y dbcreator , y al propietario (dbo) de la base de datos.
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 puede 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.
Restaurar una base de datos en una nueva ubicación; opcionalmente, cambiar el nombre de la base de datos con SSMS
Conéctese a la instancia adecuada del motor de base de datos de SQL Server y, después, en el Explorador de objetos, seleccione el nombre del servidor para expandir el árbol.
Haga clic con el botón derecho en Bases de datos y después seleccione Restaurar base de datos. Se abre el cuadro de diálogo Restaurar base de datos .
En la página General , use la sección Origen para especificar el origen y la ubicación de los conjuntos de copias de seguridad que se deben restaurar. Seleccione una de las siguientes opciones:
Base de datos
Seleccione la base de datos que desea restaurar en la lista desplegable. La lista solo contiene las bases de datos de las que se han realizado copias de seguridad de acuerdo con el historial de copias de seguridad de msdb .
Nota:
Si la copia de seguridad se toma desde un servidor diferente, el servidor de destino no tendrá la información del historial de copia de seguridad de la base de datos especificada. En este caso, seleccione Dispositivo para especificar manualmente el archivo o dispositivo que se va a restaurar.
Device
Seleccione el botón Examinar (...) para abrir el cuadro de diálogo Seleccionar dispositivos de copia de seguridad. En el cuadro Tipo de medio de copia de seguridad , seleccione uno de los tipos de dispositivo. Para seleccionar uno o varios dispositivos del cuadro Medio de copia de seguridad, seleccione Añadir.
Después de añadir los dispositivos que quiere al cuadro de lista Medio de copia de seguridad, seleccione Aceptar para volver a la página General.
En el cuadro de lista Origen: Dispositivo: Base de datos, seleccione el nombre de la base de datos que se debe restaurar.
Nota : esta lista solo está disponible cuando se selecciona Dispositivo . Solo estarán disponibles las bases de datos que tienen copias de seguridad en el dispositivo seleccionado.
En la sección Destino , el cuadro Base de datos se rellena automáticamente con el nombre de la base de datos que se va a restaurar. Para cambiar el nombre de la base de datos, especifique el nuevo nombre en el cuadro Base de datos .
En el cuadro Restaurar en, deje el valor predeterminado A la última copia de seguridad realizada o seleccione Escala de tiempo para acceder al cuadro de diálogo Escala de tiempo de copia de seguridad para seleccionar manualmente un momento dado a fin de que se detenga la acción de recuperación. Vea Backup Timeline para obtener más información acerca de cómo designar un momento específico.
En la cuadrícula Conjuntos de copia de seguridad que se van a restaurar , seleccione las copias de seguridad que desea restaurar. En esta cuadrícula se muestran las copias de seguridad disponibles en la ubicación especificada. De forma predeterminada, se sugiere un plan de recuperación. Para anular el plan de recuperación sugerido, puede cambiar las selecciones de la cuadrícula. Se anula automáticamente la selección de las copias de seguridad que dependen de la restauración de una copia de seguridad anterior cuando se anula la selección de una copia de seguridad anterior.
Para obtener información sobre las columnas de la cuadrícula Conjuntos de copia de seguridad que se van a restaurar, vea Restaurar la base de datos (página General).
Para especificar la nueva ubicación de los archivos de base de datos, seleccione la página Archivos y, después, seleccione Reubicar todos los archivos en la carpeta. Proporcione una nueva ubicación para Carpeta de archivos de datos y Carpeta de archivos de registro. Para más información sobre esta cuadrícula, vea Restaurar base de datos (página Archivos).
Si lo desea, en la página Opciones ajuste las opciones. Para obtener más información sobre estas opciones, vea Restaurar base de datos (página Opciones).
Restaurar una base de datos en una nueva ubicación; opcionalmente, cambiar el nombre de la base de datos mediante T-SQL
Opcionalmente, determine los nombres lógicos y físicos de los archivos del conjunto de copia de seguridad que contiene la copia de seguridad de base de datos completa que desea restaurar. Esta instrucción devuelve una lista con los archivos de base de datos y de registro del conjunto de copia de seguridad. La sintaxis básica es la siguiente:
RESTORE FILELISTONLY FROM <dispositivo_copia_seguridad> WITH FILE = backup_set_file_number
Aquí, backup_set_file_number indica la posición de la copia de seguridad en el conjunto de medios. Puede obtener la posición de un conjunto de copia de seguridad utilizando la instrucción RESTORE HEADERONLY . Para obtener más información, consulta Especificar un conjunto de copia de seguridad.
Esta instrucción también admite varias opciones WITH. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL).
Use la instrucción RESTORE DATABASE para restaurar la copia de seguridad completa de la base de datos. De manera predeterminada, los archivos de datos y de registro se restauran en sus ubicaciones originales. Para cambiar la ubicación de una base de datos, use la opción MOVE para mover cada uno de los archivos de la base de datos y evitar conflictos con los archivos existentes.
La sintaxis básica de Transact-SQL para restaurar la base de datos en una ubicación nueva y con un nombre nuevo es:
RESTORE DATABASE *new_database_name*
FROM *backup_device* [ ,...*n* ]
[ WITH
{
[ **RECOVERY** | NORECOVERY ]
[ , ] [ FILE ={ *backup_set_file_number* | @*backup_set_file_number* } ]
[ , ] MOVE '*logical_file_name_in_backup*' TO '*operating_system_file_name*' [ ,...*n* ]
}
;
Nota:
Cuando prepare la reubicación de una base de datos en un disco diferente, compruebe si hay espacio suficiente e identifique cualquier posible conflicto con los archivos existentes. Para ello, se usa una instrucción RESTORE VERIFYONLY que especifica los mismos parámetros MOVE que tiene previsto usar en la instrucción RESTORE DATABASE.
En la tabla siguiente se describen los argumentos de esta instrucción RESTORE para restaurar una base de datos en una nueva ubicación. Para más información sobre estos argumentos, vea RESTORE (Transact-SQL).
new_database_name
El nuevo nombre para la base de datos.
Nota:
Si va a restaurar la base de datos en otra instancia de servidor, puede usar el nombre original de la base de datos en lugar de uno nuevo.
backup_device [ ,...n ]
Especifica una lista que contiene entre 1 y 64 dispositivos de copia de seguridad (separados por comas) desde los que se restaurará la copia de seguridad de la base de datos. Puede especificar un dispositivo físico de copia de seguridad o puede especificar el dispositivo de copia de seguridad lógico correspondiente, si se definió. Para especificar un dispositivo de copia de seguridad físico, use la opción DISK o TAPE:
{ DISK | TAPE } =physical_backup_device_name
Para obtener más información, vea Dispositivos de copia de seguridad (SQL Server).
{ RECOVERY | NORECOVERY }
Si la base de datos usa el modelo de recuperación completa, es posible que deba aplicar copias de seguridad de registros de transacciones después de restaurar la base de datos. En este caso, especifique la opción NORECOVERY.
En caso contrario, use la opción RECOVERY, que es la predeterminada.
FILE = { backup_set_file_number | @backup_set_file_number }
Identifica el conjunto de copia de seguridad que se va a restaurar. Por ejemplo, si backup_set_file_number es 1 , indica el primer conjunto de copia de seguridad del medio de copia, y si backup_set_file_number es 2 , indica el segundo conjunto de copia de seguridad. Puede obtener el valor backup_set_file_number de un conjunto de copia de seguridad mediante la instrucción RESTORE HEADERONLY .
Cuando no se especifica esta opción, el comportamiento predeterminado es usar el primer conjunto de copia de seguridad del dispositivo de copia de seguridad.
Para más información, vea "Especificar un conjunto de copia de seguridad" en Argumentos RESTORE (Transact-SQL).
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
Especifica que el archivo de datos o de registro especificado por logical_file_name_in_backup debe restaurarse en la ubicación especificada por operating_system_file_name. Especifique una instrucción MOVE para cada archivo lógico del conjunto de copia de seguridad que desee restaurar en otra ubicación.
Opción | Descripción |
---|---|
logical_file_name_in_backup | Especifica el nombre lógico de un archivo de datos o de registro del conjunto de copia de seguridad. El nombre de archivo lógico de un archivo de datos o de registro de un conjunto de copia de seguridad coincide con el nombre lógico que tenía en la base de datos cuando se creó el conjunto de copia de seguridad. Nota: Use RESTORE FILELISTONLYpara obtener una lista de los archivos lógicos del conjunto de copia de seguridad. |
operating_system_file_name | Especifica una nueva ubicación para el archivo especificado por logical_file_name_in_backup. El archivo se restaurará en esta ubicación. Opcionalmente, operating_system_file_name especifica un nombre de archivo nuevo para el archivo restaurado. Lo cual sería necesario si fueses a crear una copia de una base de datos existente en la misma instancia de servidor. |
n | Es un marcador de posición que indica que puede especificar instrucciones MOVE adicionales. |
Ejemplo (Transact-SQL)
En este ejemplo se crea una base de datos denominada MyAdvWorks
restaurando una copia de seguridad de la base de datos de ejemplo AdventureWorks2022
, que incluye dos archivos: AdventureWorks2022
_Data y AdventureWorks2022
_Log. Esta base de datos usa el modelo de recuperación simple. La base de datos AdventureWorks2022
ya existe en la instancia de servidor y, por lo tanto, los archivos de la copia de seguridad deben restaurarse en una nueva ubicación. La instrucción RESTORE FILELISTONLY se utiliza para determinar el número y los nombres de los archivos de la base de datos que se restaura. La copia de seguridad de la base de datos es el primer conjunto de copia de seguridad del dispositivo de copia de seguridad.
Nota:
En los ejemplos de copia de seguridad y restauración del registro de transacciones, que incluyen restauraciones a un momento dado, se utiliza la base de datos MyAdvWorks_FullRM
, creada a partir de AdventureWorks2022
igual que en el siguiente ejemplo MyAdvWorks
. Pero la base de datos MyAdvWorks_FullRM
resultante se debe cambiar para usar el modelo de recuperación completa con la siguiente instrucción Transact-SQL: ALTER DATABASE <database_name> SET RECOVERY FULL.
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2022_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2022_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2022_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2022_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2022_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
Para obtener un ejemplo de cómo crear una copia de seguridad completa de la base de datos AdventureWorks2022
, vea Crear una copia de seguridad completa de base de datos (SQL Server).
Tareas relacionadas
Creación de una copia de seguridad completa de base de datos (SQL Server)
Realizar copia de seguridad de un registro de transacciones (SQL Server)
Restaurar una copia de seguridad de registros de transacciones (SQL Server)