Attacher une base de donnéesAttach a Database

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data Warehouse nonParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Cette rubrique explique comment attacher une base de données dans SQL Server 2016SQL Server 2016 à l'aide de SQL Server Management StudioSQL Server Management Studio ou de Transact-SQLTransact-SQL.This topic describes how to attach a database in SQL Server 2016SQL Server 2016 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Vous pouvez utiliser cette fonctionnalité pour copier, déplacer, ou mettre à niveau une base de données SQL Server.You can use this feature to copy, move, or upgrade a SQL Server database.

Conditions préalables Prerequisites

  • La base de données doit d'abord être détachée.The database must first be detached. Toute tentative d'attachement d'une base de données qui n'a pas été détachée retourne une erreur.Attempting to attach a database that has not been detached will return an error. Pour plus d’informations, consultez Détacher une base de données.For more information, see Detach a Database.

  • Lorsque vous attachez une base de données, tous les fichiers de données (fichiers MDF et LDF) doivent être disponibles.When you attach a database, all data files (MDF and LDF files) must be available. 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.If any data file has a different path from when the database was first created or last attached, you must specify the current path of the file.

  • Au moment d’attacher une base de données, si les fichiers MDF et LDF se trouvent dans des répertoires différents et qu’un des chemins contient \\?\GlobalRoot, l’opération échoue.When you attach a database, if MDF and LDF files are located in different directories and one of the paths includes \\?\GlobalRoot, the operation will fail.

La commande Attacher est-elle le meilleur choix ? Is Attach the best choice?

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 des opérations de détachement et d’attachement, lorsque vous déplacez des fichiers de base de données dans la même instance.We recommend that you move databases by using the ALTER DATABASE planned relocation procedure instead of using detach and attach, when moving database files within the same instance. Pour plus d’informations, consultez Déplacer des bases de données utilisateur.For more information, see Move User Databases.

Nous ne recommandons pas l’utilisation des opérations de détachement et d’attachement pour la sauvegarde et la récupération.We don't recommend using detach and attach for Backup and Recovery. Il n’existe aucune sauvegarde du journal des transactions et il est possible de supprimer accidentellement des fichiers.There are no transaction log backups, and it possible to accidently delete files.

Sécurité Security

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.File access permissions are set during a number of database operations, including detaching or attaching a database. Pour plus d’informations sur les autorisations de fichier définies lors du détachement et de l’attachement d’une base de données, consultez Sécurisation des fichiers de données et des fichiers journaux dans la documentation en ligne de SQL Server 2008 R2SQL Server 2008 R2 (une lecture utile)For information about file permissions that are set whenever a database is detached and attached, see Securing Data and Log Files from SQL Server 2008 R2SQL Server 2008 R2 Books Online (Still a valid read!)

Nous vous recommandons de ne pas attacher ni restaurer de bases de données provenant de sources inconnues ou non approuvées.We recommend that you do not attach or restore databases from unknown or untrusted sources. Ces bases de données peuvent contenir du code malveillant susceptible d'exécuter du code Transact-SQLTransact-SQL indésirable ou de provoquer des erreurs en modifiant le schéma ou la structure physique des bases de données.Such databases could contain malicious code that might execute unintended Transact-SQLTransact-SQL code or cause errors by modifying the schema or the physical database structure. 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 aussi le code, notamment les procédures stockées ou le code défini par l’utilisateur, de la base de données.Before you use a database from an unknown or untrusted source, run DBCC CHECKDB on the database on a nonproduction server and also examine the code, such as stored procedures or other user-defined code, in the database. Pour plus d’informations sur l’attachement de bases de données et sur les modifications apportées aux métadonnées à cette occasion, consultez Attacher et détacher une base de données (SQL Server).For more information about attaching databases and information about changes that are made to metadata when you attach a database, see Database Detach and Attach (SQL Server).

Permissions Permissions

L'autorisation CREATE DATABASE, CREATE ANY DATABASE ou ALTER ANY DATABASE est obligatoire.Requires CREATE DATABASE, CREATE ANY DATABASE, or ALTER ANY DATABASE permission.

Utilisation de SQL Server Management Studio Using SQL Server Management Studio

Pour attacher une base de donnéesTo Attach a Database

  1. Dans l’Explorateur d’objets SQL Server Management StudioSQL Server Management Studio , connectez-vous à une instance du Moteur de base de données SQL ServerSQL Server Database Engine, puis cliquez pour développer cette vue d’instance dans SSMS.In SQL Server Management StudioSQL Server Management Studio Object Explorer, connect to an instance of the Moteur de base de données SQL ServerSQL Server Database Engine, and then click to expand that instance view in SSMS.

  2. Cliquez avec le bouton droit sur Bases de données , puis cliquez sur Attacher.Right-click Databases and click Attach.

  3. Dans la boîte de dialogue Attacher des bases de données , pour spécifier la base de données à attacher, cliquez sur Ajouter, dans la boîte de dialogue Rechercher les fichiers de base de données , sélectionnez l'unité de disque contenant la base de données et développez l'arborescence pour rechercher et sélectionner le fichier .mdf de la base de données. Par exemple :In the Attach Databases dialog box, to specify the database to be attached, click Add; and in the Locate Database Files dialog box, select the disk drive where the database resides and expand the directory tree to find and select the .mdf file of the database; for example:

    C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf

    Important

    Une tentative de sélection d'une base de données déjà attachée génère une erreur.Trying to select a database that is already attached generates an error.

    Bases de données à attacherDatabases to attach
    Affiche des informations sur les bases de données sélectionnées.Displays information about the selected databases.

    <aucun en-tête de colonne><no column header>
    Affiche une icône indiquant l'état de l'opération d'attachement.Displays an icon indicating the status of the attach operation. Les icônes possibles sont décrites dans la section État ci-dessous.The possible icons are described in the Status description, below).

    Emplacement du fichier MDFMDF File Location
    Affiche le chemin d'accès et le nom du fichier MDF sélectionné.Displays the path and file name of the selected MDF file.

    Database NameDatabase Name
    Affiche le nom de la base de données.Displays the name of the database.

    Attacher en tant queAttach As
    Permet de spécifier éventuellement un autre nom sous lequel la base de données doit être attachée.Optionally, specifies a different name for the database to attach as.

    PropriétaireOwner
    Fournit une liste déroulante des propriétaires de bases de données possibles dans laquelle vous pouvez sélectionner un autre propriétaire.Provides a drop-down list of possible database owners from which you can optionally select a different owner.

    ÉtatStatus
    Affiche l'état de la base de données conformément au tableau ci-après.Displays the status of the database according to the following table.

    IcôneIcon Texte d'étatStatus text DescriptionDescription
    (Aucune icône)(No icon) (Aucun texte)(No text) L'opération d'attachement n'a pas démarré ou est peut-être en attente pour cet objet.Attach operation has not been started or may be pending for this object. Il s'agit de la valeur par défaut lorsque la boîte de dialogue est ouverte.This is the default when the dialog is opened.
    Triangle vert dirigé vers la droiteGreen, right-pointing triangle En coursIn progress L'opération d'attachement a démarré, mais n'est pas terminée.Attach operation has been started but it is not complete.
    Coche verteGreen check mark RéussiSuccess L'attachement de l'objet a réussi.The object has been attached successfully.
    Cercle rouge contenant une croix blancheRed circle containing a white cross ErreurError L'opération d'attachement a rencontré une erreur et ne s'est pas terminée correctement.Attach operation encountered an error and did not complete successfully.
    Cercle contenant deux quartiers noirs (à gauche et à droite) et deux quartiers blancs (en haut et en bas)Circle containing two black quadrants (on left and right) and two white quadrants (on top and bottom) ArrêtéStopped L'opération d'attachement n'a pas réussi, car l'utilisateur l'a interrompue.Attach operation was not completed successfully because the user stopped the operation.
    Cercle contenant une flèche courbe pointant dans le sens inverse des aiguilles d'une montreCircle containing a curved arrow pointing counter-clockwise RestauréRolled Back L'opération d'attachement a réussi, mais a été restaurée en raison d'une erreur lors de l'attachement d'un autre objet.Attach operation was successful but it has been rolled back due to an error during attachment of another object.

    MessageMessage
    Affiche un message vierge ou un lien hypertexte « Fichier introuvable ».Displays either a blank message or a "File not found" hyperlink.

    AjouterAdd
    Permet de rechercher les principaux fichiers de base de données nécessaires.Find the necessary main database files. Lorsque l'utilisateur sélectionne un fichier .mdf, les informations applicables sont automatiquement remplies dans les champs respectifs de la grille Bases de données à attacher .When the user selects an .mdf file, applicable information is automatically filled in the respective fields of the Databases to attach grid.

    SupprimerRemove
    Supprime le fichier sélectionné de la grille Bases de données à attacher .Removes the selected file from the Databases to attach grid.

    " »détails de la base de données" " database details
    Affiche le nom des fichiers à attacher.Displays the names of the files to be attached. Pour vérifier ou modifier le nom du chemin d’accès d’un fichier, cliquez sur le bouton Parcourir ().To verify or change the pathname of a file, click the Browse button ().

    Note

    Si un fichier n'existe pas, la colonne Message affiche « Introuvable ».If a file does not exist, the Message column displays "Not found." Si un fichier journal est introuvable, cela signifie qu'il se trouve dans un autre répertoire ou qu'il a été supprimé.If a log file is not found, it exists in another directory or has been deleted. Vous devez mettre à jour le chemin d'accès du fichier dans la grille Détails de la base de données pour désigner l'emplacement correct ou supprimer le fichier journal de la grille.You need to either update the file path in the database details grid to point to the correct location or remove the log file from the grid. Si un fichier de données .ndf est introuvable, vous devez mettre à jour son chemin d'accès dans la grille pour désigner l'emplacement correct.If an .ndf data file is not found, you need to update its path in the grid to point to the correct location.

    Nom du fichier d'origineOriginal File Name
    Affiche le nom du fichier attaché appartenant à la base de données.Displays the name of the attached file belonging to the database.

    Type de fichierFile Type
    Indique le type du fichier, Données ou Journal.Indicates the type of file, Data or Log.

    Chemin d'accès au fichier actuelCurrent File Path
    Affiche le chemin d'accès au fichier de base de données sélectionné.Displays the path to the selected database file. Le chemin d'accès peut être modifié manuellement.The path can be edited manually.

    MessageMessage
    Affiche un message vierge ou un lien hypertexte «Fichier introuvable».Displays either a blank message or a "File not found" hyperlink.

