Compartir por


Restaurar una base de datos a una nueva ubicación (SQL Server)

Se aplica a:SQL Server

En este artículo se describe cómo restaurar una base de datos de SQL Server en una nueva ubicación y, opcionalmente, cambiar el nombre de la base de datos en SQL Server mediante 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.

Limitaciones

  • 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

  • Al usar el modelo de recuperación completo o optimizado para cargas masivas de registros, antes de poder restaurar una base de datos, debe realizar una copia de seguridad del registro de transacciones activo. Para obtener más información, consulte Copia de seguridad de un registro de transacciones.

  • Para restaurar una base de datos cifrada, debe tener acceso al certificado o a la clave asimétrica que se usa para cifrar la base de datos. Sin ese certificado o clave asimétrica, no se puede restaurar la base de datos. Debe conservar el certificado usado para cifrar la clave de cifrado de la base de datos siempre que necesite la copia de seguridad. Para obtener más información, vea Certificados de SQL Server y claves asimétricas.

Recomendaciones

  • Para conocer otras consideraciones para mover una base de datos, consulte Copia de bases de datos con copia 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. Sin embargo, si una base de datos de SQL Server 2005 (9.x) tiene índices de texto completo, el proceso de actualización importa, restablece o vuelve a generarlos, en función de la configuración de la upgrade_option propiedad del servidor. Si la opción de actualización está establecida para importar (upgrade_option = 2) o recompilar (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. Además, cuando se establece la opción de actualización para importar, los índices de texto completo asociados se vuelven a generar si un catálogo de texto completo no está disponible. Para cambiar la configuración de la upgrade_option propiedad del servidor, use sp_fulltext_service.

Seguridad

Para fines de seguridad, no se recomienda adjuntar ni restaurar bases de datos de orígenes desconocidos o que no son de confianza. Estas bases de datos podrían contener código malintencionado que podría ejecutar código no deseado Transact-SQL o provocar errores modificando 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 CREATE DATABASE permisos para poder ejecutar RESTORE. Si la base de datos existe, RESTORE los permisos predeterminados para los miembros de los roles fijos de servidor sysadmin y dbcreator y el propietario (dbo) de la base de datos.

RESTORE los permisos se conceden a los roles en los que la información de pertenencia siempre está disponible para el servidor. Dado que la pertenencia a roles fijos de base de datos solo se puede comprobar cuando la base de datos es accesible y no dañada, que no siempre es el caso cuando RESTORE se ejecuta, los miembros del rol fijo de base de datos de db_owner no tienen RESTORE permisos.

Restaurar una base de datos en una nueva ubicación y, opcionalmente, cambiar el nombre de la base de datos mediante SSMS

  1. Conéctese a la instancia adecuada del motor de base de datos de SQL Server y, a continuación, en el Explorador de objetos, seleccione el nombre del servidor para expandir el árbol del servidor.

  2. Haga clic con el botón derecho en Bases de datos y, a continuación, seleccione Restaurar base de datos.... Se abre el cuadro de diálogo Restaurar base de datos .

  3. En la página General , en la sección Origen , especifique el origen y la ubicación de los conjuntos de copia de seguridad que se van a restaurar. Selecciona una de las siguientes opciones:

    • Base de datos

      Seleccione la base de datos para restaurar en la lista desplegable. La lista contiene solo las bases de datos de las que se ha realizado una copia de seguridad según el msdb historial de copia de seguridad.

      Nota:

      Si la copia de seguridad se crea a partir de 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 agregar los dispositivos que desea agregar a la lista Medios de copia de seguridad , seleccione Aceptar para volver a la página General .

      En la 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 están disponibles las bases de datos que tienen copias de seguridad en el dispositivo seleccionado.

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

  5. En el cuadro Restaurar en , deje el valor predeterminado de En 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 para detener la acción de recuperación. Consulte Escala de tiempo de copia de seguridad para obtener más información sobre cómo designar un momento dado específico.

  6. 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 para restaurar, vea Restaurar base de datos (página General).

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

  8. En la página Opciones , ajuste las opciones si quiere. Para obtener más información sobre estas opciones, vea Restaurar base de datos (página Opciones).

Restaure la base de datos en una nueva ubicación y, opcionalmente, cambie el nombre de la base de datos mediante T-SQL.

  1. 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 muestra la sintaxis básica para devolver una lista de los archivos de base de datos y de registro contenidos en el conjunto de copia de seguridad:

    RESTORE FILELISTONLY FROM backup_device 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 WITH opciones. Para obtener más información, vea RESTORE FILELISTONLY.

  2. 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 reubicar una base de datos, use la MOVE opción de reubicar cada uno de los archivos de base de datos y evitar colisiones con archivos existentes.

La sintaxis básica de Transact-SQL para restaurar la base de datos en una nueva ubicación 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. Esta comprobación implica el uso de instrucciones RESTORE: instrucción VERIFYONLY que especifica los mismos MOVE parámetros que planea usar en la RESTORE DATABASE instrucción .

En la siguiente información se describen los argumentos de esta RESTORE instrucción relacionados con la restauración de una base de datos a una nueva ubicación. Para obtener más información sobre estos argumentos, vea Restore Statements.

new_database_name

El nuevo nombre para la base de datos.

Nota:

Si va a restaurar la base de datos en una instancia de servidor diferente, puede usar el nombre de la base de datos original en lugar de un nuevo nombre.

backup_device [ , ... n ]

Especifica una lista separada por comas de entre 1 y 64 dispositivos de copia de seguridad desde los que se va a restaurar la copia de seguridad de la base de datos. Puede especificar un dispositivo de copia de seguridad físico o puede especificar un dispositivo lógico de copia de seguridad correspondiente, si se define uno. Para especificar un dispositivo de copia de seguridad físico, use la DISK opción o TAPE :

{ DISK | TAPE } = physical_backup_device_name

Para obtener más información, consulte Dispositivos de copia de seguridad.

{ 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 NORECOVERY opción .

De lo contrario, use la RECOVERY opción , que es el valor predeterminado.

FILE = { backup_set_file_number | @backup_set_file_number }

Identifica el conjunto de copia de seguridad que se va a restaurar. Por ejemplo, un backup_set_file_number de indica el primer conjunto de 1 copia de seguridad en el medio de copia de seguridad y un backup_set_file_number de indica el segundo conjunto de copia de 2 seguridad. Puede obtener el backup_set_file_number de un conjunto de copia de seguridad mediante las instrucciones RESTORE : instrucción 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 obtener más información, vea Restore arguments (Transact-SQL).

MOVER 'logical_file_name_in_backup' A 'operating_system_file_name' [ , ... n ]

Especifica que los datos o el archivo de registro especificados por logical_file_name_in_backup se restaurarán en la ubicación especificada por operating_system_file_name. Especifique una MOVE instrucción para cada archivo lógico que quiera restaurar desde el conjunto de copia de seguridad en una nueva 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: Para obtener una lista de los archivos lógicos del conjunto de copia de seguridad, use instrucciones RESTORE - FILELISTONLY.
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 nuevo nombre de archivo para el archivo restaurado. Se necesita un nuevo nombre si va a crear una copia de una base de datos existente en la misma instancia del servidor.
n Marcador de posición que indica que puede especificar instrucciones adicionales MOVE .

Ejemplo (Transact-SQL)

En este ejemplo se crea una nueva base de datos denominada MyAdvWorks restaurando una copia de seguridad de la AdventureWorks2025 base de datos de ejemplo, que incluye dos archivos: AdventureWorks2025_Data y AdventureWorks2025_Log. Esta base de datos usa el modelo de recuperación simple. La base de datos AdventureWorks2025 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 RESTORE FILELISTONLY instrucción se usa para determinar el número y los nombres de los archivos de la base de datos que se va a restaurar. La copia de seguridad de la base de datos es el primer conjunto de copia de seguridad del dispositivo de copia de seguridad.

Nota:

Los ejemplos de copia de seguridad y restauración del registro de transacciones, incluidas las restauraciones a un momento dado, usan la MyAdvWorks_FullRM base de datos que se crea a partir de AdventureWorks2025, al igual que en el ejemplo siguiente MyAdvWorks . Sin embargo, la base de datos resultante MyAdvWorks_FullRM debe cambiarse para usar el modelo de recuperación completa mediante 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 AdventureWorks2025 base de datos, consulte Creación de una copia de seguridad completa de la base de datos.