Académique Documents
Professionnel Documents
Culture Documents
5Sauvegarde et restauration
Quoi sauvegarder ?
Vous me demandez ce qu’il faut sauvegarder ? Mais tout, bien sûr. Non seule-
ment les bases de données que vous avez créées, mais aussi les bases système
master, msdb et distribution si vous faites de la réplication et êtes distributeur,
ainsi que les journaux de transactions, pour tenir compte des modifications
apportées aux données.
Bien évidemment, il n’est pas question de sauvegarder bêtement ces bases,
sans réfléchir à une politique générale de sauvegarde : cela implique de déci-
der quand les sauvegardes doivent avoir lieu.
Quand sauvegarder ?
Tous les jours, ou presque ! N’exagérons rien, tout dépend du type de vos
bases de données.
Généralement, on se fonde sur un certain nombre de critères pour établir une
stratégie de sauvegarde. En voici quelques-uns :
• l’indice de volatilité des données, qui indique si vos données sont
fréquemment mises à jour ou non. Pourquoi sauvegarder tous les jours une
base d’infocentre qui n’est qu’en consultation ?
• l’espace alloué au journal des transactions. Si votre journal est de faible
taille, il faudra le sauvegarder fréquemment et le purger, tout en conser-
vant des mécanismes de tolérance de pannes ;
• la confiance que vous accordez aux bandes de sauvegarde ou à leur mode
de stockage. Plus vous faites confiance aux bandes, moins vous sauvegar-
dez. Mais attention, ces choses-là ne devraient pas inspirer confiance.
Méfiez-vous en comme de la peste. Qu’y a-t-il d’aussi peu fiable qu’une
bande ?
Sauvegarde et restauration
217
CHAPITRE V
Figure 5–1
Exemple de planning de sauvegarde incrémentale
Figure 5–2
Exemple de planning de sauvegarde différentielle et incrémentale
tielle est plus rapide qu’une sauvegarde complète, puisqu’elle ne contient que
les pages de la base modifiées depuis la dernière sauvegarde complète, et elle
contribue à accélérer les restaurations, comme nous le verrons un peu plus
loin dans ce chapitre.
Soyez rusé !
Dans tous les cas, si la sauvegarde de votre base de données est rapide, de quel-
ques minutes à quelques heures, et qu’elle peut se faire de nuit, je vous conseille
de sauvegarder le journal plusieurs fois par jour et la base tous les jours. Cette
stratégie de sauvegarde, d’une part, minimise le risque de perte d’informations et,
d’autre part, garantit que le journal garde une taille gérable dans la journée.
Principes généraux
Pour faire des sauvegardes avec SQL Server, vous devez créer des unités de
sauvegarde. Elles peuvent accueillir indifféremment les sauvegardes complè-
tes et différentielles des bases de donnée et celles des journaux de transac-
tions. Une fois l’unité créée, vous pouvez sauvegarder une ou plusieurs bases,
mélanger bases et journaux, ou encore écraser les anciennes sauvegardes par
une nouvelle. Une base — un journal, un fichier ou un groupe de fichiers —
peut également être sauvegardée sur plusieurs unités, en parallèle ; chaque
unité en contiendra une portion. La réunion de ces unités permettra donc de
restaurer la base. Cette fonctionnalité propre à SQL Server permet d’accélérer
de manière significative les sauvegardes1.
La démarche est simple : créer les unités, sauvegarder, puis restaurer en cas
de problème.
Sauvegarde et restauration
219
CHAPITRE V
Soyez rusé !
Une stratégie d’accélération des sauvegardes, quand vous ne disposez pas de
lecteur de bande rapide (comme les lecteurs DLT – Digital Linear Tape) consiste
à sauvegarder les bases dans des unités sur disques (c’est-à-dire dans des
fichiers), puis de sauvegarder ces fichiers grâce au gestionnaire de sauvegardes de
Windows 2000 ou de tout autre logiciel approprié.
Attention : il n’est pas possible de sauvegarder directement les fichiers de bases
de données avec le gestionnaire de sauvegarde de Windows 2000. En effet, dans
la mesure où SQL Server en a l’utilisation exclusive, Windows 2000 ne peut y
accéder, à moins d’arrêter le serveur SQL.
1. En test, j’ai réussi à sauvegarder une base de 30 giga-octets sur deux lecteurs de bandes DLT en
moins d’une demi-heure. On peut mieux faire, mais c’est plus cher !
Administration et maintenance
220
PARTIE II
Avant de créer une unité de sauvegarde sur bande, on doit installer le pilote du
lecteur de bandes dans Windows 2000. Par défaut, cette unité aura pour nom
\\.\TAPE0. S’il y en a plusieurs sur la même machine, elles s’appelleront
\\.\TAPE1, \\.\TAPE2, et ainsi de suite.
Il est possible de sauvegarder plusieurs bases sur une seule bande, ainsi
qu’une base sur plusieurs bandes. De plus avec le nouveau format de sauve-
garde sur bande (MSTF, Microsoft Tape Format), il est possible de grouper
sauvegardes Windows et SQL sur la même bande.
Figure 5–3
Création d’une unité de sauvegarde
Important
Dans le cas d’une sauvegarde sur disque, si vous allez voir sur le disque où se
trouve le fichier, vous constaterez qu’il n’existe pas, contrairement aux fichiers de
base de données. Ce fichier ne sera créé que lors de la première sauvegarde.
Syntaxe
Exemple :
sp_addumpdevice 'disk', 'SAUVEMABASE', 'C:\MSSQL\BACKUP\MABASE.BAK'
crée une unité de sauvegarde sur disque appelée MABASE.BAK.
Figure 5–4
Propriétés d’une unité de sauvegarde
Figure 5–5
Contenu d’une unité de sauvegarde
Figure 5–6
Contenu d’une unité de sauvegarde depuis la fenêtre Restauration
Enfin, pour obtenir des informations sous forme de texte, on peut utiliser la
procédure stockée système sp_helpdevice, qui interroge la table
master..sysdevices.
Syntaxe
Tableau 5–1
Résultat de sp_helpdevice
Syntaxe
La sauvegarde
Lorsque les unités sont créées, on peut passer à la sauvegarde des informa-
tions. SQL Server 2000 permet de sauvegarder cinq types de composants :
• la base de données complète ;
• la base de données en mode différentiel ;
• le journal des transactions ;
Sauvegarde et restauration
225
CHAPITRE V
• un fichier ;
• un groupe de fichiers.
L’une des fonctionnalités les plus puissantes de SQL Server concerne la
possibilité de sauvegarder une base, alors même qu’elle est en cours
d’utilisation : il s’agit du mécanisme de sauvegarde dynamique.
Sauvegarde dynamique
Il n’est pas nécessaire d’arrêter l’exploitation d’une base de données pour en
faire la sauvegarde. En effet, le mécanisme de sauvegarde dynamique donne
la possibilité de la sauvegarder alors que des utilisateurs y sont connectés.
Pour comprendre comment cela est possible, il nous faut revenir sur la struc-
ture interne d’une base de données SQL Server. Toutes les informations sont
stockées dans des pages de 8 kilo-octets, que SQL Server sauvegarde, dans
l’ordre du fichier, que les pages aient été modifiées ou non depuis le début de
la sauvegarde. Mais sauvegarder une page modifiée, alors que la transaction
qui la modifie n’est pas terminée, est une opération dangereuse. En effet, si la
transaction échoue, les données modifiées doivent revenir dans l’état précé-
dant la modification. C’est pourquoi, le système sauvegarde le journal des
transactions en même temps que la base de données.
Le schéma ci-dessous résume ce fonctionnement (figure 5–7).
Figure 5–7
Mécanisme de sauvegarde d’une base de données
sauvegarde. Ainsi, si la base doit être restaurée, SQL Server rejouera le jour-
nal qu’il a sauvegardé en même temps que la base pour ramener les données
dans un état cohérent. Dans ce cas, à la différence de la sauvegarde du journal
des transactions seul, celui-ci n’est pas purgé.
Figure 5–8
Boîte de dialogue de sauvegarde d’une base de données
Sauvegarde et restauration
227
CHAPITRE V
Figure 5–9
Sélection d’une unité de sauvegarde
Soyez rusé !
La sauvegarde est une opération qui bloque l’interface graphique de
SQL Enterprise Manager. Donc, pendant qu’elle s’exécute, il ne vous reste plus
qu’à regarder le curseur d’avancement !
Pour éviter cela, cochez la case Planification, puis cliquez sur le bouton contenant
trois points de la zone Planification. La boîte de planification de la sauvegarde
apparaît alors. Cochez la case Une fois et sélectionnez une planification dans
quelques minutes, puis cliquez sur le bouton OK. Le système revient à la fenêtre
2. Dans la boîte de dialogue, Vérifier que la sauvegarde est terminée est une erreur de traduction. Il faut
lire Vérification du jeu de sauvegarde à la fin de l’opération de sauvegarde.
Administration et maintenance
228
PARTIE II
Figure 5–10
Sélection des options de sauvegarde
Syntaxe
Exemple :
BACKUP DATABASE mabase TO sauvemabase
sauvegarde la base mabase dans l’unité sauvemabase.
nommé, le journal est purgé des transactions validées (ce que l’on appelle sa
partie inactive). La sauvegarde est donc un mécanisme qui ne conserve qu’un
journal des transactions de faible volume.
Syntaxe
Exemple :
BACKUP LOG Mabase TO Sauvelog
sauvegarde le journal de la base mabase dans l’unité Sauvelog.
Truncate_only
Cette option permet de vider la partie inactive du journal sans la sauvegarder.
Bien évidemment, cette opération est risquée sur un site de production
puisqu’on perd la capacité de recharger une sauvegarde de la base et des jour-
naux. Elle sert surtout au cours des phases de développement ou de test,
pendant lesquelles les journaux n’ont pas besoin d’être conservés.
Toutes les modifications faites depuis la dernière synchronisation sont
perdues corps et biens : sauvegardez donc toujours la base après un BACKUP
LOG WITH TRUNCATE_ONLY. Il n’est pas nécessaire de préciser le nom d’une
unité de sauvegarde, puisque le journal n’est pas sauvegardé. Un exemple ?
En voici un : backup log mabase with truncate_only.
Important
Après un BACKUP LOG WITH TRUNCATE_ONLY, il faut faire une sauvegarde de la
base de données : sinon, on ne pourra pas faire d’autres BACKUP LOG.
No_log
Comme TRUNCATE_ONLY, NO_LOG vide le journal. La différence concerne
l’enregistrement dans le journal. Sans l’option NO_LOG, BACKUP LOG est une
transaction inscrite dans le journal ; avec cette option, BACKUP LOG vide la
partie inactive du journal et n’enregistre pas le fait que le journal a été vidé.
NO_LOG est l’option à utiliser si le journal est saturé. On ne peut rien faire
d’autre ! Il faut d’abord vider le journal avant de continuer à travailler. Bien
évidemment, pensez à faire une sauvegarde de la base immédiatement après
(en priant que tout se passe bien !).
No_truncate
Attention : ne pas confondre NO_TRUNCATE avec TRUNCATE_ONLY ou
NO_LOG. Cette option sert lorsque la base est suspecte, et que le journal de
transactions est accessible.
Si la base est suspecte — défaillance du disque sur lequel elle est stockée, par
exemple —, il est impossible de sauvegarder le journal normalement. Avec
cette option, on peut faire une sauvegarde du journal, ce qui permettra de
recharger la base et les journaux jusqu’au moment de la défaillance.
Sauvegarde et restauration
233
CHAPITRE V
Pour que cette opération soit possible, master doit être accessible. Si, par
malheur, master et la base de données se trouvaient sur le même disque
défaillant, il ne vous reste que les yeux pour pleurer sur la dépouille des tran-
sactions perdues.
Important
Dans SQL Server 7, si le fichier .MDF de la base de données n’est pas accessible,
on ne peut pas sauvegarder le journal avec l’option NO_TRUNCATE. On obtient les
messages d’erreurs 3446 et 3013 qui indiquent que la sauvegarde a échoué.
Microsoft a confirmé le problème (note Q218739 du TechNet) sans apporter de
solutions autre que la protection du fichier .MDF par du RAID 1 ou 5. Ce dysfonc-
tionnement a été corrigé dans SQL Server 2000 : il est donc possible de sauvegar-
der le journal des transactions, même si le fichier .mdf n’est pas accessible.
Figure 5–11
Sauvegarde incrémentale
Figure 5–12
Sauvegarde différentielle
Figure 5–13
Sauvegarde de fichiers
Important
Les groupes de fichiers sont parfois créés pour séparer physiquement les tables de
leurs index. Par exemple, une table peut être créée sur le groupe numéro 1 et ses
index dans le groupe 2. Il est alors obligatoire de sauvegarder ensemble les deux
groupes. Si l’on ne sélectionne qu’un des deux groupes à sauvegarder,
SQL Server génère une erreur 3013, « La sauvegarde ou la restauration se sont
terminées anormalement », indiquant que la sauvegarde du groupe a échoué.
Figure 5–14
Choix du fichier ou du groupe de fichiers à sauvegarder
Important
Si votre installation SQL Server est un cluster, vous devez quand même sauvegar-
der vos bases de données. La mise en cluster vous protège de la défaillance d’une
machine, mais pas des pertes de données suite à un crash des disques. De la même
façon, même si vos données sont protégées par RAID 1 ou 5, vous devez sauve-
garder vos bases. En cas de crash, improbable, de plusieurs disques de la baie
RAID vous perdriez toute la base. La sauvegarde de la base est donc indépen-
dante des mécanismes de protection de vos données.
Tableau 5–2
Types de stratégies en fonction de diverses contraintes opérationnelles
La base peut être sauvegardée toutes les nuits. Sauvegarde complète de la base tous les soirs,
sauvegarde du journal dans la journée dont la
fréquence est fonction de la vitesse de
remplissage.
La base ne peut-être sauvegardée que le week- Sauvegarde complète de la base tous les week-
end, mais le volume de modification reste ends, plusieurs sauvegardes du journal dans la
inférieure à moins de 10% de celui de la base journée, sauvegarde différentielle tous les soirs.
La base est très volumineuse, seule une petite Sauvegarde complète une fois par semaine ou par
partie peut être sauvegardée la nuit. mois, plusieurs sauvegardes du journal dans la
journée, sauvegarde cyclique des fichiers de
données.
Le choix des unités de sauvegarde doit être fonction du coût d’arrêt de votre
système. S’il vous faut deux heures pour restaurer l’ensemble de la base et de
ses journaux, et que la minute d’arrêt du système coûte 10 000 Francs à votre
Administration et maintenance
238
PARTIE II
La restauration
Généralement, lorsque l’on restaure une base ou un journal, c’est que l’on a
vécu un crash. Pour éviter d’avoir de mauvaises surprises en cas d’urgence,
mieux vaut être prêt au pire et bien comprendre le mode de fonctionnement de
la restauration. À l’inverse de la sauvegarde, il n’est pas possible de restaurer
une base en production. Il faudra donc demander à tous les utilisateurs de se
déconnecter, et s’assurer que le dbo est le seul utilisateur autorisé.
L’historique de toutes les sauvegardes et restaurations est conservé dans les
tables backupfile, backupset, backupmediafamily, backupmediaset, restore-
file, restorefilegroup et restorehistory de la base msbd. Il est possible de les
interroger depuis SQL Enterprise Manager à partir des fenêtres Sauvegarde et
Restauration de la base de données, ou avec une requête SELECT. Ces tables
sont décrites à l’annexe C.
Important
La restauration est parfois utilisée pour transférer des bases de données d’un site à
un autre. Le problème du classement ne se pose plus, puisque chaque base de
données peut posséder le sien. Il n’y a donc aucune contre indication à restaurer
une base de données créée avec un classement X sur un serveur installé avec un
classement Y. Il est cependant important de noter que la base de données conser-
vera son classement d’origine.
2. Dans le menu Outils, choisir Restaurer une base de données (on peut
aussi obtenir cette commande via le menu contextuel de la base de
données, dans l’option Toutes les tâches). La fenêtre Restaurer la base de
données apparaît alors.
Figure 5–15
Boîte de dialogue de restauration d’une base de données
Important
Attention ! Vous pouvez restaurer une base x à partir de la sauvegarde d’une
base y ! Vérifiez bien que les deux listes déroulantes sont concordantes.
Figure 5–16
Options de restauration
Figure 5–17
Restaurer à partir d’une unité
Sauvegarde et restauration
241
CHAPITRE V
Pour l’instant, voyons comment restaurer une sauvegarde à partir d’un fichier
se trouvant sur un disque local ou sur un disque réseau. À partir de la fenêtre
Restaurer la base de données (figure 5–15), cliquer sur le bouton radio
À partir de l’unité. La boîte de dialogue apparaît (figure 5–17).
Figure 5–18
Choix d’une unité
En cliquant sur le bouton Ajouter, on choisit une unité existante ou l’on pointe
sur un fichier ou un lecteur de bande.
Attention ! Le titre de cette boîte de dialogue est erroné et devrait être
Sélectionnez l’unité source de la restauration (figure 5–19).
Figure 5–19
Sélection de l’unité contenant la sauvegarde
Une fois l’information saisie et validée deux fois par OK, la nouvelle unité
apparaît dans la liste des unités disponibles (figure 5–20).
Administration et maintenance
242
PARTIE II
Figure 5–20
Restauration à partir d’une unité
Figure 5–21
Choix de la sauvegarde dans l’unité
Syntaxe
Exemple :
RESTORE DATABASE mabase FROM Sauvebase
charge la base mabase depuis l’unité Sauvebase.
Les noms d’unités de sauvegarde sont identiques à ceux qui figurent dans les
instructions BACKUP mais nous ne retrouvons pas toutes les options :
• FILE = numéro_de_fichier : spécifie l’emplacement de la sauvegarde dans
le cas où l’unité contient plusieurs sauvegardes séquentielles ;
• KEEP_REPLICATION : indique que les paramètres de réplication d’une base
de données publiés sont conservés lors de sa restauration ;
• MEDIAPASSWORD : indique le mot de passe protégeant le support de
sauvegarde ;
• MOVE : permet de changer l’emplacement des fichiers de base de données
pendant la restauration. Pour utiliser cette option, il ne faut pas que la base
restaurée existe sur le système. L’opération de restauration se charge de la
création des fichiers aux emplacements indiqués dans l’option MOVE ;
Administration et maintenance
244
PARTIE II
Exemple :
RESTORE LOG mabase FROM Sauvelog
réapplique les transactions du journal de la base mabase, sauvegardé dans l’unité
Sauvelog.
Les noms d’unités de sauvegarde obéissent aux mêmes règles que les instruc-
tions BACKUP et RESTORE DATABASE. Les options sont identiques à celles de
RESTORE DATABASE, à l’exception de STOPAT, STOPATMARK et STOPBEFORE-
MARK qui sont propres aux journaux de transactions.
STOPAT existait déjà en version 7, les deux autres sont nouvelles dans SQL
Server 2000.Supposons, par exemple, que vous ayez fait une sauvegarde du
journal le mardi à 21h00 ; vous souhaitez revenir à l’état dans lequel était la
Administration et maintenance
246
PARTIE II
base à 12h45 le mardi 21 septembre 2001 ; vous allez donc restaurer la sauve-
garde de base du dimanche par un BACKUP DATABASE simple, restaurer le
journal du lundi par un BACKUP LOG simple et enfin, restaurer celui du mardi
avec l’option : WITH STOPAT '21/09/01 12:45:00'.
En fin d’exécution, le système indique le nombre de transactions validées
(rolled forward) et le nombre de transactions annulées (rolled back). Les tran-
sactions annulées sont celles qui sont dotées d’un ROLLBACK explicite, ou
celles qui n’ont pas fait l’objet d’un COMMIT. Généralement, il s’agit des tran-
sactions en cours lors de la sauvegarde du journal et dont il a été impossible
de sauvegarder les ordres COMMIT.
STOPATMARK et STOPBEFOREMARK permettent de restaurer le journal des
transactions jusqu'à une marque nommée placée spécialement dans une tran-
saction par l’instruction BEGIN TRANSACTION nom_transaction WITH MARK.
Supposons que vous souhaitiez exécuter une transaction dont vous n’êtes pas
certain à 100%. Vous « marquez » cette transaction de façon à pouvoir, lors de
la restauration du journal, revenir à l’état dans lequel était la base juste avant
la transaction (STOPBEFOREMARK). L’existence de l’option AFTER est justifiée
par le fait qu’il peut exister plusieurs marques portant le même nom dans une
sauvegarde de journal. Imaginons les marques suivantes :
• marque1 – 12 juillet 2001 – 20h00
• marque2 – 12 juillet 2001 – 21h00
• marque1 – 13 juillet 2001 – 14h00
Si vous restaurez le journal WITH STOPATMARK marque1, la restauration va
avoir lieu jusqu’à la première occurrence de la marque, c’est-à-dire celle du
12 juillet à 20 heures. En revanche, avec WITH STOPATMARK marque1 AFTER
'07/13/01 13h00', la sauvegarde va se poursuivre jusqu’à la seconde marque
marque1 car elle est postérieure à la date et à l’heure indiquées dans la
première.
STOPATMARK rejoue toutes les transactions jusqu’à celle qui est marquée
incluse. STOPBEFOREMARK s’arrête à la dernière transaction précédant celle
qui est marquée. Ces deux options pallient en fait les limites intrinsèques de
l’option STOPAT. Il est en effet plus simple de laisser une marque dans le jour-
nal des transactions pour permettre de retrouver une transaction particulière
que de noter l’heure et la date auxquelles elle a eu lieu.
Sauvegarde et restauration
247
CHAPITRE V
Figure 5–22
Restauration d’un fichier
Syntaxe
Syntaxe
Syntaxe
Tableau 5–3
Liste des colonnes obtenues avec RESTORE HEADERONLY
Type de
Option Valeurs possibles
données
Tableau 5–3
Liste des colonnes obtenues avec RESTORE HEADERONLY
Type de
Option Valeurs possibles
données
Résumé
Les nombreux mécanismes de sauvegarde et de restauration peuvent engen-
drer une certaine confusion. Voici un résumé rapide des diverses situations
nécessitant la restauration d’une ou plusieurs bases de données.
Reconstruction et restauration
des bases de données système
Si la base de données master est endommagée et que vous ne pouvez pas
lancer SQL Server, suivez la procédure ci-après :
1. Reconstruire les bases de données système avec l’utilitaire REBUILDM.EXE
qui se trouve dans le répertoire \Program Files\Microsoft SQL
Server\80\Tools\Binn ;
2. Redémarrer normalement le service SQL Server ;
3. Restaurer la base master à partir de sa sauvegarde la plus récente :
RESTORE DATABASE Master FROM unité_sauvegarde_master
Rattachement ou restauration
des bases de données de production
Si vous avez pu restaurer la base master, aucune autre opération n’est néces-
saire, car cette base contient les informations suffisantes à la récupération des
bases utilisateur. Si la restauration de master a échoué, vous devez rattacher
les bases de données de production ou les restaurer si l’attache échoue.
Problèmes courants
et précautions d’usage
Une sauvegarde ne peut jamais être fiable à 100%, ne serait-ce qu’à cause du
support sur lequel elle est faite et de son mode de stockage. Même si toutes
les précautions sont prises à ce niveau, il peut arriver que la sauvegarde ne
puisse être récupérée, essentiellement à cause des problèmes de cohérence de
la base.
De plus, pour assurer une stratégie de sauvegarde parfaite, il est préférable de
la faire alors que le trafic sur la base est faible, voire nul. Pour cela, il est inté-
ressant d’automatiser le processus de sauvegarde, pour qu’il ait lieu la nuit ou
le week-end, sans intervention d’un opérateur.
Vérification de cohérence
Dans les versions précédentes de SQL Server, les structures de données
n’étaient pas d’une fiabilité à toute épreuve dans la mesure où il n’existait pas
de mécanisme de vérification des allocations. Dans les versions 7 et 2000, les
pages des tables qui possèdent un index clustered sont chaînées et référencées
dans l’IAM (Index Allocation Map). Dans le cas, improbable, de suppression
d’un pointeur avant ou arrière entre pages, le système peut facilement retrou-
ver les allocations correctes en examinant l’IAM. Cependant, si un problème
d’allocation existe, il peut entraîner une instabilité du système et une corrup-
tion des sauvegardes ou des restaurations.
Administration et maintenance
256
PARTIE II
Résultat : il faut vérifier et, le cas échéant, réparer ces incohérences avant de
lancer une sauvegarde ! Pour cela, nous avons trois armes : la défragmenta-
tion (voir chapitre 12, « Optimisation des performances »), l’utilitaire
SQLMAINT (voir « Outil de maintenance », page 259) ou le Database Consis-
tency Checker (DBCC). Cependant ces vérifications sont moins nécessaires
qu’en version 6.x et, par ailleurs, elles ont été optimisées et sont beaucoup
plus rapides.
3. Rassurez-vous ! ces cas sont rarissimes et même si nous n’avons que peu de recul sur les systèmes
SQL Server 2000 en production, je n’ai pas eu connaissance de corruption ayant entraîné des pertes de
données.
Sauvegarde et restauration
257
CHAPITRE V
Automatisation
SQL Server met à notre disposition un gestionnaire de tâches automatisées.
Parmi ces tâches, celles qui concernent la sauvegarde occupent une place
prépondérante.
Il y a deux moyens d’automatiser la sauvegarde :
• créer un travail qui exécute un BACKUP DATABASE ou BACKUP LOG, soit
depuis la fenêtre Sauvegarder la base de données, soit directement depuis
le gestionnaire de travaux ;
• créer un travail qui s’appuie sur l’utilitaire SQLMAINT, soit avec l’Assistant
Plan de maintenance de base de données, soit depuis la fenêtre du Gestion-
naire de travaux.
Figure 5–23
Liste des travaux définis
Dans SQL Enterprise Manager, ouvrir le dossier Gestion, puis Agent SQL
Server, enfin sélectionner Travaux (figure 5–23). Pour créer un nouveau
travail, choisir Nouveau travail dans le menu contextuel du dossier Travaux
ou utiliser l’Assistant Création de travail en sélectionnant Planification de
travail dans le menu Outils.
Figure 5–24
Définition du nom et de la catégorie du travail
Figure 5–25
Définition d’une étape de type Transact-SQL
Figure 5–26
Définition d’une planification
Outil de maintenance
L’utilitaire SQLMAINT est apparu avec la version 6.5. Il a été conçu comme
support de l’Assistant Plan de maintenance de base de données. Néanmoins,
personne ne vous empêche de l’utiliser pour mettre en place des stratégies de
sauvegarde automatisée.
Le but ici n’est pas de détailler tous les paramètres de cet utilitaire, mais
simplement d’en présenter les options intéressant cette partie du livre.
Syntaxe
sqlmaint
[
[-S serveur]
[-U nom_d’accès [-P mot_de_passe]]
{
[ -D nom_base | -PlanName nom | -PlanID guid ]
[-Rpt fichier_texte [-DelTxtRpt <période>] ]
[-To nom_opérateur]
[-HtmlRpt fichier_html [-DelHtmlRpt <période>] ]
[-RmUnusedSpace pourcentage_seuil pourcentage_libre]
[-CkDB | -CkDBNoldx]
[-CkAl | -CkAlNoIdx]
[-CkTxtAl]
[-CkCat]
Administration et maintenance
260
PARTIE II
[-UpdOptiStats pourcentage_échantillonage]
[-RebldIdx espace_libre]
[-WriteHistory]
[
[-BkUpDB chemin | -BkUpLog chemin]
{-BkUpMedia
{DISK [[-DelBkUps <période>]
[-CrBkSubDir ] [ -UseDefDir ]]
| TAPE}
}
[-BkUpOnlyIfClean]
[-VrfyBackup]
]
}
]
Attention
Les paramètres sont sensibles aux différences majuscule/minuscule. Respectez
bien leur casse sous peine de ne pas voir votre commande s’exécuter.
Points clés
• Mettez en place dès le début de la mise en production de votre base une straté-
gie de sauvegarde.
• Sauvegardez toutes les bases de données, y compris master, msdb et distribu-
tion (si vous utilisez de la réplication).
• Une unité de sauvegarde peut être créée sur disque, disque réseau, bande ou
canal nommé.
• Toute sauvegarde est faite à destination d’une unité de sauvegarde explicite-
ment créée ou définie au moment de la sauvegarde.
• Les unités de sauvegarde sur bande s’appuient sur le gestionnaire de bande de
Windows 2000.
• Toutes les informations sur les unités de sauvegarde se trouvent dans la table
sysdevices dans master.
• On peut sauvegarder une base de données complète, une base de données en
mode différentiel, un journal des transactions, un fichier ou un groupe de
fichiers.
• Le mécanisme de sauvegarde dynamique permet de sauvegarder une base ou
son journal alors même que les utilisateurs travaillent sur la base.
• La sauvegarde d’un journal des transactions vide sa partie inactive, conservant
ainsi au journal un faible volume.
• Il est possible de restaurer un journal jusqu’à une date et une heure précise
avec le paramètre STOPAT.
• Vérifiez de temps en temps la cohérence de la base de données avec les
instructions DBCC.
• Planifier vos sauvegardes avec SQLMAINT vous permet de mettre en place
simplement et rapidement une stratégie de sauvegarde de vos informations,
avec les vérifications de cohérence nécessaires.