Separar y adjuntar bases de datos (SQL Server)

Se aplica a:SQL Server

Los archivos de registro de datos y transacciones de una base de datos se pueden desasociar y volverse a adjuntar posteriormente a la misma instancia u otra instancia 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.

Permisos

Los permisos de acceso a archivos se establecen durante varias operaciones de base de datos, incluidas las operaciones de desasociar o adjuntar una base de datos.

Importante

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, ejecuta DBCC CHECKDB (Transact-SQL) en la base de datos de un servidor que no sea de producción y examina también el código, como procedimientos almacenados u otro código definido por el usuario, en la base de datos.

Separación de 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ás 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 puedes usar sp_replicationdboption, puedes quitar la replicación si ejecutas 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 Eliminar una instantánea de base de datos (Transact-SQL).

    Nota:

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

  • La base de datos forma parte de un grupo de disponibilidad Always On.

    La base de datos no se puede desasociar hasta que se quite del grupo de disponibilidad. Para obtener más información, consulte Eliminación de una base de datos principal de un grupo de disponibilidad Always On.

  • 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 (SQL Server).

  • La base de datos es sospechosa. Una base de datos sospechosa no puede ser separada. Antes de poder separarla, debes ponerla en modo de emergencia. Para obtener más información sobre 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.

Copia de seguridad, restaurar y separar

Al separar una base de datos de solo lectura se pierde información acerca de las bases diferenciales de las copias de seguridad diferenciales. Para obtener más información, consulta Copias de seguridad diferenciales (SQL Server).

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 solo 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 (9.x) que contiene los archivos de catálogo de texto completo a una instancia del servidor de SQL Server, 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 (9.x). Para obtener más información, vea Actualizar 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 solo lectura, el motor de base de datos considera que la base de datos es de solo 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 la base de datos (DMK) mediante la ejecución de la instrucción siguiente: OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password'. Se recomienda habilitar el descifrado automático de la DMK mediante la ejecución de la instrucción siguiente: 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 solo 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 adjunte correctamente sin ellos.

    Si una base de datos de lectura y escritura contiene solo 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.

  • Si el archivo de datos principal que se va a adjuntar es de solo lectura, el motor de base de datos considera que la base de datos es de solo lectura. Para una base de datos de solo 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 compilar un archivo de registro nuevo porque SQL Server no puede actualizar la ubicación del registro almacenada en el archivo principal.

Cambios en 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 master deja de estar sincronizada con la base de datos de solo lectura, de modo que las copias de seguridad diferenciales tomadas después pueden proporcionar resultados inesperados. Por lo tanto, si utilizas copias de seguridad diferenciales con una base de datos de solo lectura, deberás 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 sobre las copias de seguridad diferenciales, consulta Copias de seguridad diferenciales (SQL Server).

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, las operaciones de adjuntar y separar deshabilitan el encadenamiento de propiedades entre bases de datos para la base de datos. Para obtener más información sobre cómo habilitar el encadenamiento, vea cross db ownership chaining (opción de configuración del servidor).

Importante

De forma predeterminada y por motivos de seguridad, las opciones de is_broker_enabled, is_honor_broker_priority_on e is_trustworthy_on se establecen en OFF siempre que se adjunta la base de datos. Para información sobre cómo activar estas opciones, vea ALTER DATABASE (Transact-SQL). Para más información sobre los metadatos, consulta Administración de los metadatos cuando una base de datos pasa a estar disponible en otro servidor.

Copia de seguridad, restaurar 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

Importante

Una base de datos creada por una versión más reciente de SQL Server no puede adjuntarse en versiones anteriores. Esto evita que la base de datos se use físicamente con una versión anterior del motor de base de datos. Sin embargo, esto se relaciona con el estado de los metadatos y no afecta al nivel de compatibilidad de la base de datos. Para obtener más información, consulte Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).

Para ofrecer una experiencia consistente a los usuarios y a las aplicaciones, cuando adjuntas una base de datos a otra instancia de servidor, es posible que tenga que volver a crear una parte o la totalidad de los metadatos de la base de datos en la otra instancia de servidor. Estos metadatos incluyen, por ejemplo, inicios de sesión y trabajos. Para más información, consulta Administración de los metadatos cuando una base de datos pasa a estar disponible en otro servidor.

Tarea Artículo
Separación de una base de datos - sp_detach_db (Transact-SQL)
- Separar una base de datos
Adjuntar una base de datos - CREATE DATABASE
- Adjuntar una base de datos
- sp_attach_db (Transact-SQL)
- sp_attach_single_file_db (Transact-SQL)
Actualizar una base de datos mediante operaciones de separar y adjuntar - Actualizar una base de datos mediante separar y adjuntar (Transact-SQL)
Mover una base de datos mediante operaciones de separar y adjuntar - Mover una base de datos mediante separar y adjuntar (Transact-SQL)
Eliminar una instantánea de base de datos - Eliminar una instantánea de base de datos (Transact-SQL)