sp_attach_db (Transact-SQL)sp_attach_db (Transact-SQL)

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Attache une base de données à un serveur.Attaches a database to a server.

Important

Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server.This feature will be removed in a future version of Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.Nous vous recommandons d’utiliser CREATE DATABASE nom_base_de_données pour attacher à la place. We recommend that you use CREATE DATABASE database_name FOR ATTACH instead. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Note

Pour reconstruire plusieurs fichiers journaux lorsqu’un ou plusieurs possèdent un nouvel emplacement, utilisez CREATE DATABASE nom_base_de_données FOR ATTACH_REBUILD_LOG.To rebuild multiple log files when one or more have a new location, use CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

Important

Nous vous recommandons de ne pas attacher ni restaurer de bases de données provenant de sources inconnues ou non approuvées.We recommend that you do not attach or restore databases from unknown or untrusted sources. Ces bases de données peuvent contenir du code malveillant susceptible d'exécuter du code Transact-SQLTransact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma ou la structure physique des bases de données.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. Avant d’utiliser une base de données issue d’une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur autre qu’un serveur de production et examinez également le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.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.

SyntaxeSyntax


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

ArgumentsArguments

[ @dbname= ] 'dbnam '[ @dbname= ] 'dbnam '
Nom de la base de données à attacher au serveur.Is the name of the database to be attached to the server. Le nom doit être unique.The name must be unique. dbname est sysname, avec NULL comme valeur par défaut.dbname is sysname, with a default of NULL.

[ @filename1= ] 'Nom_de_fichier_n'[ @filename1= ] 'filename_n'
Nom physique, y compris le chemin d'accès, d'un fichier de base de données.Is the physical name, including path, of a database file. Nom_de_fichier_n est nvarchar (260), avec NULL comme valeur par défaut.filename_n is nvarchar(260), with a default of NULL. Jusqu'à 16 noms de fichier peuvent être spécifiés.Up to 16 file names can be specified. Les noms de paramètre commencent à @filename1 et @filename16 .The parameter names start at @filename1 and increment to @filename16. La liste des noms de fichiers doit comprendre au moins le fichier primaire.The file name list must include at least the primary file. Le fichier primaire contient les tables système pointant vers d'autres fichiers dans la base de données.The primary file contains the system tables that point to other files in the database. Elle doit aussi comprendre tous les fichiers qui ont été déplacés après que la base de données fut détachée.The list must also include any files that were moved after the database was detached.

Note

Cet argument crée un mappage vers le paramètre FILENAME de l'instruction CREATE DATABASE.This argument maps to the FILENAME parameter of the CREATE DATABASE statement. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Quand vous attachez une base de données SQL Server 2005SQL Server 2005 qui contient des fichiers catalogue de texte intégral à une instance de serveur SQL Server 2017SQL Server 2017 , les fichiers catalogue sont attachés à partir de leur emplacement précédent avec les autres fichiers de base de données, les mêmes que dans SQL Server 2005SQL Server 2005.When you attach a SQL Server 2005SQL Server 2005 database that contains full-text catalog files onto a SQL Server 2017SQL Server 2017 server instance, the catalog files are attached from their previous location along with the other database files, the same as in SQL Server 2005SQL Server 2005. Pour plus d’informations, consultez Mise à niveau de la fonction de recherche en texte intégral.For more information, see Upgrade Full-Text Search.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

Jeux de résultatsResult Sets

AucuneNone

NotesRemarks

Le sp_attach_db procédure stockée doit être exécutée uniquement sur les bases de données qui ont été préalablement détachées du serveur de base de données à l’aide d’explicite sp_detach_db opération ou sur des bases de données copiées.The sp_attach_db stored procedure should only be executed on databases that were previously detached from the database server by using an explicit sp_detach_db operation or on copied databases. Si vous devez spécifier plus de 16 fichiers, utilisez CREATE DATABASE nom_base_de_données FOR ATTACH ou CREATE DATABASE nom_base_de_données FOR_ATTACH_REBUILD_LOG.If you have to specify more than 16 files, use CREATE DATABASE database_name FOR ATTACH or CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).For more information, see CREATE DATABASE (SQL Server Transact-SQL).

Tout fichier non spécifié est considéré comme se trouvant à son dernier emplacement identifié.Any unspecified file is assumed to be in its last known location. Pour utiliser un fichier à un emplacement différent, vous devez spécifier ce nouvel emplacement.To use a file in a different location, you must specify the new location.

Une base de données créée dans une version plus récente de SQL ServerSQL Server ne peut pas être attachée à des versions antérieures.A database created by a more recent version of SQL ServerSQL Server cannot be attached in earlier versions.

Note

Un instantané de base de données ne peut pas être détaché ni attaché.A database snapshot cannot be detached or attached.

Lorsque vous attachez une base de données répliquée qui a été copiée au lieu d'être détachée, tenez compte des conditions suivantes :When you attach a replicated database that was copied instead of being detached, consider the following:

  • Si vous attachez la base de données à la même version et à la même instance de serveur que celles de la base de données d'origine, aucune opération supplémentaire n'est nécessaire.If you attach the database to the same server instance and version as the original database, no additional steps are required.

  • Si vous attachez la base de données à la même instance de serveur, mais avec une version mise à niveau, vous devez exécuter sp_vupgrade_replication pour mettre à niveau de la réplication après l’opération d’attachement est terminée.If you attach the database to the same server instance but with an upgraded version, you must execute sp_vupgrade_replication to upgrade replication after the attach operation is complete.

  • Si vous attachez la base de données à une autre instance de serveur, quelle que soit la version, vous devez exécuter sp_removedbreplication pour supprimer la réplication une fois l’opération d’attachement terminée.If you attach the database to a different server instance, regardless of version, you must execute sp_removedbreplication to remove replication after the attach operation is complete.

    Lorsqu'une base de données est attachée ou restaurée pour la première fois à une nouvelle instance de SQL ServerSQL Server, une copie de la clé principale de la base de données (chiffrée par la clé principale du service) n'est pas encore stockée sur le serveur.When a database is first attached or restored to a new instance of SQL ServerSQL Server, a copy of the database master key (encrypted by the service master key) is not yet stored in the server. Vous devez utiliser l’instruction OPEN MASTER KEY pour déchiffrer la clé principale de la base de données.You must use the OPEN MASTER KEY statement to decrypt the database master key (DMK). Une fois la clé principale de la base de données déchiffrée, vous avez la possibilité d’activer le déchiffrement automatique dans le futur en exécutant l’instruction ALTER MASTER KEY REGENERATE pour fournir au serveur une copie de la clé principale de la base de données chiffrée avec la clé principale du service.Once the DMK has been decrypted, you have the option of enabling automatic decryption in the future by using the ALTER MASTER KEY REGENERATE statement to provision the server with a copy of the DMK, encrypted with the service master key (SMK). Lorsqu'une base de données a été mise à niveau à partir d'une version antérieure, la clé DMK doit être régénérée de façon à utiliser le nouvel algorithme AES.When a database has been upgraded from an earlier version, the DMK should be regenerated to use the newer AES algorithm. Pour plus d’informations sur la régénération de la clé DMK, consultez ALTER MASTER KEY (Transact-SQL).For more information about regenerating the DMK, see ALTER MASTER KEY (Transact-SQL). La durée nécessaire pour régénérer la clé DMK à mettre à niveau vers AES dépend du nombre d'objets protégés par la clé DMK.The time required to regenerate the DMK key to upgrade to AES depends upon the number of objects protected by the DMK. La régénération de la clé DMK à mettre à niveau vers AES est nécessaire une seule fois et n'a aucune incidence sur les régénérations ultérieures effectuées dans le cadre d'une stratégie de rotation de clés.Regenerating the DMK key to upgrade to AES is only necessary once, and has no impact on future regenerations as part of a key rotation strategy.

PermissionsPermissions

Pour plus d’informations sur la gestion des autorisations lorsqu’une base de données est attachée, consultez CREATE DATABASE ( SQL Server Transact-SQL ) .For information about how permissions are handled when a database is attached, see CREATE DATABASE (SQL Server Transact-SQL).

ExemplesExamples

Dans l'exemple suivant, des fichiers sont attachés depuis AdventureWorks2012AdventureWorks2012 au serveur en cours.The following example attaches files from AdventureWorks2012AdventureWorks2012 to the current server.

EXEC sp_attach_db @dbname = N'AdventureWorks2012',   
    @filename1 =   
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf',   
    @filename2 =   
N'C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';  

Voir aussiSee Also

Attacher et détacher une base de données (SQL Server) Database Detach and Attach (SQL Server)
sp_detach_db ( Transact-SQL ) sp_detach_db (Transact-SQL)
sp_helpfile ( Transact-SQL ) sp_helpfile (Transact-SQL)
sp_removedbreplication ( Transact-SQL ) sp_removedbreplication (Transact-SQL)
Procédures stockées système (Transact-SQL)System Stored Procedures (Transact-SQL)