Adjuntar una base de datos

Se aplica a: SQL Server

Este artículo describe cómo adjuntar una base de datos en SQL Server con SQL Server Management Studio o Transact-SQL. Puede usar esta característica para copiar, mover o actualizar una base de datos de SQL Server.

Limitaciones y restricciones

Para obtener una lista de las limitaciones y restricciones, consulte Adjuntar y separar bases de datos (SQL Server).

Requisitos previos

Revise los siguientes requisitos previos antes de continuar:

  • En el caso de que mueva una base de datos de una instancia a otra, la base de datos debe soltarse primero de cualquier instancia SQL existente. Si intenta adjuntar una base de datos que no se ha separado, se devolverá un error. Para obtener más información, vea Separar una base de datos

  • Al adjuntar una base de datos, todos los archivos de datos de la base de datos deben estar disponibles. A menudo, estos archivos tienen extensiones .mdf o .ndf (para archivos de datos) y .ldf (para archivos de registro de transacciones). Además, todos los grupos de archivos para los datos FILESTREAM deben estar presentes y disponibles. Para obtener más información sobre cómo adjuntar una base de datos habilitada para FILESTREAM, consulte Mover una base de datos habilitada para FILESTREAM.

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

  • La cuenta de servicio del motor de base de datos servicio debe tener permisos para leer los archivos en su nueva ubicación.

  • Si los archivos MDF y LDF se encuentran en directorios diferentes y una de las rutas de acceso incluye \\?\GlobalRoot, se producirá un error en la operación al adjuntar una base de datos.

¿Adjuntar es la mejor opción?

Se recomienda mover las bases de datos en una instancia con el procedimiento de reubicación programada ALTER DATABASE, en lugar del método de separar y adjuntar, al mover archivos de bases de datos dentro de la misma instancia. Para más información, consulte Move User Databases.

No se recomienda separar y adjuntar para copia de seguridad y recuperación. No hay ninguna copia de seguridad del registro de transacciones o recuperación a un momento dado disponible al separar archivos de los que se va a realizar una copia de seguridad externamente desde SQL Server.

Seguridad

Los permisos de acceso a archivos se establecen durante muchas operaciones de base de datos, incluso cuando se separa y adjunta una base de datos. Al separar o adjuntar una base de datos, el motor de base de datos intenta suplantar la cuenta de Windows de la conexión que realiza la operación para comprobar que la cuenta tenga permiso de acceso a los archivos de base de datos y de registro. En el caso de las cuentas de seguridad mixta que utilizan inicios de sesión de SQL Server, puede que la suplantación provoque errores.

En la tabla siguiente se muestran los permisos establecidos en los archivos de base de datos y de registro una vez completada una operación de adjuntar o separar, y si el motor de base de datos puede suplantar la cuenta de conexión.

Operación La cuenta de conexión se puede suplantar Se conceden permisos de archivos a
Desasociar Solo la cuenta que realiza la operación. Si es necesario, el administrador del sistema operativo puede agregar cuentas una vez separada la base de datos.
Desasociar No La cuenta de servicio de SQL Server (MSSQLSERVER) y los miembros del grupo de administradores de Windows local.
Attach La cuenta de servicio de SQL Server (MSSQLSERVER) y los miembros del grupo de administradores de Windows local.
Attach No La cuenta de servicio usada por SQL Server (MSSQLServer).

Para obtener más información sobre los permisos del sistema de archivos concedidos a los SID por servicio para el servicio SQL Server, vea Configurar permisos del sistema de archivos para el acceso al motor de base de datos.

Precaución

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, 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 obtener más información sobre cómo adjuntar bases de datos y sobre los cambios que se realizan en los metadatos al adjuntar una base de datos, vea Adjuntar y separar bases de datos (SQL Server).

Permisos

Requiere el permiso CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE.

Usar SQL Server Management Studio (SSMS)

Antes de mover una base de datos

Si va a mover una base de datos, antes de separarla de su instancia de SQL Server existente, use la página Propiedades de la base de datos para revisar los archivos asociados a la base de datos y sus ubicaciones actuales.

  1. En el Explorador de objetos de SQL Server Management Studio, conéctese a la instancia del motor de base de datos de SQL Server y, a continuación, expanda la instancia.

  2. Expanda Bases de datosy seleccione el nombre de la base de datos de usuarios que desee separar.

  3. Haga clic con el botón derecho en la base de datos y seleccione Propiedades. Seleccione la página Archivos y revise las entradas de la tabla Archivos de base de datos:.

