Restauration d une base de données Version 1.0 Z Grégory CASANOVA
2 Restauration d'une base de données 20/10/09 Sommaire 1 Introduction... 3 2 Mise en œuvre d une restauration de base de données... 4 2.1 L instruction RESTORE... 4 2.2 Les options de l instruction RESTORE... 4 3 Les différents types de restauration... 6 3.1 Restauration à partir d une sauvegarde complète... 6 3.2 Restauration à partir d une sauvegarde différentielle... 6 3.3 Restauration à partir d une sauvegarde des fichiers journaux... 6 4 Conclusion... 8
3 Restauration d'une base de données 20/10/09 1 Introduction Une opération de restauration de base de données correspond à l opération inverse de la sauvegarde de base de données. Celle-ci peut être faite de deux manières : grâce à l instruction RESTORE ou par l intermédiaire de l interface graphique dans SSMS. Le fait de replacer le fichier de données (.mdf) à un emplacement de la machine ne constitue pas une restauration de base de données. Pour être utilisable, une base de données doit être inscrite dans la base Master, qui est une base de données système de SQL Server. Par conséquent, SQL Server doit être installé sur la machine, et les deux seules manières de restaurer une base de données sont les deux présentées dans ce document. Note : L application d une restauration de base de données reste un événement simple, mais essentiel. Cet évènement peut intervenir dans les seuls cas d une demande utilisateur, ou bien lors de l arrêt d une machine. Dans ce dernier cas, on parlera de restauration automatique. Parlons maintenant des restaurations automatiques. Concrètement, qu est ce que c est? Une restauration automatique est une procédure qui intervient lors de chaque redémarrage du serveur. Elle permet de vérifier si la dernière opération sur la base de données inscrite sur le journal des transactions possède un point de synchronisation. Si ce n est pas le cas, alors tout le journal est relu afin de trouver les points défectueux dans le fichier de données. Les opérations valides sont alors ré exécutés et les non valides ne le sont pas. Au point de vue des restaurations de base de données, et afin de garantir une non disponibilité des données la plus faible possible, SQL Server exécute un certain nombre de tâches automatiquement, toujours dans un souci de gain de temps. Voici les opérations exécutées automatiquement par SQL Server : -Contrôle de sécurité : L intérêt principal de ce contrôle de sécurité est d anticiper les restaurations accidentelles de bases de données. Dit d une autre manière, de revenir accidentellement à une sauvegarde antérieure de base de données. - Reconstruction de base de données : Lors d une restauration de base de données, SQL Server s assure que la base de données et les fichiers qui s y rattachent existent bien. Par la suite il sera possible de transférer les données dans la base et par conséquent, d écrire sur le fichier de base de données. Enfin, pour finir cette introduction, il y a des opérations préliminaires à faire pour assurer la bonne exécution d une restauration de base de données. Nous allons les présenter tout de suite. Tout d abord, il faut assurer une vérification de sauvegarde. Il vous faudra ensuite vérifier qu aucun utilisateur n est présent, et n utilise la base de données. Vous pourrez alors restaurer votre base de données de façon optimale. Nous pouvons maintenant passer à la restauration de la base de données, dont nous allons présenter les deux manières.
4 Restauration d'une base de données 20/10/09 2 Mise en œuvre d une restauration de base de données 2.1 L instruction RESTORE Avec du code T-SQL, c est l instruction RESTORE qui va nous permettre d effectuer une restauration de base de données. En voici la syntaxe complète : RESTORE DATABASE nombase FROM sauvegarde WITH CHECKSUM NO_CHECKSUM, CONTINUE_AFTER_ERROR STOP_ON_ERROR, FILE = numero_fichier, KEEP_REPLICATION, MEDIANAME = nom_media, MEDIAPASSWORD = motdepassemedia, MOVE nomlogique TO nomphysique, PASSWORD = motdepasse, PARCIAL, RECOVERY NORECOVERY STANDBY = nom_fichier, REPLACE, RESTRICTED_USER, REWIND NOREWIND, STATS = pourcentage, STOPAT = date_heure STOPATMARK = 'marque' AFTER date_heure, UNLOAD NOUNLOAD; 2.2 Les options de l instruction RESTORE Présentons maintenant les options disponibles avec l instruction RESTORE. - RECOVERY : Avec cette option, SQL Server passe en revue tout le journal des opérations afin de déterminer lesquelles ont étés défectueuses, pour les annuler. - NORECOVERY : C est l inverse de l opération RECOVERY. - FILE : Cette option n est utile que dans le cas où le fichier de sauvegarde contient plusieurs sauvegardes. Elle permet de préciser le numéro de la sauvegarde afin de bien restaurer la bonne sauvegarde. - MOVE TO : Cette option permet de placer le fichier de restauration de la base de données à l endroit voulu sur le système de fichier Windows. - REPLACE : Permet de restaurer une base de données en écrasant la base de données existante. - STOPAT : Permet de rejouer la totalité des opérations valides du journal de transaction jusqu à une date précisée au format varchar, char, smalldatetime ou datetime. Cette option n est disponible que dans le cas où la base de données est en mode de restauration complète. - STOPATMARK, STOPBEFOREMARK : Permet de restaurer la base de données jusqu à une instruction marquée dans le journal de base de données. Cette option n est disponible que dans le cas d une base de données configurée en mode de restauration complète. - CONTINUE_AFTER_ERROR : Elle est le contraire de STOP_ON_ERROR. Permet de continuer la restauration de la base de données même si une erreur est levée lors de cette restauration. L option par défaut est STOP_ON_ERROR. Les autres options sont moins utilisées, puisqu elles sont beaucoup plus techniques. Toute fois, il n est pas exclu que vous en ayez besoin de temps en temps. Je vous conseille donc de vous rendre
5 Restauration d'une base de données 20/10/09 sur la page officielle SQL Server 2008, sur laquelle se trouvent toutes les options disponibles pour l instruction RESTORE. (http://msdn.microsoft.com/fr=fr/library/ms178615.aspx)
6 Restauration d'une base de données 20/10/09 3 Les différents types de restauration Suivant le type de sauvegarde que vous aurez faite de votre base de données, la façon de la restaurer pourra différer. Pour être plus clair dans nos propos, la façon de restaurer une base de données ne sera pas la même suivant que la sauvegarde de base de données soit totale ou bien différentielle. Détaillons les différentes façons de restaurer une base de données, en prenant en compte que chaque type de sauvegarde peut permettre de restaurer une base de données de deux manières ; avec SSMS ou avec du code Transact SQL. 3.1 Restauration à partir d une sauvegarde complète La restauration à partir d une sauvegarde complète est le moyen le plus rapide d obtenir un résultat d une restauration. En effet, c est ce type de restauration qui garantit le plus faible temps d indisponibilité au niveau serveur. Il est donc conseillé, si les ressources en espace mémoire et si c est possible, d opérer des sauvegardes complètes, afin de garantir une perte de temps minime au niveau de la disponibilité du serveur de base de données. Avec du code T-SQL, la syntaxe est très simple. La voici : RESTORE DATABASE nombase FROM sauvegarde Il est juste nécessaire de préciser le nom du fichier de sauvegarde complète. En revanche, avec SSMS, vous devrez passer par le chemin suivant. Dans l explorateur d objets, faites un clic droit sur la base de données à restaurer. Dans le menu contextuel, choisissez tache, puis restaurer, puis base de données. Il est alors évident que pour restaurer une base de données avec nos sauvegardes complètes, il faudra choisir «A partir de l unité» dans la source de restauration. Cliquez alors sur OK pour valider votre choix. 3.2 Restauration à partir d une sauvegarde différentielle Comme pour la sauvegarde, ce type de restauration ne peut intervenir que dans le cas ou une restauration à partir d une sauvegarde complète a été faite auparavant. Les façons des sauvegarder sont quasi identiques à la restauration avec un fichier de sauvegarde complète. Un simple changement interviens dans le cas ou l on restaure avec SSMS : il convient d ajouter à la suite de la sauvegarde complète, le fichier de sauvegarde différentielle dans les sources de données. 3.3 Restauration à partir d une sauvegarde des fichiers journaux Le journal de transaction est le dernier élément à restaurer car c est lui qui va permettre de vérifier s il ne manque pas des données. Si plusieurs fichiers journaux sont à restaurer, ils doivent être restaurés dans l ordre chronologique. La restauration des fichiers journaux se fait à partir de l instruction T-SQL suivante : RESTORE LOG nombase FROM sauvegarde WITH sauvegarde3 Lors d une restauration, si vous ne voulez restaurer qu à partir des fichiers journaux, à partir de SSMS, il vous suffira de ne sélectionner que les fichiers journaux en cochant la case à cet effet dans les sources de données de restauration.
7 Restauration d'une base de données 20/10/09 Note : La restauration d une base de données à partir d un groupe de fichier se fait de la même manière. Il suffit juste de préciser toutes les sources de données à utiliser. S il n en manque ne serait ce qu une seule, la restauration ne sera pas faite.
8 Restauration d'une base de données 20/10/09 4 Conclusion Dans ce chapitre, vous avez appris à restaurer une base de données de deux manières, quelle que soit le type de sauvegarde faite en amont. Ce chapitre vient bien entendu compléter le chapitre de sauvegarde d une base de données. Pour plus de détails sur ce cours, il est conseillé de vous rendre sur la documentation officielle en ligne Microsoft, dans la rubrique SQL Server 2008. Si toutefois des questions subsistent, n hésitez pas à poser des questions sur le forum du site de Dotnet France, toujours dans la rubrique SQL Server 2008.