Partager via


Déplacer une base de données à l’aide du détachement et de l’attachement (Transact-SQL)

Cette rubrique explique comment déplacer une base de données détachée vers un autre emplacement et la rattacher à la même instance de serveur ou à une autre instance de serveur dans SQL Server 2014. Toutefois, nous vous recommandons de déplacer des bases de données à l’aide de la procédure de réinstallation planifiée ALTER DATABASE, au lieu d’utiliser le détachement et l’attachement. Pour plus d’informations, consultez Déplacer des bases de données utilisateur.

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.

Procédure

Pour déplacer une base de données à l’aide du détachement et du rattachement

  1. Détachez la base de données. Pour plus d’informations, consultez Détacher une base de données.

  2. Dans une fenêtre d’invite de commandes Windows ou Explorateur Windows, déplacez le fichier ou les fichiers de base de données détachés et les fichiers journaux vers le nouvel emplacement.

    Remarque

    Pour déplacer une base de données à fichier unique, vous pouvez utiliser l’e-mail si la taille du fichier est suffisamment petite pour prendre en charge le courrier électronique.

    Vous devez déplacer les fichiers journaux même si vous prévoyez de créer de nouveaux fichiers journaux. Dans certains cas, le rattachement d'une base de données nécessite ses fichiers journaux existants. Par conséquent, conservez toujours tous les fichiers journaux détachés jusqu'à ce que la base de données ait été attachée avec succès sans eux.

    Remarque

    Si vous tentez d'attacher la base de données sans spécifier le fichier journal, l'opération attach recherche le fichier journal à son emplacement d'origine. Si une copie du journal existe toujours à l’emplacement d’origine, cette copie est jointe. Pour éviter d'utiliser le fichier journal d'origine, spécifiez le chemin d'accès au nouveau fichier journal ou supprimez la copie d'origine du fichier journal (après l'avoir copiée au nouvel emplacement).

  3. Joignez les fichiers copiés. Pour plus d’informations, consultez Attach a Database.

Exemple :

L’exemple suivant crée une copie des instructions Transact-SQL exécutées dans une fenêtre éditeur de requête connectée à l’instance de serveur à laquelle elle est attachée.

  1. Séparez les instructions associées à Transact-SQL :

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'AdventureWorks2012';  
    GO  
    
  2. À l’aide de la méthode de votre choix, copiez les fichiers de base de données (AdventureWorks208R2_Data.mdf et AdventureWorks208R2_log) vers : C :\MySQLServer\AdventureWorks208R2_Data.mdf et C :\MySQLServer\AdventureWorks208R2_Log.ldf, respectivement.

    Important

    Dans le cas d'une base de données de production, placez la base de données et le journal des transactions sur des disques distincts.

    Pour copier des fichiers via le réseau sur le disque d'un ordinateur distant, utilisez le nom UNC (Universal Naming Convention) de l'emplacement distant. Un nom UNC se présente sous la forme \\Servername\Sharename\Path\Filename. Comme lors de l'écriture de fichiers sur le disque dur local, les autorisations appropriées nécessaires à la lecture et à l'écriture d'un fichier sur le disque distant doivent être accordées au compte d'utilisateur utilisé par l'instance de SQL Server.

  3. Attachez la base de données déplacée et, éventuellement, son journal en exécutant les instructions Transact-SQL suivantes :

    USE master;  
    GO  
    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'),  
        (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf')  
        FOR ATTACH;  
    GO  
    

    Dans SQL Server Management Studio, une base de données nouvellement attachée n'est pas immédiatement visible dans l'Explorateur d'objets. Pour visualiser la base de données, dans l'Explorateur d'objets, cliquez sur Affichage puis sur Actualiser. Si le nœud Bases de données est développé dans l'Explorateur d'objets, la base de données récemment attachée apparaît dans la liste des bases de données.

Voir aussi

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