Procédure : déplacer une base de données à l'aide de la méthode de détachement et d'attachement (Transact-SQL)

ms187858.note(fr-fr,SQL.90).gifImportant :
Nous vous recommandons de déplacer les bases de données à l'aide de la procédure de déplacement planifié ALTER DATABASE, plutôt qu'à l'aide de la méthode de détachement et d'attachement. Pour plus d'informations, consultez ALTER DATABASE (Transact-SQL).

Vous pouvez déplacer une base de données détachée puis la rattacher à la même instance de serveur ou à une instance différente.

ms187858.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
Nous vous recommandons de ne pas attacher ou de restaurer des 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 provenant d'une source inconnue ou non approuvée, exécutez DBCC CHECKDB sur la base de données sur un serveur qui n'est pas un serveur de production et examinez le code (par exemple les procédures stockées ou le code défini par l'utilisateur) dans la base de données.

Dans Microsoft SQL Server 2005, la procédure stockée sp_detach_db a été améliorée de manière à ce que les fichiers d'index de texte intégral associés à une base de données ne soient pas supprimés lorsque celle-ci est détachée. Pour plus d'informations, consultez Attacher et détacher des catalogues de texte intégral.

ms187858.note(fr-fr,SQL.90).gifRemarque :
Vous pouvez aussi utiliser les opérations de détachement (detach) et d'attachement (attach) pour mettre à niveau une base de données SQL Server version 7.0 ou SQL Server 2000 vers SQL Server 2005. Pour plus d'informations, consultez Procédure : mise à niveau d'une base de données avec Detach et Attach (Transact-SQL).

Procédure

Pour copier une base de données à l'aide de la méthode de détachement et d'attachement

  1. Détachez la base de données à l'aide de la procédure stockée sp_detach_db.

  2. Dans une fenêtre de l'Explorateur Windows ou de l'invite de commandes Windows, déplacez les fichiers journaux et les fichiers de base de données détachés à l'emplacement de votre choix.

    ms187858.note(fr-fr,SQL.90).gifRemarque :
    Pour déplacer une base de données composée d'un seul fichier, vous pouvez utiliser la messagerie électronique si la taille du fichier le permet.

    Vous devez déplacer les fichiers journaux, même si vous envisagez d'en créer de nouveaux. Dans certains cas, le rattachement d'une base de données requiert 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é correctement attachée sans eux.

    ms187858.note(fr-fr,SQL.90).gifRemarque :
    Si vous essayez d'attacher la base de données sans spécifier le fichier journal, l'attachement recherche celui-ci à son emplacement d'origine. Si une copie du journal existe toujours à l'emplacement d'origine, elle est attachée. 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. Attachez les fichiers copiés à l'aide de l'instruction Transact-SQL CREATE DATABASE avec une clause FOR ATTACH [ WITH <service_broker_option> ] ou une clause FOR ATTACH_REBUILD_LOG (pour plus d'informations, consultez CREATE DATABASE (Transact-SQL)). Chaque base de données contient un identificateur unique permettant de router les messages Service Broker vers celle-ci. Si la base de données utilise Service Broker, consultez Gestion des identités Service Broker.

    ms187858.note(fr-fr,SQL.90).gifRemarque :
    Pour plus d'informations sur l'attachement d'une base de données à l'aide de l'Explorateur d'objets, consultez Procédure : attacher une base de données (SQL Server Management Studio).

Exemple

L'exemple suivant crée une copie de la base de données AdventureWorks nommée MyAdventureWorks. Les instructions Transact-SQL sont exécutées dans une fenêtre d'éditeur de requêtes connectée à l'instance de serveur à laquelle la base de données AdventureWorks est attachée.

  1. Détachez la base de données AdventureWorks en exécutant les instructions Transact-SQLsuivantes :

    USE master;
    GO
    EXEC sp_detach_db @dbname = N'AdventureWorks';
    GO
    
  2. À l'aide de la méthode de votre choix, copiez les fichiers de base de données (AdventureWorks_Data.mdf et AdventureWorks_log) aux emplacements C:\MySQLServer\AdventureWorks_Data.mdf et C:\MySQLServer\AdventureWorks_Log.ldf, respectivement.

    ms187858.note(fr-fr,SQL.90).gifImportant :
    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 si vous le souhaitez, son journal, en exécutant les instructions Transact-SQL suivantes :

    USE master;
    GO
    CREATE DATABASE MyAdventureWorks 
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')
        FOR ATTACH;
    GO
    
    ms187858.note(fr-fr,SQL.90).gifRemarque :
    L'Explorateur d'objets de SQL Server Management Studio n'affiche pas immédiatement une base de données qui vient d'être attachée. 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

Concepts

Attachement et détachement des bases de données

Aide et Informations

Assistance sur SQL Server 2005