Esta documentación está archivada y no tiene mantenimiento.

sp_attach_db (Transact-SQL)

Adjunta una base de datos a un servidor.

Nota importante Importante

Esta característica se quitará 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 database_name FOR ATTACH en su lugar. Para obtener más información, vea CREATE DATABASE (Transact-SQL).

Nota Nota

Si desea volver a generar varios archivos de registro y uno o más tienen una ubicación nueva, utilice CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

Nota de seguridad Nota de seguridad

Se recomienda no adjuntar ni restaurar bases de datos de orígenes desconocidos o que no sean de confianza. Estas bases de datos pueden contener código dañino que podría ejecutar código Transact-SQL no deseado o provocar errores debido a la modificación del esquema o de 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.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL


sp_attach_db [ @dbname= ] 'dbname'
        , [ @filename1= ] 'filename_n' [ ,...16 ] 

[ @dbname= ] 'dbnam '

Es el nombre de la base de datos que se va a adjuntar al servidor. El nombre debe ser único. dbname es de tipo sysname y su valor predeterminado es NULL.

[ @filename1= ] 'filename_n'

Es el nombre físico, incluida la ruta de acceso, de un archivo de base de datos. filename_n es de tipo nvarchar(260) y su valor predeterminado es NULL. Se pueden especificar hasta 16 nombres de archivo. Los nombres de parámetro comienzan en @filename1 y se incrementan hasta @filename16. La lista de nombres de archivo debe incluir al menos el archivo principal. El archivo principal contiene las tablas del sistema que señalan a otros archivos de la base de datos. La lista también debe contener los archivos que se hayan movido después de separar la base de datos.

Nota Nota

Este argumento se asigna al parámetro FILENAME de la instrucción CREATE DATABASE. Para obtener más información, vea CREATE DATABASE (Transact-SQL).

Al adjuntar una base de datos de SQL Server 2005 que contiene archivos de catálogo de texto completo a una instancia de servidor de SQL Server 2008, los archivos de catálogo se adjuntan desde 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.

0 (correcto) o 1 (error)

El procedimiento almacenado sp_attach_db sólo se debe ejecutar en bases de datos que se hayan separado previamente del servidor de bases de datos con una operación sp_detach_db explícita o en bases de datos copiadas. Si debe especificar más de 16 archivos, utilice CREATE DATABASE database_name FOR ATTACH or CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Para obtener más información, vea CREATE DATABASE (Transact-SQL).

Se da por supuesto que cualquier archivo que no se especifique se encuentra en su última ubicación conocida. Para utilizar un archivo que se encuentra en una ubicación diferente, debe especificar la nueva ubicación.

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

Nota Nota

Una instantánea de base de datos no se puede adjuntar ni separar.

Si adjunta una base de datos replicada que fue copiada en lugar de ser separada, tenga en cuenta lo siguiente:

  • Si adjunta la base de datos a la misma versión e instancia de servidor que la base de datos original, no es necesario realizar ningún paso adicional.

  • Si adjunta la base de datos a la misma instancia de servidor pero con una versión actualizada, debe ejecutar sp_vupgrade_replication para actualizar la réplica una vez que se complete la operación de adjuntar.

  • Si adjunta la base de datos a una instancia de servidor diferente, independientemente de la versión, debe ejecutar sp_removedbreplication para quitar la réplica una vez que se complete la operación de adjuntar.

La versión de la base de datos de origen debe ser por lo menos la 80 (SQL Server 2000) para adjuntarse a SQL Server 2008. Al adjuntar bases de datos SQL Server 2000 o SQL Server 2005 con un nivel de compatibilidad inferior a 80, se establecerán con una compatibilidad de 80.

Para obtener información sobre cómo se administran los permisos cuando se adjunta una base de datos, vea CREATE DATABASE (Transact-SQL).

En el ejemplo siguiente se adjuntan archivos de AdventureWorks al servidor actual.

EXEC sp_attach_db @dbname = N'AdventureWorks', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\AdventureWorks_log.ldf';
Mostrar: