Déplacer des bases de données utilisateurMove User Databases

Dans SQL ServerSQL Server, vous pouvez déplacer les fichiers de données, les fichiers journaux et les fichiers de catalogues de texte intégral d’une base de données utilisateur vers un nouvel emplacement, en spécifiant le nouvel emplacement de fichier dans la clause FILENAME de l’instruction ALTER DATABASE .In SQL ServerSQL Server, you can move the data, log, and full-text catalog files of a user database to a new location by specifying the new file location in the FILENAME clause of the ALTER DATABASE statement. Cette méthode s'applique au déplacement des fichiers de base de données dans la même instance SQL ServerSQL Server.This method applies to moving database files within the same instance SQL ServerSQL Server. Pour déplacer une base de données vers une autre instance SQL ServerSQL Server ou vers un autre serveur, utilisez les opérations de sauvegarde et de restauration ou les opérations de détachement et d'attachement.To move a database to another instance of SQL ServerSQL Server or to another server, use backup and restore or detach and attach operations.

ObservationsConsiderations

Lorsque vous déplacez une base de données sur une autre instance de serveur, pour garantir une expérience cohérente aux utilisateurs et aux applications, vous devrez peut-être recréer tout ou partie des métadonnées de la base de données.When you move a database onto another server instance, to provide a consistent experience to users and applications, you might have to re-create some or all the metadata for the database. 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).For more information, see Manage Metadata When Making a Database Available on Another Server Instance (SQL Server).

Certaines fonctionnalités du Moteur de base de données SQL ServerSQL Server Database Engine modifient la façon dont le Moteur de base de donnéesDatabase Engine stocke les informations dans les fichiers de base de données.Some features of the Moteur de base de données SQL ServerSQL Server Database Engine change the way that the Moteur de base de donnéesDatabase Engine stores information in the database files. Ces fonctionnalités sont limitées à des éditions spécifiques de SQL ServerSQL Server.These features are restricted to specific editions of SQL ServerSQL Server. Une base de données qui contient ces fonctionnalités ne peut pas être déplacée vers une édition de SQL ServerSQL Server qui ne les prend pas en charge.A database that contains these features cannot be moved to an edition of SQL ServerSQL Server that does not support them. Utilisez la vue de gestion dynamique sys.dm_db_persisted_sku_features pour répertorier toutes les fonctions spécifiques à l'édition activées dans la base de données actuelle.Use the sys.dm_db_persisted_sku_features dynamic management view to list all edition-specific features that are enabled in the current database.

Les procédures de cette rubrique requièrent le nom logique des fichiers de base de données.The procedures in this topic require the logical name of the database files. Pour obtenir ce nom, interrogez la colonne name dans l’affichage catalogue sys.master_files .To obtain the name, query the name column in the sys.master_files catalog view.

À partir de SQL Server 2008 R2SQL Server 2008 R2, les catalogues de texte intégral sont intégrés dans la base de données plutôt que stockés dans le système de fichiers.Starting with SQL Server 2008 R2SQL Server 2008 R2, full-text catalogs are integrated into the database rather than being stored in the file system. Les catalogues de texte intégral se déplacent automatiquement lorsque vous déplacez une base de données.The full-text catalogs now move automatically when you move a database.

Procédure de déplacement planifiéPlanned Relocation Procedure

Pour déplacer un fichier journal ou un fichier de données dans le cadre d'un déplacement planifié, procédez comme suit :To move a data or log file as part of a planned relocation, follow these steps:

  1. Exécutez la commande suivante.Run the following statement.

    ALTER DATABASE database_name SET OFFLINE;  
    
  2. Déplacez le ou les fichiers vers le nouvel emplacement.Move the file or files to the new location.

  3. Pour chaque fichier déplacé, exécutez la commande suivante.For each file moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );  
    
  4. Exécutez la commande suivante.Run the following statement.

    ALTER DATABASE database_name SET ONLINE;  
    
  5. Vérifiez le changement de fichier en exécutant la requête suivante.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Déplacement en vue d'une maintenance de disque planifiéeRelocation for Scheduled Disk Maintenance

Pour déplacer un fichier dans le cadre d'un processus de maintenance de disque planifié, procédez comme suit :To relocate a file as part of a scheduled disk maintenance process, follow these steps:

  1. Pour chaque fichier à déplacer, exécutez la commande suivante.For each file to be moved, run the following statement.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    
  2. Arrêtez l'instance de SQL ServerSQL Server ou éteignez le système pour que la maintenance ait lieu.Stop the instance of SQL ServerSQL Server or shut down the system to perform maintenance. Pour plus d'informations, consultez Démarrer, arrêter, suspendre, reprendre, redémarrer le moteur de base de données, SQL Server Agent ou le service SQL Server Browser.For more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service.

  3. Déplacez le ou les fichiers vers le nouvel emplacement.Move the file or files to the new location.

  4. Redémarrez l'instance de SQL ServerSQL Server ou le serveur.Restart the instance of SQL ServerSQL Server or the server. Pour plus d'informations, consultez Démarrer, arrêter, suspendre, reprendre, redémarrer le moteur de base de données, SQL Server Agent ou le service SQL Server BrowserFor more information, see Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service

  5. Vérifiez le changement de fichier en exécutant la requête suivante.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

