Microsoft SQL Server - rebuildmaster


1- Introduction

Pour diverses raisons, il peut s'avérer nécessaire de reconstruire un serveur SQL Server, ce qui suppose de reconstruire la base master, parmi ces raisons :

Cette documentation présente la méthodologie d'utilisation de l'exécutable rebuildm (Rebuild Master) pour reconstruire un serveur.

2- Reconstruction d'un serveur (rebuildm.exe)

2-1- Prérequis

Afin de reconstruire un serveur SQL Server, il est indispensable d'avoir sous la main les fichiers modèles des bases de données. Les fichiers modèles sont localisés sur le CD ROM d'installation de SQL Server 2000 dans le répertoire : \CD-ROM Drive\x86\data

Ces fichiers modèles sont au nombre 12 :

Fichier
Description
distmdl.ldf ?
distmdl.mdf ?
master.mdf Fichier de données de la base master
mastlog.ldf Journal de transactions de la base master
model.mdf Fichier de données de la base model
modellog.ldf Journal de transactions de la base model
msdbdata.mdf Fichier de données de la base msdb
msdblog.ldf Journal de transactions de la base msdb
northwnd.ldf Fichier de données de la base Northwind
northwnd.mdf Journal de transactions de la base Northwind
pubs.dmf Fichier de données de la base pubs
pubs_log.ldf Journal de transactions de la base pubs

Si un seul des douze fichiers listés ci-dessus (même pour pubs et Northwind) est manquant, rebuildm.exe sera inutilisable.

2-2- Lancement de rebuild master (rebuildm.exe)

L'exécutable rebuildm.exe (rebuild master) est localisé dans le répertoire d'installation de SQL Server : C:\Program Files\Microsoft SQL Server\80\Tools\Binn.

Note concernant le répertoire d'installation : 80 pour MS SQL Server 2000 et 70 pour MS SQL Server 7.

C:\Program Files\Microsoft SQL Server\80\Tools\Binn > rebuildm

La fenêtre windows « Rebuild Master » alors s'affiche (à priori, il n'existe pas de mode silencieux pour cet exécutable).

Une fois que la reconstruction est déclenchée en cliquant sur le bouton rebuild, à l'issue de la reconstruction, le service SQL Server du serveur associé est arrêté.

Redémarrer le service à l'issue de la bonne exécution de l'exécutable Rebuild Master.

A l'issue du redémarrage du service, les paramètres de connexion sont réinitialisés (prendre garde à ce détail) :

3- Restauration des bases de données système

3-1- Démarrage en mode single user

Pour restaurer la base master, le serveur doit être démarré en mode single user. 2 options sont possibles pour démarrer le serveur en mode single user, dans tous les cas de figure l'option –m permet de spécifier le mode single user

Mode ligne de commande : dans cette méthode, il suffit de se positionner dans une invite de commande DOS dans le répertoire des binaires de l'instance <instance> pour lancer l'exécutable sqlservr.exe avec l'option –m. (dans ce mode, s'assurer que le serveur n'est pas déjà démarré)

Classiquement, le répertoire des binaires pour une instance unique est le suivant :

C:\Program Files\Microsoft SQL Server\<INSTANCE>\Binn

Pour une instance nommée, le répertoire des binaires d'une instance est :

C:\Program Files\Microsoft SQL Server\MSSQL$<INSTANCE>\Binn

Le démarrage de l'instance en mode single user est alors effectué avec la syntaxe ci-dessous :

sqlservr.exe –d <master_data_path> –e <error_log_path> –l<master_log_path>
       -s <instance> -m

master_data_path chemin vers le device de la base master (master.mdf)
error_log_path chemin du fichier errorlog
master_log_path chemin vers le journal des transactions de la base master (mastlog.ldf)

Exemple :

C:\Program Files\Microsoft SQL Server\MSSQL$CGC_T1_MSQ\binn > sqlservr.exe
   –d C:\sdata\mssql\MSSQL$CGC_T1_MSQ\Data\master.mdf
   –e C:\sdata\mssql\MSSQL$CGC_T1_MSQ\Log\ERRORLOG
   –l C:\sdata\mssql\MSSQL$CGC_T1_MSQ\Data\mastlog.ldf
   –s CGC_T1_MSQ
   –m

Mode graphique : dans cette méthode, le serveur doit être démarré et à partir de la console Enterprise Manager

3-2- Remontée de la base master

Une fois le serveur redémarré en mode single user, la base de données master peut être restauré à partir d'une sauvegarde valide. Cette dernière opération peut être réalisée avec l'interface graphique Enterprise Manager ou en ligne de commande :

Exemple :

restore database master
   from disk='C:\sdata\mssql\MSSQL$CGC_T1_MSQ\BACKUP\master\master_db_200410221604.dmp'
go

A l'issue de la restauration, le serveur MS SQL est automatiquement arrêté : redémarrer le service en conservant le mode single user (option –m).

3-3- Remontées des bases model et msdb

Les bases de données model et msdb peuvent être restaurées alors que le serveur n'est pas en mode single user, toutefois il est préférable que ce dernier soit encore en mode single user pour éviter par exemple qu'il soit impossible de remonter la base msdb à cause de l'agent SQL Agent qui peut potentiellement verrouiller msdb (database in use).

Toujours en mode single user, les bases de données model et msdb doivent être également restaurées à partir de sauvegardes valides :

Exemples :

restore database model
  from disk='C:\sdata\mssql\MSSQL$CGC_T1_MSQ\BACKUP\model\model_db_200410221604.dmp'
go

restore database msdb
   from disk='C:\sdata\mssql\MSSQL$CGC_T1_MSQ\BACKUP\msdb\msdb_db_200410221604.dmp'
go

3-4- Suppression du mode single user

A l'issue de la restauration des bases systèmes master, model et msdb, redémarrer le service SQL Server en supprimant le mode single user (option –m).

En fonction de l'option choisie :

Mode ligne de commandes : lancer la commande shutdown et redémarrer classiquement l'instance SQL Server.

Mode graphique : effectuer les mêmes manipulations réalisées dans le paragraphe 3.1, sauf que cette fois l'option –m sera supprimée dans la fenêtre Startup Parameters avec le bouton Remove. Redémarrer alors classiquement l'instance SQL Server.

3-5- Restauration des bases de données utilisateur

A l'issue de la restauration de la base master, en toute logique, toutes les bases de données utilisateur sont également récupérées.


Annexe

Historique

Version Date Commentaires
1.0 10/2004 Version initiale

Liens

MSDN Books Online, SQL Server 2000, How to rebuild the master database (Rebuild Master utility)