Déplacement des bases de données système

Mis à jour : 17 novembre 2008

Cette rubrique décrit comment déplacer des bases de données système dans SQL Server 2005. Le déplacement des bases de données système peut être utile dans les cas suivants :

  • Récupération après défaillance. Par exemple, la base de données est en mode suspect ou a été fermée en raison d'une défaillance matérielle.
  • Déplacement prévu.
  • Déplacement en vue d'une maintenance de disque planifiée.

Les procédures ci-dessous s'appliquent au déplacement des fichiers de base de données au sein de la même instance de SQL Server. Pour déplacer une base de données vers une autre instance de SQL Server ou vers un autre serveur, utilisez les opérations de sauvegarde et restauration ou de détachement et attachement.

Les procédures décrites dans cette rubrique requièrent le nom logique des fichiers de base de données. Pour obtenir ce nom, interrogez la colonne name dans l'affichage catalogue sys.master_files.

ms345408.note(fr-fr,SQL.90).gifImportant :
Si vous déplacez une base de données système et que vous recréez ultérieurement la base de données master, vous devez redéplacer la base de données système car l'opération de recréation installe toutes les bases de données système à leur emplacement par défaut. Pour plus d'informations sur la recréation de la base de données master, consultez « Reconstruction de bases de données système, reconstruction du Registre » dans Procédure : installer SQL Server 2005 à partir de l'invite de commandes.

Procédure de réadressage planifié et de maintenance de disque planifiée

Pour déplacer des données ou un fichier journal d'une base de données système dans le cadre d'un réadressage planifié ou d'une opération de maintenance planifiée, suivez la procédure ci-dessous. Cette procédure s'applique à toutes les bases de données système à l'exception des bases de données master et Resource.

  1. Pour chaque fichier à déplacer, exécutez l'instruction ci-dessous.

    ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
    
  2. Arrêtez l'instance de SQL Server ou arrêtez le système pour effectuer la maintenance. Pour plus d'informations, consultez Arrêt des services.

  3. Déplacez le ou les fichiers vers le nouvel emplacement.

  4. Redémarrez l'instance de SQL Server ou le serveur. Pour plus d'informations, consultez Démarrage et redémarrage des services.

  5. Vérifiez que la modification des fichiers a bien eu lieu en exécutant la requête ci-dessous.

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

Si la base de données msdb est déplacée et que l'instance de SQL Server est configurée pour la messagerie de base de données, effectuez ces opérations supplémentaires.

  1. Vérifiez que Service Broker est activé pour la base de données msdb en exécutant la requête ci-dessous.

    SELECT is_broker_enabled 
    FROM sys.databases
    WHERE name = N'msdb';
    

    Pour plus d'informations sur l'activation de Service Broker , consultez ALTER DATABASE (Transact-SQL).

  2. Vérifiez le bon fonctionnement de la messagerie de base de données en envoyant un message électronique de test. Pour plus d'informations, consultez Dépannage de la messagerie de base de données.

Procédure de récupération après défaillance

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. Cette procédure s'applique à toutes les bases de données système à l'exception des bases de données master et Resource.

ms345408.note(fr-fr,SQL.90).gifImportant :
Si la base de données ne démarre pas, autrement dit si elle est en mode suspect ou dans un état non récupéré, seuls les membres du rôle fixe sysadmin peuvent déplacer le fichier.
  1. Arrêtez l'instance de SQL Server si elle est en cours d'exécution.

  2. Démarrez l'instance de SQL Server en mode de récupération de la base de données master uniquement en entrant l'une des commandes ci-dessous à l'invite de commandes. Les paramètres spécifiés dans ces commandes respectent la casse. Les commandes échouent lorsque les paramètres ne sont pas spécifiés comme indiqué.

    • Dans le cas d'une instance par défaut (MSSQLSERVER), exécutez la commande ci-dessous :

      NET START MSSQLSERVER /f /T3608
      
    • Dans le cas d'une instance nommée, exécutez la commande ci-dessous :

      NET START MSSQL$instancename /f /T3608
      

    Pour plus d'informations, consultez Procédure : démarrer une instance de SQL Server (commandes net).

  3. Pour chaque fichier à déplacer, utilisez les commandes sqlcmd ou SQL Server Management Studio pour exécuter l'instruction ci-dessous.

    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 Utilisation de l'utilitaire sqlcmd.

  4. Quittez l'utilitaire sqlcmd ou SQL Server Management Studio.

  5. Arrêtez l'instance de SQL Server. Par exemple, exécutez NET STOP MSSQLSERVER.

  6. Déplacez le ou les fichiers vers le nouvel emplacement.

  7. Redémarrez l'instance de SQL Server. Par exemple, exécutez NET START MSSQLSERVER.

  8. Vérifiez que la modification des fichiers a bien eu lieu en exécutant la requête ci-dessous.

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

Déplacement des bases de données master et Resource

La base de données Resource dépend de l'emplacement de la base de données master. Les fichiers journaux et de données Resource doivent résider ensemble au même emplacement que le fichier de données master (master.mdf). Par conséquent, si vous déplacez la base de données master, vous devez également déplacer la base de données Resource vers le même emplacement que le fichier de données master. Ne placez pas la base de données Resource dans des dossiers compressés ou chiffrés d'un système de fichiers NTFS. Les performances en seraient réduites et les mises à niveau impossibles.

