Microsoft SQL Server - rebuildmaster

Logo

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 :

  • la base de données master est corrompue
  • changement du jeu de caractères (collation settings), de l’ordre de tri (sort order)

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

Reconstruction d’un serveur (rebuildm.exe)

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.

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 » s’affiche (à priori, il n’existe pas de mode silencieux pour cet exécutable).

Rebuild master Interface graphique

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

  • selectionner le serveur à reconstruire dans la liste déroulante Server (il se peut qu’il existe plusieurs instances nommées sur la machine)
  • dans le champ Source Directory, spécifier le répertoire où sont localisés les fichiers modèles listés au paragraphe précédent.
  • avec le bouton Settings, une fenêtre indépendante permet de spécifier éventuellement les nouveaux paramètres du serveur pour les jeux de caractères (collation settings) et l’ordre de tri (sort order).
Rebuild master - Collation settings et sort order

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

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

  • un login avec authentification NT BUILTIN\Administrators ou BUILTIN\Administrateurs selon la langue du système d’exploitation
  • le login sa avec un password à blanc.

Restauration des bases de données système

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 spécifie le mode single user

Mode ligne de commande : dans cette méthode, se positionner avec 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 "standalone" 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

  • effectuer un clic droit sur l’instance SQL Server pour sélectionner les propriétés
  • cliquer ensuite sur le bouton "Startup Parameters" dans la fenêtre des propriétés de l’instance (Onglet General) pour accéder à la fenêtre des paramètres de démarrage de l’instance.
Paramètres de démarrage SQL Server 2000 - mode graphique
  • dans le champ "Parameter" ajouter alors l’option –m et cliquer sur le bouton "Add" pour ajouter ce paramètre de démarrage.
  • Arrêter et redémarrer l’instance SQL Server pour prendre en compte le mode single user.

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ée à 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

À 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).

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

Suppression du mode single user

À 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 précédent paragraphe pour appliquer le mode single user, sauf que cette fois l’option –m est supprimée dans la fenêtre Startup Parameters avec le bouton Remove. Redémarrer alors classiquement l’instance SQL Server.

Restauration des bases de données utilisateur

Après la restauration de la base master, en toute logique, toutes les bases de données utilisateur sont également récupérées.