Separar y adjuntar bases de datos

Los datos y archivos de registro de transacciones de una base de datos pueden separarse y volverse a adjuntar a la misma instancia, o a otra, de SQL Server. Separar y adjuntar una base de datos es útil si desea cambiar la base de datos a otra instancia de SQL Server en el mismo equipo o si desea mover la base de datos.

Nota

El formato de almacenamiento en disco de SQL Server es el mismo en los entornos de 64 bits y 32 bits. Por lo tanto, la operación de adjuntar funciona en entornos de 32 bits y de 64 bits. Una base de datos separada de una instancia del servidor que se ejecute en un entorno puede adjuntarse a una instancia del servidor que se ejecute en otro entorno.

Para obtener información acerca de los permisos de archivo que se establecen al separar y adjuntar una base de datos, vea Proteger archivos de datos y de registro.

Seguridad

Los permisos de acceso a archivos se establecen durante varias operaciones de la base de datos, incluso al separar o adjuntar una base de datos. Para obtener información acerca de los permisos de archivo que se establecen al separar y adjuntar una base de datos, vea Proteger archivos de datos y de registro.

Nota de seguridadNota 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. Antes de utilizar una base de datos de un origen desconocido o que no sea de confianza, ejecute DBCC CHECKDB en la base de datos en un servidor que no sea de producción y examine el código de la base de datos, como procedimientos almacenados u otro código definido por el usuario.

Separar una base de datos

Al separar una base de datos, la está quitando de la instancia de SQL Server, pero la deja intacta en sus archivos de datos y en los archivos de registro de transacciones. Estos archivos pueden utilizarse después para adjuntar la base de datos a cualquier instancia de SQL Server, incluido el servidor del que se separó.

No podrá separar una base de datos si se cumple cualquiera de las condiciones siguientes:

  • La base de datos está replicada y publicada. Si está replicada, la base de datos no debe estar publicada. Antes de separarla, debe deshabilitar la publicación ejecutando sp_replicationdboption.

    Nota

    Si no puede utilizar sp_replicationdboption, puede quitar la replicación ejecutando sp_removedbreplication.

  • Existe una instantánea de base de datos en la base de datos.

    Para poder separar la base de datos, debe quitar todas sus instantáneas. Para obtener más información, vea Cómo eliminar una instantánea de base de datos (Transact-SQL).

    Nota

    No puede separar ni adjuntar una instantánea de base de datos.

  • Se va a reflejar la base de datos en una sesión de creación de reflejo de la base de datos.

    No se puede separar la base de datos a menos que se termine la sesión. Para obtener más información, vea Quitar la creación de reflejo de la base de datos.

  • La base de datos es sospechosa. En SQL Server 2005 y versiones posteriores, una base de datos sospechosa no puede ser separada. Antes de poder separarla, debe ponerla en modo de emergencia. Para obtener más información acerca de cómo poner una base de datos en modo de emergencia, vea ALTER DATABASE (Transact-SQL).

  • La base de datos es una base de datos del sistema.

Para separar una base de datos

Hacer copias de seguridad y restauración, y separar

Al separar una base de datos de sólo lectura se pierde información acerca de las bases diferenciales de las copias de seguridad diferenciales. Para obtener más información, vea Crear copias de seguridad de las bases de datos de sólo lectura.

Responder a errores de separación

Los errores generados durante la separación de una base de datos pueden impedir que la base de datos se cierre sin problemas y que se vuelva a generar el registro de transacciones. Si recibe un mensaje de error, realice las siguientes acciones correctoras:

  1. Vuelva a adjuntar todos los archivos asociados a la base de datos, no sólo el archivo principal.

  2. Resuelva el problema que causó el mensaje de error.

  3. Vuelva a separar la base de datos.

Adjuntar una base de datos

Puede adjuntar una base de datos de SQL Server copiada o separada. Al adjuntar una base de datos de SQL Server 2005 que contiene los archivos de catálogo de texto completo a una instancia del servidor de SQL Server 2008, los archivos de catálogo se adjuntan de su ubicación anterior junto con los demás archivos de base de datos, igual que en SQL Server 2005. Para obtener más información, vea Actualización de la búsqueda de texto completo.

Al adjuntar una base de datos, todos los archivos de datos deben estar disponibles (archivos MDF y NDF). Si algún archivo de datos tiene una ruta de acceso diferente a la que tenía cuando se creó la base de datos o cuando ésta se adjuntó por última vez, debe especificar la ruta actual.

Nota

Si el archivo de datos principal que se va a adjuntar es de sólo lectura, Motor de base de datos considera que la base de datos es de sólo lectura.

Cuando se adjunta una base de datos cifrada a una instancia de SQL Server por primera vez, el propietario debe abrir la clave maestra de esa base de datos ejecutando la siguiente instrucción: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Se recomienda habilitar el descifrado automático de la clave maestra mediante la ejecución de la siguiente instrucción: ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Para obtener más información, vea CREATE MASTER KEY (Transact-SQL) y ALTER MASTER KEY (Transact-SQL).

