sp_attach_db (Transact-SQL)

Adjunta una base de datos a un servidor.

Nota importanteImportante

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

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 seguridadNota 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 malintencionado 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. 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 temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ @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

    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 R2, 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.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Comentarios

El procedimiento almacenado sp_attach_db solo 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

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 replicación 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 replicación 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 R2, SQL Server 2008. Las bases de datos SQL Server 2000 o SQL Server 2005 con un nivel de compatibilidad inferior a 80, se configurarán con una compatibilidad de 80.

Permisos

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

Ejemplos

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

EXEC sp_attach_db @dbname = N'AdventureWorks2008R2', 
    @filename1 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf', 
    @filename2 = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf';