Cómo restaurar una base de datos en una ubicación nueva y con un nombre nuevo (Transact-SQL)

En este tema se explica cómo restaurar una copia de seguridad de base de datos completa en una nueva ubicación y, opcionalmente, con otro nombre. Este procedimiento permite mover una base de datos o crear una copia de una base de datos en la misma instancia de servidor o en una instancia de servidor diferente. Para obtener información acerca de las consideraciones para mover una base de datos, vea Copiar bases de datos con Copia de seguridad y restauración.

Requisitos previos y recomendaciones

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

  • 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 Transact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física. Para utilizar 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.

Nivel de compatibilidad de la base de datos después de actualizar

Los niveles de compatibilidad de las bases de datos tempdb, model, msdb y Resource quedan establecidos en 100 después de la actualización. La base de datos maestra del sistema conserva el nivel de compatibilidad que tenía antes de la actualización, a menos que dicho nivel sea inferior a 80. Si el nivel de compatibilidad de la base de datos maestra era inferior a 80 antes de la actualización, se establece en 80 después de la misma.

Si el nivel de compatibilidad de una base de datos de usuario era 80 o 90 antes de la actualización, permanece igual después de la misma. Si el nivel de compatibilidad era igual o inferior a 70 antes de la actualización, en la base de datos actualizada, el nivel de compatibilidad se establece en 80, que es el nivel de compatibilidad mínimo admitido en SQL Server 2008.

[!NOTA]

Las bases de datos de usuario nuevas heredarán el nivel de compatibilidad de la base de datos modelo.

Procedimientos

Para restaurar una base de datos en una nueva ubicación y con un nombre diferente

  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 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 <backup_device> WITH FILE = backup_set_file_number

    [!NOTA]

    Puede obtener el backup_set_file_number de un conjunto de copia de seguridad mediante la instrucción RESTORE HEADERONLY.

    Esta instrucción también admite varias opciones de WITH. Para obtener más información, vea RESTORE FILELISTONLY (Transact-SQL).

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

    A continuación se muestra la sintaxis básica de Transact-SQL para restaurar la base de datos en una ubicación nueva y con un nombre nuevo:

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

    • { 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 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 obtener más información, vea "Especificar un conjunto de copia de seguridad" en RESTORE (argumentos, 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.

      NotaNota
      Utilice RESTORE FILELISTONLY para 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 fuese 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.

[!NOTA]

Después de restaurar una base de datos de SQL Server 2005 o SQL Server 2000 a SQL Server 2008, la base de datos pasa a estar disponible inmediatamente y, después, se actualiza de forma automática. Si la base de datos tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, dependiendo del valor 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.

Ejemplo

Descripción

En este ejemplo se crea una base de datos denominada MyAdvWorks. MyAdvWorks es una copia de la base de datos AdventureWorks existente que incluye dos archivos: AdventureWorks_Data y AdventureWorks_Log. Esta base de datos usa el modelo de recuperación simple. La base de datos AdventureWorks 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 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]

Para obtener un ejemplo de cómo crear una copia de seguridad completa de la base de datos AdventureWorks, vea Cómo crear una copia de seguridad de la base de datos completa (Transact-SQL).

[!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 AdventureWorks igual que en el siguiente ejemplo MyAdvWorks. Sin embargo, la base de datos MyAdvWorks_FullRM resultante debe cambiarse para usar el modelo de recuperación completa: ALTER DATABASE MyAdvWorks_FullRM SET RECOVERY FULL.

Código

USE master
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks_Backup is the name of the backup device.
RESTORE FILELISTONLY
   FROM AdventureWorks_Backup
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
   FROM AdventureWorks_Backup
   WITH RECOVERY,
   MOVE 'AdventureWorks_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
   MOVE 'AdventureWorks_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf'
GO