Utilisation de Transact-SQL Using Transact-SQL

Pour attacher une base de donnéesTo attach a database

  1. Connectez-vous au Moteur de base de donnéesDatabase Engine.Connect to the Moteur de base de donnéesDatabase Engine.

  2. Dans la barre d'outils standard, cliquez sur Nouvelle requête.From the Standard bar, click New Query.

  3. Utilisez l'instruction CREATE DATABASE avec la clause FOR ATTACH.Use the CREATE DATABASE statement with the FOR ATTACH close.

    Copiez et collez l'exemple suivant dans la fenêtre de requête, puis cliquez sur Exécuter.Copy and paste the following example into the query window and click Execute. Cet exemple attache les fichiers de la base de données AdventureWorks2012AdventureWorks2012 et renomme la base de données MyAdventureWorks.This example attaches the files of the AdventureWorks2012AdventureWorks2012 database and renames the database to MyAdventureWorks.

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    
    Note

    Vous pouvez aussi utiliser la procédure stockée sp_attach_db ou sp_attach_single_file_db .Alternatively, you can use the sp_attach_db or sp_attach_single_file_db stored procedure. Toutefois, ces procédures seront supprimées dans une future version de Microsoft SQL ServerSQL Server.However, these procedures will be removed in a future version of Microsoft SQL ServerSQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Il est conseillé d'utiliser plutôt CREATE DATABASE …We recommend that you use CREATE DATABASE … FOR ATTACH.FOR ATTACH instead.

Suivi : Après la mise à niveau d'une base de données SQL Server Follow Up: After Upgrading a SQL Server Database

Après avoir mis à niveau une base de données à l'aide de la méthode par attachement, cette base de données est immédiatement disponible et est automatiquement mise à niveau.After you upgrade a database by using the attach method, the database becomes available immediately and is automatically upgraded. Si la base de données comprend des index de recherche en texte intégral, la mise à niveau les importe, les réinitialise ou les reconstruit, selon le paramètre de la propriété de serveur Option de mise à niveau du catalogue de texte intégral .If the database has full-text indexes, the upgrade process either imports, resets, or rebuilds them, depending on the setting of the Full-Text Upgrade Option server property. Si l’option de mise à niveau est définie sur Importer ou Reconstruire, les index de recherche en texte intégral ne seront pas disponibles pendant la mise à niveau.If the upgrade option is set to Import or Rebuild, the full-text indexes will be unavailable during the upgrade. Selon le volume de données indexé, l'importation peut prendre plusieurs heures et la reconstruction jusqu'à dix fois plus longtemps.Depending the amount of data being indexed, importing can take several hours, and rebuilding can take up to ten times longer. Notez aussi que lorsque l’option de mise à niveau est définie sur Importer, si aucun catalogue de texte intégral n’est disponible, les index de recherche en texte intégral associés sont reconstruits.Note also that when the upgrade option is set to Import, if a full-text catalog is not available, the associated full-text indexes are rebuilt.

Si le niveau de compatibilité d'une base de données utilisateur est à 100 ou supérieur avant la mise à niveau, il reste le même après la mise à niveau.If the compatibility level of a user database is 100 or higher before upgrade, it remains the same after upgrade. Si le niveau de compatibilité était à 90 avant la mise à niveau, dans la base de données mise à niveau, le niveau de compatibilité est défini à 100, ce qui correspond au niveau de compatibilité le plus bas pris en charge dans SQL Server 2016SQL Server 2016.If the compatibility level is 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2016SQL Server 2016. Pour plus d’informations, consultez Niveau de compatibilité ALTER DATABASE (Transact-SQL).For more information, see ALTER DATABASE Compatibility Level (Transact-SQL).

Note

Si vous attachez une base de données située sur une instance qui exécute SQL Server 2014 ou antérieur, et sur laquelle la capture de données modifiées est activée, vous devez également exécuter la commande suivante pour mettre à niveau les métadonnées de la capture de données modifiées.If you are attaching a database from an instance running SQL Server 2014 or below which had Change Data Capture (CDC) enabled, you will also need to execute the command below to upgrade the Change Data Capture (CDC) metadata.

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Voir aussiSee Also

CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Détacher une base de données Detach a Database