Adjuntar una base de datosAttach a Database

SE APLICA A: síSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

En este tema se describe cómo adjuntar una base de datos en SQL Server 2019 (15.x)SQL Server 2019 (15.x) mediante SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to attach a database in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Puede usar esta característica para copiar, mover o actualizar una base de datos de SQL ServerSQL Server.You can use this feature to copy, move, or upgrade a SQL ServerSQL Server database.

Requisitos previosPrerequisites

  • La base de datos se debe separar primero.The database must first be detached. Si intenta adjuntar una base de datos que no se ha separado, se devolverá un error.Attempting to attach a database that has not been detached will return an error. Para obtener más información, vea Separar una base de datosFor more information, see Detach a Database.

  • Al adjuntar una base de datos, todos los archivos de datos deben estar disponibles (archivos MDF y LDF).When you attach a database, all data files (MDF and LDF files) must be available. 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.If any data file has a different path from when the database was first created or last attached, you must specify the current path of the file.

  • Cuando se adjunta una base de datos, 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.When you attach a database, if MDF and LDF files are located in different directories and one of the paths includes \\?\GlobalRoot, the operation will fail.

¿Adjuntar es la mejor opción?Is Attach the best choice?

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, al mover archivos de bases de datos dentro de la misma instancia.We recommend that you move databases by using the ALTER DATABASE planned relocation procedure instead of using detach and attach, when moving database files within the same instance. Para más información, consulte Move User Databases.For more information, see Move User Databases.

No se recomienda usar separar y adjuntar para el proceso de copia de seguridad y recuperación.We don't recommend using detach and attach for Backup and Recovery. No hay copias de seguridad del registro de transacciones y se pueden eliminar archivos accidentalmente.There are no transaction log backups, and it's possible to accidentally delete files.

SeguridadSecurity

Los permisos de acceso a archivos se establecen durante una serie de operaciones de base de datos, incluidas las operaciones de desasociar o adjuntar una base de datos.File access permissions are set during a number of database operations, including detaching or attaching a database. Para obtener información sobre los permisos de archivo que se establecen siempre que se separa y se adjunta una base de datos, vea Proteger archivos de datos y de registro en los Libros en pantalla de SQL Server 2008 R2SQL Server 2008 R2 (sigue siendo una lectura válida).For information about file permissions that are set whenever a database is detached and attached, see Securing Data and Log Files from SQL Server 2008 R2SQL Server 2008 R2 Books Online (Still a valid read!)

Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza.We recommend that you do not attach or restore databases from unknown or untrusted sources. Es posible que dichas bases de datos contengan código malintencionado que podría ejecutar código Transact-SQLTransact-SQL no deseado o provocar errores al modificar el esquema o la estructura de la base de datos física.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. 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.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database. 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).For more information about attaching databases and information about changes that are made to metadata when you attach a database, see Database Detach and Attach (SQL Server).

PermisosPermissions

Requiere el permiso CREATE DATABASE, CREATE ANY DATABASE o ALTER ANY DATABASE.Requires CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

Uso de SQL Server Management StudioUsing SQL Server Management Studio

Para adjuntar una base de datosTo Attach a Database

  1. En el Explorador de objetos de SQL Server Management StudioSQL Server Management Studio , conéctese a una instancia de Motor de base de datos de SQL ServerSQL Server Database Enginey, después, haga clic para expandir esa vista de instancia en SSMS.In SQL Server Management StudioSQL Server Management Studio Object Explorer, connect to an instance of the Motor de base de datos de SQL ServerSQL Server Database Engine, and then click to expand that instance view in SSMS.

  2. Haga clic con el botón derecho en Bases de datos y haga clic en Adjuntar.Right-click Databases and click Attach.

  3. En el cuadro de diálogo Adjuntar bases de datos , haga clic en Agregarpara especificar la base de datos que se va a adjuntar y en el cuadro de diálogo Buscar archivos de base de datos , seleccione la unidad de disco en la que se halla la base de datos y expanda el árbol de directorios para buscar y seleccionar el archivo .mdf de la base de datos; por ejemplo:In the Attach Databases dialog box, to specify the database to be attached, click Add; and in the Locate Database Files dialog box, select the disk drive where the database resides and expand the directory tree to find and select the .mdf file of the database; for example:

    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf

    Importante

    Si intenta seleccionar una base de datos que ya ha sido adjuntada se producirá un error.Trying to select a database that is already attached generates an error.

    Bases de datos que se van a adjuntarDatabases to attach
    Muestra información sobre las bases de datos seleccionadas.Displays information about the selected databases.

    <no column header><no column header>
    Muestra un icono que indica el estado de la operación de adjuntar.Displays an icon indicating the status of the attach operation. Los iconos posibles se indican en la descripción de Estado , que encontrará más adelante.The possible icons are described in the Status description, below).

    Ubicación del archivo MDFMDF File Location
    Muestra la ruta de acceso y el nombre del archivo MDF seleccionado.Displays the path and file name of the selected MDF file.

    Nombre de la base de datosDatabase Name
    Muestra el nombre de la base de datos.Displays the name of the database.

    Adjuntar comoAttach As
    Opcionalmente, especifica un nombre distinto con el que se debe adjuntar la base de datos.Optionally, specifies a different name for the database to attach as.

    PropietarioOwner
    Ofrece una lista desplegable de los posibles propietarios de base de datos desde los que opcionalmente puede seleccionarse otro propietario.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    EstadoStatus
    Muestra el estado de la base de datos de acuerdo con la tabla siguiente.Displays the status of the database according to the following table.

    IconoIcon Texto de estadoStatus text DescripciónDescription
    (Sin icono)(No icon) (Sin texto)(No text) La operación de adjuntar no se ha iniciado o puede estar pendiente para este objeto.Attach operation has not been started or may be pending for this object. Es la opción predeterminada al abrir el diálogo.This is the default when the dialog is opened.
    Triángulo verde hacia la derechaGreen, right-pointing triangle En cursoIn progress La operación de adjuntar se ha iniciado, pero no ha finalizado.Attach operation has been started but it is not complete.
    Marca de verificación verdeGreen check mark CorrectoSuccess El objeto se ha adjuntado correctamente.The object has been attached successfully.
    Círculo rojo con una cruz blancaRed circle containing a white cross ErrorError La operación de adjuntar ha detectado un error y no ha finalizado correctamente.Attach operation encountered an error and did not complete successfully.
    Círculo con dos cuadrantes negros (a la izquierda y la derecha) y dos cuadrantes blancos (en la parte superior e inferior)Circle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) DetenidoStopped La operación de adjuntar no ha finalizado correctamente porque el usuario la ha detenido.Attach operation was not completed successfully because the user stopped the operation.
    Círculo con una flecha curvada que apunta hacia la izquierdaCircle containing a curved arrow pointing counter-clockwise RevertidoRolled Back La operación de adjuntar se ha ejecutado correctamente, pero se ha revertido debido a un error al adjuntar otro objeto.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    MensajeMessage
    Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".Displays either a blank message or a "File not found" hyperlink.

    Add (Agregar)Add
    Busca los archivos de base de datos principales necesarios.Find the necessary main database files. Si el usuario 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 .When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    RemoveRemove
    Quita el archivo seleccionado de la cuadrícula Bases de datos que se van a adjuntar .Removes the selected file from the Databases to attach grid.

    " <database_name> " detalles de la base de datos" <database_name> " database details
    Muestra los nombres de los archivos que se van a adjuntar.Displays the names of the files to be attached. Para comprobar o cambiar el nombre de la ruta de acceso de un archivo, haga clic en el botón Examinar ( ... ).To verify or change the pathname of a file, click the Browse button (...).

    Nota

    Si un archivo no existe, la columna Mensaje muestra "No se encontró".If a file does not exist, the Message column displays "Not found." Si un archivo de registro no se encuentra, indica que se halla en otro directorio o que se ha eliminado.If a log file is not found, it exists in another directory or has been deleted. 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.You need to either update the file path in the database details grid to point to the correct location or remove the log file from the grid. 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.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    Nombre del archivo originalOriginal File Name
    Muestra el nombre del archivo adjunto que pertenece a la base de datos.Displays the name of the attached file belonging to the database.

    Tipo de archivoFile Type
    Indica el tipo de archivo, que puede ser de datos o de registro.Indicates the type of file, Data or Log.

    Ruta de acceso del archivo actualCurrent File Path
    Muestra la ruta de acceso del archivo de base de datos seleccionado.Displays the path to the selected database file. La ruta de acceso puede modificarse manualmente.The path can be edited manually.

    MensajeMessage
    Muestra un mensaje en blanco o un hipervínculo que indica "Archivo no encontrado".Displays either a blank message or a "File not found" hyperlink.

