Attacher et détacher une base de données (SQL Server)

Les données et les journaux de transactions d'une base de données peuvent être détachés, puis rattachés à la même instance ou à une autre instance de SQL Server. Le détachement et l'attachement d'une base de données sont utiles pour transférer la base de données dans une instance différente de SQL Server sur le même ordinateur ou pour la déplacer.

Le format de stockage sur disque de 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.

Dans cette rubrique :

  • Sécurité

  • Détachement d'une base de données

  • Attachement d'une base de données

  • Tâches associées

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.

Remarque relative à la sécuritéRemarque relative à la sécurité

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.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Détachement d'une base de données

Détacher une base de données consiste à la supprimer de l'instance SQL Server sans toucher à ses fichiers de données et à ses journaux de transactions. Ces fichiers peuvent ensuite servir à rattacher la base de données à n'importe quelle instance de SQL Server, y compris le serveur d'où 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.

    [!REMARQUE]

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

    [!REMARQUE]

    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 d'une mise en miroir des bases de données (SQL Server).

  • La base de données est suspecte. Dans SQL Server 2005 et versions ultérieures, 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 manière de mettre une base de données en mode 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 :

  1. Rattachez tous les fichiers associés à la base de données, en plus du fichier primaire.

  2. Résolvez le problème à l'origine de l'affichage du message d'erreur.

  3. Détachez la base de données de nouveau.

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Attachement d'une base de données

Vous pouvez attacher une base de données SQL Server copiée ou détachée. 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 2012, 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 Mettre à niveau la recherche en texte intégral à partir de SQL Server 2005.

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.

[!REMARQUE]

Si le fichier de données primaires attaché est en lecture seule, le Moteur de base de données suppose que la base de données est en lecture seule.

La première fois qu'une base de données chiffrée est attachée à une instance de SQL Server, le propriétaire de cette base de données doit ouvrir la clé principale 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 primaires attaché est en lecture seule, le Moteur de base de données suppose que la base de données est en lecture seule. Pour une base de données en lecture seule, les fichiers journaux doivent être disponibles à l'emplacement spécifié dans le fichier primaire de la base de données. La création d'un nouveau fichier journal est impossible car SQL Server ne peut pas mettre à jour son emplacement stocké dans le fichier primaire.

Dans cette section :

  • Modifications des métadonnées lors de l'attachement d'une base de données

  • Sauvegarder, restaurer et attacher

  • Attachement d'une base de données à une autre instance de serveur

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 ; par conséquent, 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 la manière d'activer le 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 l'affectation de la valeur ON à TRUSTWORTHY, 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 lors de la mise à disposition d'une base de données sur une autre instance de serveur (SQL Server).

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

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

Icône de flèche utilisée avec le lien Retour en haut[Haut de la page]

Voir aussi

Concepts

Groupes de fichiers et fichiers de base de données