Restauration
Vue d’ensemble du processus de restauration
La restauration représente l’opération inverse d’une sauvegarde. Le processus de restauration peut également être utilisé pour réaliser des migrations de bases de données utilisateurs.
Cette opération peut être réalisée soit à l’aide des commandes Transact SQL (RESTORE) soit par l’intermédiaire de la console d’administration SQL Server Management Studio. Quelle que soit la base à restaurer, il est indispensable d’installer SQL Server pour remonter les données sur la machine.
Le simple fait de replacer les fichiers constituant les données et le journal ne constitue en aucun cas une restauration, puisque SQL Server n’est pas capable d’accéder à ces fichiers tant qu’ils ne sont pas référencés dans la base Master.
1. La restauration automatique
Ce processus intervient lors de chaque démarrage du serveur. Il s’assure que la dernière opération inscrite dans le journal est un point de synchronisation. Si ce n’est pas le cas, alors le journal est relu depuis le dernier point de synchronisation et toutes les transactions validées sont rejouées tandis que toutes les autres modifications sont annulées. Cette opération est nécessaire afin de garantir la cohérence des données.
2. Opérations exécutées automatiquement par SQL Server
SQL Server réalise automatiquement un certain nombre d’opérations afin d’accélérer le processus de restauration et de réduire au maximum le temps d’indisponibilité du serveur.
Le contrôle de sécurité
L’intérêt principal de ce contrôle de sécurité est de se prémunir...
Restauration des sauvegardes
Suivant la sauvegarde effectuée, la méthode de restauration va être légèrement différente.
1. L’instruction RESTORE
En mode Transact SQL, c’est l’instruction RESTORE qui permet de remonter une sauvegarde faite par SQL Server.
Exemple
Dans l’exemple présenté ci-dessous une restauration complète de la base Gescom est faite à partir des sauvegardes présentes dans l’unité de sauvegarde testSQL. L’option WITH REPLACE est précisée afin de confirmer l’écrasement de la base existante.
USE Master ;
go
RESTORE DATABASE GESCOM FROM testSQL WITH FILE = 1, NOUNLOAD, REPLACE,
STATS = 5
GO
La commande RESTORE doit toujours être lancée depuis la base Master.
Pour restaurer le journal des transactions, il est nécessaire d’utiliser l’instruction RESTORE LOG qui possède un paramétrage similaire à celui de RESTORE DATABASE.
Sur une base de données endommagée, la restauration permet de retrouver un ensemble cohérent de données. L’étape de restauration se charge de recréer automatiquement les fichiers et les objets de la base, sans pour autant qu’il soit nécessaire de supprimer la base de données auparavant.
2. Les options de l’instruction RESTORE
Il existe de nombreuses options sur l’instruction RESTORE, seules certaines sont détaillées ici.
Tout d’abord lorsque la restauration utilise plusieurs sauvegardes (une complète puis une différentielle et enfin celle des journaux de transactions) il est important que SQL Server ne rende pas la base accessible aux utilisateurs tant que la dernière restauration n’a pas été effectuée. Pour cela, l’instruction RESTORE propose les options...
Exercice : télécharger et restaurer la base exemple AdventureWorks
1. Énoncé
Télécharger la base exemple AdventureWorks depuis le site de Microsoft.
Restaurer cette base sur l’instance par défaut.
2. Corrigé
La base est disponible à cette adresse au moment de l’écriture de cet ouvrage : https://learn.microsoft.com/en-us/sql/samples/adventureworks-install-configure?view=sql-server-ver16&tabs=ssms
Dans le cas où cette adresse n’existerait plus, le site de téléchargement se trouve facilement avec un moteur de recherche.
La base OLTP AdventureWorks existe en plusieurs versions, la dernière étant AdventureWorks2019 et est fournie dans un fichier .bak.
Lors de la restauration, il se peut que les dossiers sources de la base n’existent pas sur votre serveur. Il faudra donc utiliser l’option MOVE…TO :
restore database adventureworks2019
from disk='c:\tp\adventureworks2019.bak'
with move 'AdventureWorks2017' to 'c:\tp\AdventureWorks2019.mdf',
move 'AdventureWorks2017_log' to 'c:\tp\AdventureWorks2019.ldf'