Partager via


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

Cette rubrique décrit comment déplacer des bases de données système dans SQL Server. 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.

Important

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 reconstruction 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 2008 à 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 si l'instance de SQL Server est configurée pour la messagerie de base de données, effectuez ces opérations supplémentaires.

  1. Assurez-vous 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.

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.

  1. Arrêtez l'instance de SQL Server si elle est démarrée.

  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 de la base de données master

Pour déplacer la base de données master, procédez comme suit.

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

  2. Dans le nœud Services SQL Server, 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 afin de pointer vers l'emplacement planifié pour les fichiers de données et les fichiers journaux de la base de données MASTER, puis cliquez sur OK. Le déplacement du fichier journal d'erreurs 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\MSSQL10.MSSQLSERVER\MSSQL\DATA\
    master.mdf;-eC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\
    LOG\ERRORLOG;-lC:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\
    DATA\mastlog.ldf
    

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

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

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

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

  8. 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.

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

Déplacement de la base de données Resource

Dans SQL Server 2008, l'emplacement de la base de données Resource est <lecteur>:\Program Files\Microsoft SQL Server\MSSQL10.<nom_instance>\MSSQL\Binn\. La base de données ne peut pas être déplacée.

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'une opération planifiée.

[!REMARQUE]

Dans la mesure où la base de données tempdb est recréée à chaque démarrage de l'instance de SQL Server, vous n'avez pas à déplacer physiquement les fichiers de données et les fichiers journaux. Les fichiers sont créés au nouvel emplacement lorsque le service est redémarré à l'étape 3. Tant que le service n'a pas redémarré, tempdb continue à utiliser les fichiers de données et les fichiers journaux situés à 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. Assurez-vous 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 de l'emplacement d'origine.

Historique des modifications

Mise à jour du contenu

Mise à jour de la section « Déplacement de la base de données Resource » pour indiquer que la base de données Resource ne peut pas être déplacée.