Attacher et détacher une base de données (SQL Server)
Les fichiers journaux de données et de transactions d’une base de données peuvent être détachés, puis attachés à la même instance de SQL Server ou à une autre. Le détachement et l’attachement d’une base de données sont utiles si vous souhaitez changer de instance de SQL Server sur le même ordinateur ou déplacer la base de données.
Le format de stockage sur disque SQL Server est le même dans les environnements 64 bits et 32 bits. Par conséquent, l'attachement fonctionne sur les environnements 32 bits et 64 bits. Une base de données détachée d'une instance de serveur s'exécutant dans un environnement peut être attachée à une instance de serveur qui s'exécute dans un autre environnement.
Sécurité
Les autorisations d'accès au fichier sont définies au cours de plusieurs opérations de base de données, notamment le détachement ou l'attachement d'une base de données.
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 également le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.
Détachement d'une base de données
Détacher une base de données consiste à la supprimer de l'instance de SQL Server sans toucher à ses fichiers de données et à ses journaux de transactions. Ces fichiers peuvent ensuite être utilisés pour attacher la base de données à n’importe quel instance de SQL Server, y compris le serveur à partir duquel la base de données a été détachée.
Une base de données ne peut pas être détachée si l'une des conditions suivantes est vraie :
La base de données est répliquée et publiée. Si elle est répliquée, la base de données ne doit pas être publiée. Avant de pouvoir la détacher, vous devez désactiver la publication en exécutant sp_replicationdboption.
Notes
Si vous ne pouvez pas utiliser sp_replicationdboption, vous pouvez supprimer la réplication en exécutant sp_removedbreplication.
Un instantané existe sur la base de données.
Avant de pouvoir détacher la base de données, vous devez supprimer tous ses instantanés. Pour plus d’informations, consultez Supprimer un instantané de base de données (Transact-SQL).
Notes
Un instantané de base de données ne peut pas être détaché ni attaché.
La base de données est en cours de mise en miroir dans une session de mise en miroir de bases de données.
La base de données ne peut pas être détachée tant que la session n'est pas interrompue. Pour plus d’informations, consultez Suppression de la mise en miroir des bases de données (SQL Server).
La base de données est suspecte. Une base de données suspecte ne peut pas être détachée ; avant de pouvoir le faire, vous devez la mettre en mode urgence. Pour plus d’informations sur la façon de mettre une base de données en mode d’urgence, consultez ALTER DATABASE (Transact-SQL).
La base de données est une base de données système.
Sauvegarde et restauration et détachement
Le détachement d'une base de données en lecture seule provoque la perte des informations relatives aux bases différentielles des sauvegardes différentielles. Pour plus d’informations, consultez Sauvegardes différentielles (SQL Server).
Réponse aux erreurs de détachement
Les erreurs générées à l'occasion du détachement d'une base de données peuvent empêcher la fermeture correcte de la base de données et la reconstruction du journal des transactions. Si vous obtenez un message d'erreur, procédez comme suit pour corriger le problème :
Rattachez tous les fichiers associés à la base de données, en plus du fichier primaire.
Résolvez le problème à l'origine de l'affichage du message d'erreur.
Détachez la base de données de nouveau.
Attachement d'une base de données
Vous pouvez joindre une base de données copiée ou détachée SQL Server. Lorsque vous joignez un serveur SQL Server 2014 instance, les fichiers catalogue sont attachés à partir de leur emplacement précédent, ainsi que les autres fichiers de base de données, identiques à ceux de SQL Server 2005. Pour plus d’informations, consultez Mise à niveau de la fonction de recherche en texte intégral.
Lorsque vous attachez une base de données, tous les fichiers de données (fichiers MDF et NDF) doivent être disponibles. Si un fichier de données possède un chemin différent de celui qui existait lorsque la base de données a été créée pour la première fois ou attachée pour la dernière fois, vous devez spécifier le chemin actuel du fichier.
Notes
Si le fichier de données principal joint est en lecture seule, le Moteur de base de données suppose que la base de données est en lecture seule.
Lorsqu’une base de données chiffrée est attachée pour la première fois à un instance de SQL Server, le propriétaire de la base de données doit ouvrir la clé master de la base de données en exécutant l’instruction suivante : OPEN MASTER KEY DECRYPTION BY PASSWORD = 'password
'. Nous vous recommandons d'activer le déchiffrement automatique de la clé principale en exécutant l'instruction suivante : ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY. Pour plus d’informations, consultez CREATE MASTER KEY (Transact-SQL) et ALTER MASTER KEY (Transact-SQL).
Les conditions requises pour attacher des fichiers journaux dépendent en partie des autorisations de lecture-écriture ou de lecture seule de la base de données. Elles sont exposées ci-dessous.
Pour une base de données en lecture-écriture, vous pouvez généralement attacher un fichier journal dans un nouvel emplacement. Toutefois, dans certains cas, le rattachement d'une base de données nécessite ses fichiers journaux existants. Par conséquent, il est important de toujours conserver tous les fichiers journaux détachés tant que la base de données n'a pas été attachée sans eux.
Si une base de données en lecture-écriture possède un seul fichier journal dont vous ne précisez pas le nouvel emplacement, l'opération d'attachement le recherche dans son emplacement précédent. S'il est trouvé, l'ancien fichier journal est utilisé, que la base de données ait été fermée correctement ou non. Toutefois, si l'ancien fichier journal n'est pas trouvé et si la base de données a été fermée correctement sans séquence de journaux de transactions active, l'opération d'attachement tente de créer un nouveau fichier journal pour la base de données.
Si le fichier de données principal joint est en lecture seule, le SQL Server ne peut pas mettre à jour l’emplacement du journal stocké dans le fichier principal.
Modifications des métadonnées lors de l'attachement d'une base de données
Lorsqu'une base de données en lecture seule est détachée puis rattachée, les informations de sauvegarde sur la base différentielle active sont perdues. La base différentielle est la sauvegarde complète la plus récente de toutes les données de la base de données ou d'un sous-ensemble des fichiers ou groupes de fichiers de la base de données. Sans les informations de sauvegarde de la base, la base de données MASTER est désynchronisée par rapport à la base de données en lecture seule ; ainsi, les sauvegardes différentielles effectuées ultérieurement peuvent produire des résultats inattendus. C'est la raison pour laquelle, si vous utilisez des sauvegardes différentielles avec une base de données en lecture seule, vous devez établir une nouvelle base différentielle en effectuant une sauvegarde complète après le rattachement de la base de données. Pour plus d’informations sur les sauvegardes différentielles, consultez Sauvegardes différentielles (SQL Server).
À l'attachement, la base de données démarre. En général, l'attachement d'une base de données la place dans le même état où elle se trouvait au moment de son détachement ou de sa copie. Toutefois, les opérations d'attachement et de détachement désactivent le chaînage des propriétés des bases de données croisées de la base de données. Pour plus d’informations sur l’activation du chaînage, consultez Chaînage des propriétés des bases de données croisées (option de configuration de serveur). En outre, TRUSTWORTHY prend la valeur OFF à chaque fois que la base de données est attachée. Pour plus d’informations sur la définition de TRUSTWORTHY sur ON, consultez ALTER DATABASE (Transact-SQL).
Sauvegarder, restaurer et attacher
Comme toutes les bases de données complètement ou partiellement hors connexion, une base de données contenant des fichiers de restauration ne peut pas être attachée. Pour attacher la base de données, arrêtez la séquence de restauration. Puis, vous pouvez redémarrer la séquence de restauration.
Attachement d'une base de données à une autre instance de serveur
Important
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.
Lorsque vous attachez une base de données à une autre instance de serveur et si vous souhaitez offrir une expérience cohérente aux utilisateurs et aux applications, il est possible que vous deviez recréer une partie ou l'ensemble des métadonnées de la base de données, telles que les connexions et les travaux, sur cette autre instance de serveur. Pour plus d’informations, consultez Gérer les métadonnées durant la mise à disposition d’une base de données sur une autre instance de serveur (SQL Server).
Tâches associées
Pour détacher une base de données
Pour attacher une base de données
Pour mettre à niveau une base de données à l'aide des opérations de détachement et d'attachement
Pour déplacer une base de données à l'aide des opérations de détachement et d'attachement
Pour supprimer un instantané de base de données