Asegúrese de tener en cuenta todos los archivos asociados a la base de datos antes de separar, mover y adjuntar. Después, continúe con los pasos de separación, copia de archivos y asociación de la base de datos en la sección siguiente. Para obtener más información, vea Separar una base de datos

Adjuntar una base de datos

  1. En el explorador de objetos de SQL Server Management Studio, conéctese a una instancia del motor de base de datos de SQL Server y, a continuación, seleccione para expandir esa vista de instancia en SSMS.

  2. Haga clic con el botón derecho en Bases de datos y seleccione Adjuntar.

  3. En el cuadro de diálogo Adjuntar bases de datos, para especificar la base de datos que se adjuntará, seleccione Agregar. En el cuadro de diálogo Buscar archivos de base de datos, seleccione la ubicación donde reside la base de datos y expanda el árbol de directorios para buscar y seleccionar el archivo .mdf de la base de datos; por ejemplo:

    C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf

    Importante

    Si intenta seleccionar una base de datos que ya ha sido adjuntada se producirá un error.

    Bases de datos que se van a adjuntar
    Muestra información sobre las bases de datos seleccionadas.

    <sin encabezado de columna>
    Muestra un icono que indica el estado de la operación de adjuntar. Los iconos posibles se indican en la descripción de Estado.

    Ubicación del archivo MDF
    Muestra la ruta de acceso y el nombre del archivo MDF seleccionado.

    Nombre de la base de datos
    Muestra el nombre de la base de datos.

    Adjuntar como
    Opcionalmente, especifica un nombre distinto con el que se debe adjuntar la base de datos.

    Propietario
    Ofrece una lista desplegable de los posibles propietarios de base de datos desde los que opcionalmente puede seleccionarse otro propietario.

    Estado
    Muestra el estado de la base de datos de acuerdo con la tabla siguiente:

    Iconos Texto de estado Descripción
    (Sin icono) (Sin texto) La operación de adjuntar no se ha iniciado o puede estar pendiente para este objeto. Es la opción predeterminada al abrir el diálogo.
    Triángulo verde hacia la derecha En curso La operación de adjuntar se ha iniciado, pero no ha finalizado.
    Marca de verificación verde Correcto El objeto se ha adjuntado correctamente.
    Círculo rojo con una cruz blanca Error La operación de adjuntar ha detectado un error y no ha finalizado correctamente.
    Círculo con dos cuadrantes negros (a la izquierda y la derecha) y dos cuadrantes blancos (en la parte superior e inferior) Detenido La operación de adjuntar no ha finalizado correctamente porque la ha detenido.
    Círculo con una flecha curvada que apunta hacia la izquierda Revertido La operación de adjuntar se ha ejecutado correctamente, pero se ha revertido debido a un error al adjuntar otro objeto.

    Mensaje
    Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".

    Add (Agregar)
    Busca los archivos de base de datos principales necesarios. Si selecciona un archivo .mdf, la información pertinente se llena automáticamente en los respectivos campos de la cuadrícula Bases de datos que se van a adjuntar .

    Remove
    Quita el archivo seleccionado de la cuadrícula Bases de datos que se van a adjuntar .

    " <database_name> " detalles de la base de datos
    Muestra los nombres de los archivos que se van a adjuntar. Para comprobar o cambiar el nombre de la ruta de acceso de un archivo, seleccione el botón Examinar (...).

    Nota:

    Si no existe un archivo, la columna Mensaje muestra "No encontrado". Si no se encuentra un archivo de registro, existe en otro directorio o se ha eliminado. En tal caso, debe actualizar la ruta de acceso del archivo en la cuadrícula Detalles de la base de datos para que señale la ubicación correcta o eliminar el archivo de registro de la cuadrícula. Si un archivo de datos .ndf no se encuentra, debe actualizar su ruta de acceso en la cuadrícula para que señale la ubicación correcta.

    Nombre del archivo original
    Muestra el nombre del archivo adjunto que pertenece a la base de datos.

    Tipo de archivo
    Indica el tipo de archivo, que puede ser de datos o de registro.

    Ruta de acceso del archivo actual
    Muestra la ruta de acceso del archivo de base de datos seleccionado. La ruta de acceso puede modificarse manualmente.

    Mensaje
    Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".

Uso de Transact-SQL

Antes de mover una base de datos

Si va a mover una base de datos, antes de que se separe de su instancia de SQL Server existente, use la vista de catálogo del sistema sys.database_files para revisar los archivos asociados a la base de datos y sus ubicaciones actuales. Para obtener más información, consulte sys.database_files (Transact-SQL).

  1. En SQL Server Management Studio, seleccione Nueva consulta para abrir el Editor de Power Query.

  2. Copie el siguiente script de Transact-SQL en el Editor de Power Query y, a continuación, seleccione Ejecutar. Este script muestra la ubicación de los archivos de base de datos físicos. Asegúrese de tener en cuenta todos los archivos al mover la base de datos mediante separación y asociación.

    USE [database_name] 
    GO  
    SELECT type_desc, name, physical_name from sys.database_files;
    

Asegúrese de tener en cuenta todos los archivos asociados a la base de datos antes de separar, mover y adjuntar. Después, continúe con los pasos de separación, copia de archivos y asociación de la base de datos en la sección siguiente. Para obtener más información, vea Separar una base de datos

Para adjuntar una base de datos

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, seleccione Nueva consulta.

  3. Use la instrucción CREATE DATABASE con la cláusula FOR ATTACH.

    Copie y pegue el ejemplo siguiente en la ventana de consulta y seleccione Ejecutar. En este ejemplo se adjuntan todos los archivos de la base de datos AdventureWorks2022 y se cambia el nombre de la base de datos a MyAdventureWorks.

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    

    La base de datos puede tener archivos de datos adicionales (normalmente, .mdf o .ndf) y requerir que se incluyan archivos adicionales en la instrucción CREATE DATABASE ... FOR ATTACH. Además, los grupos de archivos para los datos FILESTREAM también deben incluirse en la instrucción. Para obtener más información sobre cómo adjuntar una base de datos habilitada para FILESTREAM, consulte Mover una base de datos habilitada para FILESTREAM.

    Nota:

    También puede usar los procedimientos almacenados sp_attach_db o sp_attach_single_file_db . Sin embargo, estos procedimientos se quitarán en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Se recomienda utilizar CREATE DATABASE ... FOR ATTACH en su lugar.

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

Nivel de compatibilidad de la base de datos

Después de actualizar una base de datos mediante el método de asociación, la base de datos pasa a estar disponible. La base de datos se actualizará automáticamente al nivel de la versión interna de la nueva instancia. Si la base de datos tiene índices de texto completo, el proceso de actualización los importa, los restablece o los vuelve a generar, en función del valor de la propiedad del servidor Opción de actualización de texto completo . Si la opción de actualización se establece en Importar o en Volver a generar, los índices de texto completo no están disponibles durante la actualización. Dependiendo de la cantidad de datos que se indicen, la importación puede tardar varias horas en completarse y la duración de la regeneración puede multiplicarse por diez. Tenga en cuenta también que si la opción de actualización se establece en Importary no hay disponible ningún catálogo de texto completo, se vuelven a generar los índices de texto completo asociados.

Tras la actualización, el nivel de compatibilidad de la base de datos sigue siendo el mismo que antes de hacerla, a menos que el anterior nivel de compatibilidad no se admita en la nueva versión. En este caso, el nivel de compatibilidad de la base de datos tras la actualización se establece en el mínimo admitido. Por ejemplo, si adjunta una base de datos que tenía un nivel de compatibilidad 90 antes de adjuntarla a una instancia de SQL Server 2019 (15.x), después de la actualización el nivel de compatibilidad se establece en 100, que es el nivel de compatibilidad más bajo admitido en SQL Server 2019 (15.x). Para obtener más información, vea Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).

Captura de datos modificados (CDC)

Si va a adjuntar una base de datos de una instancia de SQL Server 2014 (12.x) o versiones anteriores que tenían una captura de datos de cambios (CDC) habilitada, también tendrá que ejecutar el comando siguiente para actualizar los metadatos de captura de datos de cambios (CDC):

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Para obtener más información, vea Error al adjuntar una base de datos habilitada para CDC a una instancia de SQL Server 2016 o SQL Server 2017 en Windows.

Consulte también

Pasos siguientes