sp_attach_db (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Adjunta una base de datos a un servidor.

ms179877.note(es-es,SQL.90).gifImportante:
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.

ms179877.security(es-es,SQL.90).gifNota 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. 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).

    En SQL Server 2005 Database Engine (Motor de base de datos de SQL Server 2005), los archivos de texto que formen parte de la base de datos que se va a adjuntar se adjuntan con la base de datos. Si desea especificar una nueva ruta de acceso del catálogo de texto, puede especificar el archivo del catálogo proporcionando un nombre de directorio sin nombre de archivo. Para obtener más información, vea Adjuntar y separar catálogos de texto.

    [!NOTA] No se puede adjuntar un catálogo de texto al directorio raíz.

Valores de código devuelto

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Notas

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] 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 finalice 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 finalice la operación de adjuntar.

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 AdventureWorks al servidor actual.

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

Vea también

Referencia

sp_detach_db (Transact-SQL)
sp_helpfile (Transact-SQL)
sp_removedbreplication (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)

Otros recursos

Separar y adjuntar bases de datos
Proteger archivos de datos y de registro
Adjuntar y separar catálogos de texto

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se actualizó la sección "Notas" para indicar que una base de datos creada por una versión más reciente de SQL Server no puede adjuntarse en versiones anteriores.

5 de diciembre de 2005

Contenido nuevo:
  • Se agregó la nota de seguridad.