Separar y adjuntar bases de datos
Actualizado: 12 de diciembre de 2006
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.
[!NOTA] 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.
Separar una base de datos
Al separar una base de datos la está eliminando 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 la instrucción sp_replicationdboption, puede eliminar la réplica ejecutando sp_removedbreplication.
La base de datos contiene una instantánea de la base de datos.
Antes de separar la base de datos, debe quitar todas las 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, 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.
Al separar una base de datos se borra la caché del plan para la instancia de SQL Server. Al borrar la caché del plan, se provoca una nueva compilación de todos los planes de ejecución posteriores y puede ocasionar una disminución repentina y temporal del rendimiento de las consultas. En el Service Pack 2 de SQL Server 2005, para cada almacén de caché borrado de la caché del plan, el registro de errores de SQL Server contendrá el siguiente mensaje informativo: "SQL Server ha detectado %d instancias de vaciado del almacén de caché '%s' (parte de la caché del plan) debido a determinadas operaciones de mantenimiento de base de datos o reconfiguración". Este mensaje se registra cada cinco minutos siempre que se vacía la caché dentro de ese intervalo de tiempo.
Para separar una base de datos
Hacer y restaurar copias de seguridad 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:
- Vuelva a adjuntar todos los archivos asociados a la base de datos, no sólo el archivo principal.
- Resuelva el problema que causó el mensaje de error.
- Vuelva a separar la base de datos.
Adjuntar una base de datos
Puede adjuntar una base de datos de SQL Server copiada o separada. En SQL Server 2005, los archivos de texto que forman parte de la base de datos se adjuntan a ésta. Para obtener más información, vea Adjuntar y separar catálogos de texto.
Nota 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 dañino 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. |
Al adjuntar, la base de datos se inicia. Normalmente, al adjuntar una base de datos, ésta vuelve al mismo estado en el que estaba cuando fue separada o copiada. Sin embargo, en SQL Server 2005, 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).
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, Database Engine (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 Descripción de la arquitectura del registro de transacciones. - Si el archivo de datos principal que se va a adjuntar es de sólo lectura, Database Engine (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.
Importante: Cuando se separa y se vuelve a adjuntar una base de datos de sólo lectura, se pierde la información base diferencial. Esto hace que la base de datos master se vuelva no sincronizada con la base de datos de sólo lectura. Las copias de seguridad diferenciales creadas después de esto pueden producir resultados inesperados. Por lo tanto, si utiliza copias de seguridad diferenciales con una base de datos de sólo lectura, tras volver a adjuntar la base de datos, deberá establecer una base diferencial actual realizando una copia de seguridad completa.
Hacer y restaurar copias de seguridad y adjuntar
Al igual que cualquier base de datos que esté total o parcialmente desconectada, 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.
[!NOTA] La operación de adjuntar funciona correctamente con el formato de almacenamiento vardecimal. Pero cada Database Engine (Motor de base de datos) debe actualizarse, como mínimo, al Service Pack 2 de SQL Server 2005 y todas las bases de datos relacionadas deben habilitarse para el formato de almacenamiento vardecimal. Por ejemplo, no se puede adjuntar una base de datos del Service Pack 2 que tenga un formato de almacenamiento vardecimal y que esté habilitada para una versión anterior de SQL Server. Para obtener más información acerca del formato de almacenamiento vardecimal, vea Almacenar datos decimales como longitud variable.
Para adjuntar una base de datos
Para actualizar una base de datos de una versión anterior de SQL Server
En SQL Server 2005, puede utilizar las operaciones de separar y adjuntar para actualizar una base de datos de usuario de SQL Server versión 7.0 o SQL Server 2000. Sin embargo, se aplican las siguientes restricciones:
- Las copias de las bases de datos master, model o msdb creadas mediante SQL Server 7.0 o SQL Server 2000 no pueden adjuntarse en SQL Server 2005.
- Los archivos de registro de SQL Server 7.0 que contienen operaciones de creación de índices no pueden adjuntarse en SQL Server 2000 o SQL Server 2005.
- Si se adjunta 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 réplica 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 réplica 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
Importante: |
---|
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:
- Separar la base de datos.
- Mover los archivos de la base de datos a otro disco o servidor.
- 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
Vea también
Conceptos
Separar y adjuntar bases de datos
Proteger archivos de datos y de registro
Descripción de archivos y grupos de archivos
Otros recursos
CREATE DATABASE (Transact-SQL)
sp_detach_db (Transact-SQL)
Ayuda e información
Obtener ayuda sobre SQL Server 2005
Historial de cambios
Versión | Historial |
---|---|
12 de diciembre de 2006 |
|
17 de julio de 2006 |
|
17 de julio de 2006 |
|
5 de diciembre de 2005 |
|