Actualizar una base de datos mediante Separar y Adjuntar (Transact-SQL)

En este tema se describe cómo usar las operaciones de separar y adjuntar para actualizar una base de datos de SQL Server 2005, SQL Server 2008 o SQL Server 2008 R2 en SQL Server 2012. Después de asociarla a SQL Server 2012, la base de datos de está disponible de inmediato y se actualiza automáticamente.

En este tema

  • Antes de empezar:

    Limitaciones y restricciones

    Recomendaciones

  • Para actualizar una base de datos de SQL Server:

    Usando operaciones de separar y adjuntar

  • Seguimiento:  Después de actualizar una base de datos de SQL Server

Antes de empezar

Limitaciones y restricciones

  • Las bases de datos del sistema no pueden adjuntarse.

  • Las operaciones de adjuntar y separar deshabilitan el encadenamiento de propiedad entre bases de datos si se establece la opción cross db ownership chaining en 0. Para obtener información sobre cómo habilitar el encadenamiento, vea cross db ownership chaining (opción de configuración del servidor).

  • Cuando adjunte una base de datos replicada que fue copiada en lugar de separada:

    • Si se adjunta la base de datos a una versión actualizada de la misma instancia de servidor, es necesario ejecutar sp_vupgrade_replication para actualizar la replicación una vez finalizada la operación de adjuntar. Para obtener más información, vea sp_vupgrade_replication (Transact-SQL).

    • Si adjunta la base de datos a una instancia de servidor diferente, sin que importe la versión, debe ejecutar sp_removedbreplication para quitar la replicación una vez completada la operación de adjuntar. Para obtener más información, vea sp_removedbreplication (Transact-SQL).

Recomendaciones

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

Para actualizar una base de datos mediante las operaciones de separar y adjuntar

  1. Separe la base de datos. Para obtener más información, vea Separar una base de datos.

  2. También puede mover los archivos de la base de datos separada y los archivos de registro.

    Debe mover los archivos de registro, junto con los archivos de datos, incluso aunque piense crear archivos de registro. En algunos casos, para volver a adjuntar una base de datos son necesarios sus archivos de registro. Por tanto, mantenga siempre todos los archivos de registro separados hasta que la base de datos se haya adjuntado correctamente sin ellos.

    [!NOTA]

    Si intenta adjuntar la base de datos sin especificar el archivo de registro, la operación de adjuntar buscará el archivo de registro en su ubicación original. Si la copia original del registro todavía está en esa ubicación, se adjuntará esa copia. Para evitar que se utilice el archivo de registro original, especifique la ruta de acceso del nuevo archivo de registro o elimine la copia original del archivo de registro (después de copiarlo en la nueva ubicación).

  3. Adjunte los archivos copiados a la instancia de SQL Server 2012. Para obtener más información, vea Adjuntar una base de datos.

Icono de flecha usado con el vínculo Volver al principio[Top]

Ejemplo

El ejemplo siguiente actualiza una copia de una base de datos de una versión anterior de SQL Server. Las instrucciones Transact-SQL se ejecutan en una ventana del Editor de consultas que esté conectada a la instancia del servidor a la que se ha adjuntado.

  1. Separe la base de datos ejecutando las siguientes instrucciones Transact-SQL:

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'MyDatabase';
    GO
    
  2. Mediante el método que elija, copie los archivos de datos y de registro a la nueva ubicación.

    Nota importanteImportante

    En el caso de una base de datos de producción, coloque la base de datos y el registro de transacciones en discos independientes.

    Para copiar archivos a través de la red en un disco de un equipo remoto, use el nombre UNC (Convención de nomenclatura universal) de la ubicación remota. Un nombre UNC tiene el formato **\\Servername\Sharename\Path\**Filename. De la misma forma que al escribir archivos en el disco duro local, se debe conceder a la cuenta de usuario que usa la instancia de SQL Server los permisos necesarios para leer o escribir en archivos del disco remoto.

  3. Adjunte la base de datos movida y, opcionalmente, su registro ejecutando la siguiente instrucción Transact-SQL:

    USE master;
    GO
    CREATE DATABASE MyDatabase 
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),
        (FILENAME = 'C:\MySQLServer\Database.ldf')
        FOR ATTACH;
    GO
    

    En SQL Server Management Studio, una base de datos recién adjuntada no es inmediatamente visible en el Explorador de objetos. Para ver la base de datos, en el Explorador de objetos, haga clic en Ver y, a continuación, en Actualizar. Cuando se expande el nodo Bases de datos en el Explorador de objetos, la base de datos recién adjuntada aparecerá en la lista de bases de datos.

Seguimiento: Después de actualizar una base de datos de SQL Server

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.

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

Si el nivel de compatibilidad de una base de datos de usuario es 90 o 100 antes de la actualización, permanece igual después de la misma. Si el nivel de compatibilidad era igual o inferior a 80 antes de la actualización, en la base de datos actualizada, el nivel de compatibilidad se establece en 90, que es el nivel de compatibilidad mínimo admitido en SQL Server 2012. Para obtener más información, vea Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).

Administrar metadatos en la instancia de servidor actualizada

Al adjuntar una base de datos a otra instancia de servidor, para que los usuarios y las aplicaciones puedan utilizarla de igual manera, puede que tenga que volver a crear algunos o todos los metadatos de la base de datos, como los inicios de sesión, los trabajos y los permisos, en la otra instancia de servidor. Para obtener más información, vea Administrar los metadatos cuando una base de datos pasa a estar disponible en otra instancia de servidor (SQL Server).

La clave maestra de servicio y el cifrado de la clave maestra de la base de datos cambia de 3DES a AES

SQL Server 2012 usa el algoritmo de cifrado AES para proteger la clave maestra de servicio (SMK) y la clave maestra de la base de datos (DMK). AES es un algoritmo de cifrado más reciente que el algoritmo 3DES empleado en versiones anteriores. 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.

Icono de flecha usado con el vínculo Volver al principio[Top]