sp_attach_db (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

Attache une base de données à un serveur.

System_CAPS_ICON_important.jpg Important


Cette fonctionnalité sera supprimée dans une prochaine version de 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é. Nous vous recommandons d’utiliser CREATE DATABASE database_name pour ATTACHER à la place. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).

System_CAPS_ICON_note.jpg Remarque


Pour recréer plusieurs fichiers journaux lorsqu’un ou plusieurs possèdent un nouvel emplacement, utilisez CREATE DATABASE database_name FOR ATTACH_REBUILD_LOG.

System_CAPS_ICON_important.jpg Important


Nous vous recommandons de ne pas attacher ni restaurer de bases de données provenant de sources inconnues ou non approuvées. Ces bases de données peuvent contenir du code malveillant susceptible d'exécuter du code Transact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma ou la structure physique des bases de données. 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 aussi le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.

S'applique à: SQL Server (SQL Server 2008 via la version actuelle).

Topic link icon Conventions de la syntaxe Transact-SQL

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

[ @dbname= ] 'dbnam '
Nom de la base de données à attacher au serveur. Le nom doit être unique. dbname est sysname, avec NULL comme VALEUR par défaut.

[ @filename1= ] 'filename_n'
Nom physique, y compris le chemin d'accès, d'un fichier de base de données. Nom_de_fichier_n est nvarchar (260), avec NULL comme VALEUR par défaut. Jusqu'à 16 noms de fichier peuvent être spécifiés. Les noms de paramètre commencent à @filename1 et augmentent jusqu'à @filename16. La liste des noms de fichiers doit comprendre au moins le fichier primaire. Le fichier primaire contient les tables système pointant vers d'autres fichiers dans la base de données. 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.

System_CAPS_ICON_note.jpg Remarque


Cet argument crée un mappage vers le paramètre FILENAME de l'instruction CREATE DATABASE. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).

Lorsque vous attachez une base de données SQL Server 2005 qui contient des fichiers catalogue de texte intégral à une instance de serveur SQL Server 2016, 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 2005. Pour plus d’informations, consultez Mise à niveau de la fonction de recherche en texte intégral.

0 (réussite) ou 1 (échec)

Aucune

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. Si vous devez spécifier plus de 16 fichiers, utilisez CREATE DATABASE database_name FOR ATTACH ou CREATE DATABASE database_name FOR_ATTACH_REBUILD_LOG. Pour plus d’informations, consultez CREATE DATABASE (SQL Server Transact-SQL).

Tout fichier non spécifié est considéré comme se trouvant à son dernier emplacement identifié. Pour utiliser un fichier à un emplacement différent, vous devez spécifier ce nouvel emplacement.

Une base de données créée dans une version plus récente de SQL Server ne peut pas être attachée à des versions antérieures.

System_CAPS_ICON_note.jpg Remarque


Un instantané de base de données ne peut pas être détaché ni attaché.

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 :

  • 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.

  • 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 la réplication après l’opération d’attachement est terminée.

  • 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 après l’opération d’attachement est terminée.

Lorsqu'une base de données est attachée ou restaurée pour la première fois à une nouvelle instance de SQL 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. Vous devez utiliser l’instruction OPEN MASTER KEY pour déchiffrer la clé principale de la base de données. 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. 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. Pour plus d’informations sur la régénération de la clé DMK, consultez 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. 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.

Pour plus d’informations sur la gestion des autorisations lorsqu’une base de données est attachée, consultez CREATE DATABASE &#40 ; SQL Server Transact-SQL &#41 ;.

Dans l'exemple suivant, des fichiers sont attachés depuis AdventureWorks2012 au serveur en cours.

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';  

Attachement et de détachement de base de données &#40 ; SQL Server &#41 ;
sp_detach_db &#40 ; Transact-SQL &#41 ;
sp_helpfile &#40 ; Transact-SQL &#41 ;
sp_removedbreplication &#40 ; Transact-SQL &#41 ;
#40 et les procédures stockées du système Transact-SQL &#41 ;

Ajouts de la communauté

AJOUTER
Afficher: