Partager via


Détacher et attacher une base de données (SQL Server)

Les fichiers journaux des données et des transactions d’une base de données peuvent être détachés, puis attaché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 si vous souhaitez modifier la base de données en une autre instance de SQL Server sur le même ordinateur ou pour 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 dans 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 sur 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 à partir d’une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur hors production et examinez également le code, tel que des procédures stockées ou d’autres codes définis par l’utilisateur, dans la base de données.

Détachement d’une base de données

Détacher une base de données la supprime de l’instance de SQL Server, mais laisse la base de données intacte dans ses fichiers de données et fichiers journaux des transactions. Ces fichiers peuvent ensuite être utilisés pour attacher la base de données à n’importe quelle instance de SQL Server, y compris le serveur à partir duquel la base de données a été détachée.

Vous ne pouvez pas détacher une base de données si l’une des valeurs 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 doit être dépubliée. Avant de pouvoir le 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.

  • Une capture instantanée de base de données 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 une capture instantanée de base de données (Transact-SQL).

    Remarque

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

  • La base de données est 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, sauf si la session est terminée. Pour plus d’informations, consultez Suppression de la mise en miroir de 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 détacher, vous devez le placer en mode d’urgence. Pour plus d’informations sur la façon de placer 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, restauration et détachement

Le détachement d’une base de données en lecture seule perd des informations sur les bases différentielles des sauvegardes différentielles. Pour plus d’informations, consultez Sauvegardes différentielles (SQL Server).

Répondre aux erreurs de déconnexion

Les erreurs produites lors du détachement d'une base de données peuvent empêcher la base de données de se fermer correctement et le journal des transactions d'être reconstruit. Si vous recevez un message d’erreur, effectuez les actions correctives suivantes :

  1. Détachez tous les fichiers associés à la base de données, pas seulement le fichier principal.

  2. Résolvez le problème qui a provoqué le message d’erreur.

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

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 instance de serveur SQL Server 2014, 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.

Remarque

Si le fichier de données principal attaché est en lecture seule, le moteur de base de données part du principe 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 à une instance de SQL Server, le propriétaire de la 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).

L’obligation d’attacher des fichiers journaux dépend en partie du fait que la base de données est en lecture-écriture ou en lecture seule, comme suit :

  • Pour une base de données en lecture-écriture, vous pouvez généralement joindre 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 jusqu’à ce que la base de données ait été correctement attachée sans eux.

    Si une base de données en lecture-écriture a un seul fichier journal et que vous ne spécifiez pas de nouvel emplacement pour le fichier journal, l’opération d’attachement recherche l’ancien emplacement du fichier. S'il est trouvé, l'ancien fichier journal est utilisé, que la base de données ait été terminée correctement ou non. Toutefois, si l’ancien fichier journal est introuvable et si la base de données a été arrêtée correctement et n’a pas de chaîne de journal active, l’opération d’attachement tente de générer un nouveau fichier journal pour la base de données.

  • Si le fichier de données principal attaché est en lecture seule, SQL Server ne peut pas mettre à jour l’emplacement du journal stocké dans le fichier principal.

Modifications des métadonnées dans le cadre 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 actuelle 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 dans un sous-ensemble des fichiers ou groupes de fichiers de la base de données. Sans les informations de sauvegarde de base, la base de données master devient non synchronisée avec la base de données en lecture seule, de sorte que les sauvegardes différentielles effectuées par la suite peuvent fournir des résultats inattendus. Par conséquent, 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 avoir retaché la base de données. Pour plus d’informations sur les sauvegardes différentielles, consultez Sauvegardes différentielles (SQL Server).

Lors de l’attachement, le démarrage de la base de données se produit. En règle générale, l’attachement d’une base de données le place dans le même état qu’au moment où elle a été détachée ou copiée. Toutefois, les opérations d'attachement et de détachement désactivent le chaînage de la propriété interbases de données pour cette base de données. Pour plus d’informations sur l’activation du chaînage, consultez l’option de configuration du serveur de chaînage de propriétés de base de données croisée. De plus, TRUSTWORTHY est défini sur 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 et restaurer et attacher

Comme toute base de données entièrement ou partiellement hors connexion, une base de données avec restauration de fichiers ne peut pas être attachée. Si vous arrêtez la séquence de restauration, vous pouvez attacher la base de données. Ensuite, 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, pour fournir une expérience cohérente aux utilisateurs et aux applications, vous devrez peut-être recréer certaines ou toutes les métadonnées de la base de données, telles que les connexions et les travaux, sur l’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

Voir aussi

Groupes de fichiers et fichiers de base de données