Pour déplacer les bases de données master et Resource, suivez la procédure ci-dessous.

  1. Dans le menu Démarrer, pointez successivement sur Tous les programmes, sur Microsoft SQL Server 2005 et sur Outils de configuration, puis cliquez sur Gestionnaire de configuration SQL Server.

  2. Dans le nœud Services SQL Server 2005, cliquez avec le bouton droit sur l'instance de SQL Server, par exemple, SQL Server (MSSQLSERVER), puis cliquez sur Propriétés.

  3. Dans la boîte de dialogue Propriétés de SQL Server (nom_instance), cliquez sur l'onglet Avancé.

  4. Modifiez les valeurs Paramètres de démarrage de façon à pointer vers l'emplacement planifié des fichiers de données et des fichiers journaux de la base de données master, puis cliquez sur OK. Le déplacement du fichier journal d'erreur est facultatif.
    La valeur du paramètre pour le fichier de données doit suivre le paramètre -d et la valeur pour le fichier journal doit suivre le paramètre -l. L'exemple suivant montre les valeurs des paramètres pour l'emplacement par défaut des fichiers de données et des fichiers journaux de la base de données master.

    -dC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\mastlog.ldf
    

    Si le nouvel emplacement planifié des fichiers de données et des fichiers journaux de la base de données master est E:\SQLData, les valeurs des paramètres sont modifiées comme suit :

    -dE:\SQLData\master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG;-lE:\SQLData\mastlog.ldf
    
  5. Arrêtez l'instance de SQL Server en cliquant avec le bouton droit dans le nom d'instance et en choisissant Arrêter.

  6. Déplacez les fichiers master.mdf et mastlog.ldf vers le nouvel emplacement.

  7. Démarrez l'instance de SQL Server en mode de récupération de la base de données master uniquement en entrant l'une des commandes ci-dessous à l'invite de commandes. Les paramètres spécifiés dans ces commandes respectent la casse. Les commandes échouent lorsque les paramètres ne sont pas spécifiés comme indiqué.

    • Pour l'instance par défaut (MSSQLSERVER), exécutez la commande ci-dessous.

      NET START MSSQLSERVER /f /T3608
      
    • Pour une instance nommée, exécutez la commande ci-dessous.

      NET START MSSQL$instancename /f /T3608
      

    Pour plus d'informations, consultez Procédure : démarrer une instance de SQL Server (commandes net).

  8. Que vous utilisiez les commandes sqlcmd ou SQL Server Management Studio, exécutez les instructions ci-dessous. Modifiez le chemin FILENAME pour qu'il corresponde au nouvel emplacement du fichier de données master. Ne modifiez pas le nom de la base de données ni les noms des fichiers.

    ALTER DATABASE mssqlsystemresource 
        MODIFY FILE (NAME=data, FILENAME= 'new_path_of_master\mssqlsystemresource.mdf');
    GO
    ALTER DATABASE mssqlsystemresource 
        MODIFY FILE (NAME=log, FILENAME= 'new_path_of_master\mssqlsystemresource.ldf');
    GO
    
  9. Déplacez les fichiers mssqlsystemresource.mdf et mssqlsystemresource.ldf vers le nouvel emplacement.

  10. Définissez la base de données Resource en lecture seule en exécutant l'instruction ci-dessous.

    ALTER DATABASE mssqlsystemresource SET READ_ONLY;
    
  11. Quittez l'utilitaire sqlcmd ou SQL Server Management Studio.

  12. Arrêtez l'instance de SQL Server.

  13. Redémarrez l'instance de SQL Server.

  14. Vérifiez que la modification des fichiers a bien eu lieu pour la base de données master en exécutant la requête ci-dessous. Les métadonnées de la base de données Resource ne peuvent pas être affichées à l'aide des affichages catalogue système ni des tables système.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID('master');
    GO
    

Exemples

A. Déplacement de la base de données tempdb

Dans l'exemple suivant, les fichiers de données et les fichiers journaux de la base de données tempdb sont déplacés vers un nouvel emplacement dans le cadre d'un réadressage planifié.

ms345408.note(fr-fr,SQL.90).gifRemarque :
La base de données tempdb étant recréée à chaque démarrage de SQL Server, il n'est pas nécessaire de déplacer physiquement les fichiers de données et les fichiers journaux. Les fichiers sont créés au nouvel emplacement lors du redémarrage du service à l'étape 3. Tant que le service n'est pas redémarré, la base de données tempdb continue à utiliser les fichiers de données et les fichiers journaux à l'emplacement existant.
  1. Déterminez les noms de fichiers logiques de la base de données tempdb et leur emplacement actuel sur le disque.

    SELECT name, physical_name AS CurrentLocation
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    GO
    
  2. Modifiez l'emplacement de chaque fichier à l'aide de ALTER DATABASE.

    USE master;
    GO
    ALTER DATABASE tempdb 
    MODIFY FILE (NAME = tempdev, FILENAME = 'E:\SQLData\tempdb.mdf');
    GO
    ALTER DATABASE tempdb 
    MODIFY FILE (NAME = templog, FILENAME = 'F:\SQLLog\templog.ldf');
    GO
    
  3. Arrêtez et redémarrez l'instance de SQL Server.

  4. Vérifiez que la modification des fichiers a bien eu lieu.

    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'tempdb');
    
  5. Supprimez les fichiers tempdb.mdf et templog.ldf à l'emplacement d'origine.

Voir aussi

Concepts

Base de données Resource
Base de données tempdb
Base de données master
Base de données msdb
Base de données model
Déplacement des bases de données utilisateur
Arrêt des services

Autres ressources

Déplacement des fichiers de bases de données
Démarrage et redémarrage des services
ALTER DATABASE (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

17 novembre 2008

Contenu mis à jour :
  • Ajout d'une spécification indiquant que les fichiers journaux et de données Resource doivent résider ensemble au même emplacement que le fichier de données master (master.mdf).

14 avril 2006

Nouveau contenu :
  • Ajout de la remarque importante concernant le déplacement de bases de données système après la recréation de la base de données master.
Contenu mis à jour :
  • Modification de la procédure de déplacement des bases de données master et Resource.