Procédure de récupération après défaillanceFailure Recovery Procedure

Si un fichier doit être déplacé dans un nouvel emplacement en raison d'une défaillance matérielle, suivez la procédure décrite ci-dessous.If a file must be moved because of a hardware failure, use the following steps to relocate the file to a new location.

Important

Si la base de données ne démarre pas – elle est en mode suspect ou dans un état de non récupération, seuls les membres du rôle fixe sysadmin peuvent déplacer le fichier.If the database cannot be started, that is it is in suspect mode or in an unrecovered state, only members of the sysadmin fixed role can move the file.

  1. Arrêtez l'instance de SQL ServerSQL Server si elle est démarrée.Stop the instance of SQL ServerSQL Server if it is started.

  2. Démarrez l'instance de SQL ServerSQL Server en mode de récupération de la base de données master uniquement en tapant une des commandes suivantes à l'invite de commandes.Start the instance of SQL ServerSQL Server in master-only recovery mode by entering one of the following commands at the command prompt.

  3. Pour chaque fichier à déplacer, utilisez les commandes sqlcmd ou SQL Server Management StudioSQL Server Management Studio pour exécuter l’instruction suivante.For each file to be moved, use sqlcmd commands or SQL Server Management StudioSQL Server Management Studio to run the following statement.

    ALTER DATABASE database_name MODIFY FILE( NAME = logical_name , FILENAME = 'new_path\os_file_name' );  
    

    Pour plus d’informations sur l’utilisation de l’utilitaire sqlcmd , consultez Utiliser l’utilitaire sqlcmd.For more information about how to use the sqlcmd utility, see Use the sqlcmd Utility.

  4. Quittez l’utilitaire sqlcmd ou SQL Server Management StudioSQL Server Management Studio.Exit the sqlcmd utility or SQL Server Management StudioSQL Server Management Studio.

  5. Arrêtez l'instance de SQL ServerSQL Server.Stop the instance of SQL ServerSQL Server.

  6. Déplacez le ou les fichiers vers le nouvel emplacement.Move the file or files to the new location.

  7. Démarrez l'instance de SQL ServerSQL Server.Start the instance of SQL ServerSQL Server. Par exemple, exécutez : NET START MSSQLSERVER.For example, run: NET START MSSQLSERVER.

  8. Vérifiez le changement de fichier en exécutant la requête suivante.Verify the file change by running the following query.

    SELECT name, physical_name AS CurrentLocation, state_desc  
    FROM sys.master_files  
    WHERE database_id = DB_ID(N'<database_name>');  
    

ExemplesExamples

L'exemple suivant déplace le fichier journal AdventureWorks2012AdventureWorks2012 vers un nouvel emplacement dans le cadre d'un déplacement planifié.The following example moves the AdventureWorks2012AdventureWorks2012 log file to a new location as part of a planned relocation.

USE master;  
GO  
-- Return the logical file name.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  
GO  
ALTER DATABASE AdventureWorks2012 SET OFFLINE;  
GO  
-- Physically move the file to a new location.  
-- In the following statement, modify the path specified in FILENAME to  
-- the new location of the file on your server.  
ALTER DATABASE AdventureWorks2012   
    MODIFY FILE ( NAME = AdventureWorks2012_Log,   
                  FILENAME = 'C:\NewLoc\AdventureWorks2012_Log.ldf');  
GO  
ALTER DATABASE AdventureWorks2012 SET ONLINE;  
GO  
--Verify the new location.  
SELECT name, physical_name AS CurrentLocation, state_desc  
FROM sys.master_files  
WHERE database_id = DB_ID(N'AdventureWorks2012')  
    AND type_desc = N'LOG';  

Voir aussiSee Also

ALTER DATABASE (Transact-SQL) ALTER DATABASE (Transact-SQL)
CREATE DATABASE (SQL Server Transact-SQL) CREATE DATABASE (SQL Server Transact-SQL)
Attacher et détacher une base de données (SQL Server) Database Detach and Attach (SQL Server)
Déplacer des bases de données système Move System Databases
Déplacer des fichiers de bases de données Move Database Files
BACKUP (Transact-SQL) BACKUP (Transact-SQL)
RESTORE (Transact-SQL) RESTORE (Transact-SQL)
Démarrer, arrêter, suspendre, reprendre, redémarrer le moteur de base de données, SQL Server Agent ou le service SQL Server Browser Start, Stop, Pause, Resume, Restart the Database Engine, SQL Server Agent, or SQL Server Browser Service