Las condiciones para adjuntar archivos de registro dependen, en parte, de si la base de datos es de lectura y escritura o de sólo lectura. Vea a continuación:

  • Para una base de datos de lectura y escritura, normalmente, podrá adjuntar un archivo de registro a una ubicación nueva. Sin embargo, en algunos casos, para volver a adjuntar una base de datos son necesarios sus archivos de registro. Por tanto, es importante mantener siempre todos los archivos de registro separados hasta que la base de datos se haya adjuntado correctamente sin ellos.

    Si una base de datos de lectura y escritura contiene sólo un archivo de registro y no se especifica una ubicación nueva para el mismo, al adjuntar la base de datos se buscará el archivo en la ubicación antigua. Si se encuentra, se usará el archivo de registro antiguo, sin tener en cuenta si la base de datos se cerró correctamente. No obstante, si el archivo de registro antiguo no se encuentra, la base de datos se cerró correctamente y no hay ninguna cadena de registros activa, al adjuntar se intentará crear un archivo de registro nuevo para la base de datos. Para obtener más información, vea Arquitectura lógica del registro de transacciones y Arquitectura física del registro de transacciones.

  • Si el archivo de datos principal que se va a adjuntar es de sólo lectura, Motor de base de datos considera que la base de datos es de sólo lectura. Para una base de datos de sólo lectura, los archivos de registro deben estar disponibles en la ubicación especificada en el archivo principal de la base de datos. No se puede crear un archivo de registro nuevo porque SQL Server no puede actualizar la ubicación del registro almacenada en el archivo principal.

Cambia los metadatos al adjuntar una base de datos

Cuando se separa y se vuelve a adjuntar una base de datos de solo lectura, se pierde la información de copia de seguridad acerca de la base diferencial. La base diferencial es la copia de seguridad más reciente de todos los datos de una base de datos o de un subconjunto de archivos o grupos de archivos de la misma. Sin la información de la copia de seguridad básica, la base de datos maestra deja de estar sincronizada con la base de datos de sólo lectura, de modo que las copias de seguridad diferenciales tomadas después pueden proporcionar resultados inesperados. Por lo tanto, si utiliza copias de seguridad diferenciales con una base de datos de solo lectura, deberá establecer una nueva base diferencial actual realizando una copia de seguridad completa después de volver a adjuntar la base de datos. Para obtener más información, vea Base de una copia de seguridad diferencial.

Al adjuntar, la base de datos se inicia. Normalmente, al adjuntar una base de datos, esta vuelve al mismo estado en el que estaba cuando fue separada o copiada. Sin embargo, en SQL Server 2005 y versiones posteriores, las operaciones de adjuntar y separar deshabilitan el encadenamiento de propiedades entre bases de datos para la base de datos. Para obtener información acerca de cómo habilitar el encadenamiento, vea cross db ownership chaining (opción). Asimismo, TRUSTWORTHY se establece en OFF siempre que la base de datos se adjunta. Para obtener información acerca de cómo establecer TRUSTWORTHY en ON, vea ALTER DATABASE (Transact-SQL).

Hacer copias de seguridad y restauración, y adjuntar

Al igual que cualquier base de datos que esté total o parcialmente sin conexión, no es posible adjuntar una base de datos con archivos que se estén restaurando. Puede adjuntar la base de datos si detiene la secuencia de restauración. Posteriormente, puede reiniciar la secuencia de restauración.

Adjuntar una base de datos a otra instancia de servidor

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, por ejemplo los inicios de sesión y los trabajos, 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.

Nota

Una base de datos creada por una versión más reciente de SQL Server no puede adjuntarse en versiones anteriores.

Para adjuntar una base de datos

Para actualizar una base de datos de una versión anterior de SQL Server

En SQL Server 2008, puede utilizar las operaciones de separar y adjuntar para actualizar una base de datos de usuario de SQL Server 2000 o SQL Server 2005. Sin embargo, se aplican las siguientes restricciones:

  • Las copias de las bases de datos maestra, modelo o msdb creadas mediante SQL Server 2000 o SQL Server 2005 no pueden adjuntarse.

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

Para actualizar una base de datos mediante el método de separar y adjuntar

Mover bases de datos o archivos de bases de datos

Nota importanteImportante

Se recomienda mover las bases de datos mediante el procedimiento de reubicación programada ALTER DATABASE, en lugar del método de separar y adjuntar. Para obtener más información, vea Mover archivos de base de datos.

Normalmente, puede utilizar puede utilizar las operaciones de separar y adjuntar para mover una base de datos. Entre los casos habituales se incluye mover una base de datos a una de las ubicaciones siguientes:

  • Un disco físico distinto en el mismo equipo. Por ejemplo, cuando el disco que contiene un archivo de datos se ha quedado sin espacio en disco y desea expandir el archivo existente (en lugar de expandir la base de datos agregando un archivo nuevo en un disco distinto).

  • Un equipo distinto, sin necesidad de volver a crear la base de datos ni de restaurar la copia de seguridad de base de datos.

Separar y adjuntar una base de datos para moverla implica los pasos siguientes:

  1. Separar la base de datos.

  2. Mover los archivos de la base de datos a otro disco o servidor.

  3. Adjuntar la base de datos y especificar la nueva ubicación de los archivos movidos.

Para mover una base de datos mediante el método de separar y adjuntar