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.

Dans cette rubrique

Avant de commencer

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

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

Procédure de déplacement de la base de données master

Suivi : après le déplacement de toutes les bases de données système

Déplacer l'exemple de base de données tempdb

Avant de commencer

Prenez connaissance des informations suivantes avant d'implémenter les procédures définies dans cette rubrique.

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.

La base de données Resource ne peut pas être déplacée.

Les procédures de 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 R2 à partir de l'invite de commandes.

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]

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

    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 le changement de fichier en exécutant la requête suivante.

    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.

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]

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, à savoir 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 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 suivante.

    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 le changement de fichier en exécutant la requête suivante.

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

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]

Procédure de 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 (instance_name) SQL Server, 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_50.MSSQLSERVER\MSSQL\DATA\master.mdf
    -lC:\Program Files\Microsoft SQL Server\MSSQL10_50.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
    -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
    

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]

Suivi : après le déplacement de toutes les bases de données système

Si vous avez déplacé toutes les bases de données système vers un même lecteur ou volume ou vers un autre serveur utilisant une lettre de lettre de lecteur différente, effectuez les mises à jour suivantes.

  • Modifiez le chemin d'accès du journal de l'Agent SQL Server. Si vous ne mettez pas à jour ce chemin d'accès, l'Agent SQL Server ne démarre pas.

  • Modifiez l'emplacement par défaut de la base de données. La création d'une base de données peut échouer si la lettre de lecteur et le chemin d'accès spécifiés comme emplacement par défaut n'existent pas.

Modifier le chemin d'accès du journal de l'Agent SQL Server

  1. Dans SQL Server Management Studio, dans l'Explorateur d'objets, développez Agent SQL Server.

  2. Cliquez avec le bouton droit sur Journaux d'erreurs, puis cliquez sur Configurer.

  3. Dans la boîte de dialogue Configurer les journaux d'erreurs de l'Agent SQL Server, spécifiez le nouvel emplacement du fichier SQLAGENT.OUT. L'emplacement par défaut est C:\Program Files\Microsoft SQL Server\MSSQL10_50.<instance_name>\MSSQL\Log\.

Modifier l'emplacement par défaut de la base de données

  1. Dans SQL Server Management Studio, dans l'Explorateur d'objets, cliquez avec le bouton droit sur le serveur SQL Server, puis cliquez sur Propriétés.

  2. Dans la boîte de dialogue Propriétés du serveur, sélectionnez Paramètres de base de données.

  3. Sous Emplacements de la base de données par défaut, accédez au nouvel emplacement des fichiers de données et des fichiers journaux.

  4. Arrêtez et démarrez le service SQL Server pour terminer la modification.

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]

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.

Notes

Étant donné que tempdb est recréée à chaque démarrage du service 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 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. Une fois que vous avez redémarré le service SQL Server, vous pouvez supprimer les anciens fichiers de données et fichiers journaux de tempdb de l'emplacement d'origine.

  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 de l'emplacement d'origine.

Icône de flèche utilisée avec le lien Retour au début[Haut de la page]