Usar Transact-SQLUsing Transact-SQL

Para adjuntar una base de datosTo attach a database

  1. Conéctese con el Motor de base de datosDatabase Engine.Connect to the Motor de base de datosDatabase Engine.

  2. En la barra Estándar, haga clic en Nueva consulta.From the Standard bar, click New Query.

  3. Use la instrucción CREATE DATABASE con la cláusula FOR ATTACH.Use the CREATE DATABASE statement with the FOR ATTACH clause.

    Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.Copy and paste the following example into the query window and click Execute. En este ejemplo se adjuntan los archivos de la base de datos AdventureWorks2012AdventureWorks2012 y se cambia el nombre de la base de datos a MyAdventureWorks.This example attaches the files of the AdventureWorks2012AdventureWorks2012 database and renames the database to MyAdventureWorks.

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

    Nota

    También puede usar los procedimientos almacenados sp_attach_db o sp_attach_single_file_db .Alternatively, you can use the sp_attach_db or sp_attach_single_file_db stored procedure. Sin embargo, estos procedimientos almacenados se quitarán en una versión futura de Microsoft SQL ServerSQL Server.However, these procedures will be removed in a future version of Microsoft SQL ServerSQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Se recomienda utilizar CREATE DATABASE ... FOR ATTACH en su lugar.We recommend that you use CREATE DATABASE ... FOR ATTACH instead.

Seguimiento: Después de actualizar una base de datos de SQL ServerFollow Up: After Upgrading a SQL Server Database

Después de actualizar una base de datos mediante el método de adjuntarla, la base de datos queda disponible inmediatamente y se actualiza automáticamente.After you upgrade a database by using the attach method, the database becomes available immediately and is automatically upgraded. 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 .If the database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the Full-Text Upgrade Option server property. Si la opción de actualización se establece en Importar o en Volver a generar, los índices de texto completo no estarán disponibles durante la actualización.If the upgrade option is set to Import or Rebuild, the full-text indexes will be unavailable during the upgrade. Dependiendo de la cantidad de datos que se indicen, la importación puede requerir varias horas y volver a generar puede requerir hasta diez veces más.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. 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.Note also that when the upgrade option is set to Import, if a full-text catalog is not available, the associated full-text indexes are rebuilt.

Si el nivel de compatibilidad de una base de datos de usuario es 100 o superior antes de la actualización, permanece igual después de la misma.If the compatibility level of a user database is 100 or higher before upgrade, it remains the same after upgrade. Si el nivel de compatibilidad es 90 antes de la actualización, en la base de datos actualizada, el nivel de compatibilidad se establece en 100, que es el nivel de compatibilidad mínimo admitido en SQL Server 2019 (15.x)SQL Server 2019 (15.x).If the compatibility level is 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2019 (15.x)SQL Server 2019 (15.x). Para obtener más información, vea Nivel de compatibilidad de ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Nota

Si va a adjuntar una base de datos de una instancia que ejecuta SQL Server 2014 (12.x)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).If you are attaching a database from an instance running SQL Server 2014 (12.x)SQL Server 2014 (12.x) or below which had Change Data Capture (CDC) enabled, you will also need to execute the command below to upgrade the Change Data Capture (CDC) metadata.

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Consulte tambiénSee Also

CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Administración de los metadatos cuando una base de datos pasa a estar disponible en otro servidorManage metadata when making a database available on another server
Separar una base de datosDetach a Database