Déplacer 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 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.
Dans cette rubrique
Procédure de réadressage planifié et de maintenance de disque planifiée
Procédure de récupération après défaillance
Déplacement de la base de données master
Déplacement de la base de données Resources
Suivi : après le déplacement de toutes les bases de données système
Exemples
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.
Pour chaque fichier à déplacer, exécutez la commande suivante.
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name , FILENAME = 'new_path\os_file_name' )
Arrêtez l'instance de SQL Server ou arrêtez le système pour effectuer la 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.
Déplacez le ou les fichiers vers le nouvel emplacement.
Redémarrez l'instance de SQL Server ou le serveur. 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.
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.
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).
Vérifiez le bon fonctionnement de la messagerie de base de données en envoyant un message électronique de test.
[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.
Arrêtez l'instance de SQL Server si elle est démarrée.
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 Démarrer, arrêter, suspendre, reprendre, redémarrer le moteur de base de données, SQL Server Agent ou le service SQL Server Browser.
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 Utiliser l'utilitaire sqlcmd.
Fermez l'utilitaire sqlcmd ou SQL Server Management Studio.
Arrêtez l'instance de SQL Server. Par exemple, exécutez NET STOP MSSQLSERVER.
Déplacez le ou les fichiers vers le nouvel emplacement.
Redémarrez l'instance de SQL Server. Par exemple, exécutez NET START MSSQLSERVER.
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>');
[Haut de la page]
Déplacement de la base de données master
Pour déplacer la base de données master, procédez comme suit.
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.
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.
Dans la boîte de dialogue Propriétés de SQL Server (instance_name), cliquez sur l'onglet Paramètres de démarrage.
Dans la zone Paramètres existants, sélectionnez le paramètre –d pour déplacer le fichier des données de master. Cliquez sur Mettre à jour pour enregistrer les modifications.
Dans la zone Spécifiez un paramètre de démarrage, modifiez le paramètre par le nouveau chemin d'accès de la base de données master.
Dans la zone Paramètres existants, sélectionnez le paramètre –l pour déplacer le fichier journal de master. Cliquez sur Mettre à jour pour enregistrer les modifications.
Dans la zone Spécifiez un paramètre de démarrage, modifiez le paramètre par le nouveau chemin d'accès de la base de données master.
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 de la base de données master.
-dC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\master.mdf
-lC:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\mastlog.ldf
Si le nouvel emplacement planifié pour les fichiers de données 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
Arrêtez l'instance de SQL Server en cliquant avec le bouton droit sur le nom d'instance et en choisissant Arrêter.
Déplacez les fichiers master.mdf et mastlog.ldf vers le nouvel emplacement.
Redémarrez l'instance de SQL Server.
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 Resources
L'emplacement de la base de données Resource est <drive>:\Program Files\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn\. La base de données ne peut pas être déplacée.
[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 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
Dans SQL Server Management Studio, dans l'Explorateur d'objets, développez Agent SQL Server.
Cliquez avec le bouton droit sur Journaux d'erreurs, puis cliquez sur Configurer.
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\MSSQL11.<nom_instance>\MSSQL\Log\.
Modifier l'emplacement par défaut de la base de données
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.
Dans la boîte de dialogue Propriétés du serveur, sélectionnez Paramètres de base de données.
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.
Arrêtez et démarrez le service SQL Server pour terminer la modification.
[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.
[!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.
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
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
Arrêtez et redémarrez l'instance de SQL Server.
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');
Supprimez les fichiers tempdb.mdf et templog.ldf de l'emplacement d'origine.
[Haut de la page]
Voir aussi
Référence
Concepts
Déplacer des bases de données utilisateur
Reconstruire des bases de données système