Article complet: De l'intérêt des devices pour les sauvegardes

10/06/2008

Permalink 12:45:50, Catégories: MS SQL Server, SQL Server, 999 mots   French (FR) , sqlpro

[SGBD][SQL Server] De l'intérêt des devices pour les sauvegardes

La notion de device (unité de sauvegarde) a quasiment disparue des manuels de formation officiels de SQL Server. C'est à mon sens une hérésie, d'autant plus que les actuels dba sont de plus en plus boutonneux (je devrais dire juvéniles...) et désorganisés.
Or le device est le moyen le plus efficace pour ne pas perdre toutes ses sauvegardes lorsque l'on établis un plan comportant différents types de sauvegardes.

[Suite:]

Mais au fait... qu'est ce qu'un device ?

En fait un device est un super fichier dans lequel on peut stocker tous les fichiers de son plan de sauvegardes...
Ainsi, récupérer une base de données sera grandement facilité par le fait qu'il n'y aura jamais qu'un seul fichier à manipuler pour la restauration.

Démonstration avec un script de base :

-- pour que cet exemple fonctionne, il faut placer la base de données  
-- AdventureWorks en mode de journalisation FULL 
ALTER DATABASE AdventureWorks 
SET RECOVERY FULL 
GO 
 
-- ajout d'un device 
EXEC sp_addumpdevice 'disk',  
                     'DVC_backup_advw', 
                     'C:\mes_sauvegardes\dvc.toto' 
GO 
-- il n'est pas nécessaire que le répertoire existe à ce moment... 
 
-- lançons un premier backup : 
BACKUP DATABASE AdventureWorks 
TO DVC_backup_advw 
GO 
-- erreur ! : 
/* 
Msg 3201, Niveau  
16, État 1, Ligne 1 
Impossible d'ouvrir l'unité de sauvegarde 'DVC_backup_advw(C:\mes_sauvegardes\dvc.toto)'. Erreur 3(Le chemin d'accès spécifié est introuvable.) du système d'exploitation. 
Msg 3013, Niveau 16, État 1, Ligne 1 
BACKUP DATABASE s'est terminé anormalement. 
*/ 
-- normal, nous n'avons pas créé le répertoire. Créons le avec SQL Server (c'est plus simple !) 
EXEC xp_cmdshell 'MKDIR "C:\mes_sauvegardes\"' 
GO 
 
-- la sauvegarde complète fonctionne maintenant parfaitement 
BACKUP DATABASE AdventureWorks 
TO DVC_backup_advw 
GO 
/* 
21928 pages traitées pour la base de données 'AdventureWorks', fichier 'AdventureWorks_Data' dans le fichier 1. 
16 pages traitées pour la base de données 'AdventureWorks', fichier 'f1' dans le fichier 1. 
32 pages traitées pour la base de données 'AdventureWorks', fichier 'f2' dans le fichier 1. 
64 pages traitées pour la base de données 'AdventureWorks', fichier 'f3' dans le fichier 1. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f4' dans le fichier 1. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f5' dans le fichier 1. 
2 pages traitées pour la base de données 'AdventureWorks', fichier 'AdventureWorks_Log' dans le fichier 1. 
BACKUP DATABASE a traité avec succès 22058 pages en 19.850 secondes (9.103 Mo/s). 
*/ 
 
-- amusons nous à sauvegarder les bases de données système master et msdb : 
BACKUP DATABASE master 
TO DVC_backup_advw 
GO 
BACKUP DATABASE msdb 
TO DVC_backup_advw 
GO 
 
-- modifions quelques données de la base AdventureWorks 
UPDATE AdventureWorks.Person.Contact 
SET  FirstName = UPPER(FirstName) 
GO 
 
-- nous pouvons maitenant faire une sauvegarde différentielle 
BACKUP DATABASE AdventureWorks 
TO DVC_backup_advw 
WITH DIFFERENTIAL 
GO 
/* 
1192 pages traitées pour la base de données 'AdventureWorks', fichier 'AdventureWorks_Data' dans le fichier 4. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f1' dans le fichier 4. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f2' dans le fichier 4. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f3' dans le fichier 4. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f4' dans le fichier 4. 
8 pages traitées pour la base de données 'AdventureWorks', fichier 'f5' dans le fichier 4. 
2 pages traitées pour la base de données 'AdventureWorks', fichier 'AdventureWorks_Log' dans le fichier 4. 
BACKUP DATABASE WITH DIFFERENTIAL a traité avec succès 1234 pages en 1.418 secondes (7.129 Mo/s). 
*/ 
-- comme on le constate, cette sauvegarde concerne beaucoup moins de page que la complète. 
 
-- encore une modification pour tester la sauvegarde de journal 
UPDATE AdventureWorks.Person.Contact 
SET  LastName = UPPER(LastName) 
GO 
 
-- et maintenant une sauvegarde du journal de transaction pour achever le tout. 
BACKUP LOG AdventureWorks 
TO DVC_backup_advw 
GO

Intéressons nous maintenant à savoir ce que contient ce super fichier...

-- métadonnées du device : 
RESTORE LABELONLY 
FROM DVC_backup_advw 
-- on peut les obtenir de la même façon en utilisant un accès directe au fichier 
-- si le device n'est pas connu du serveur par exemple 
RESTORE LABELONLY 
FROM DISK = 'C:\mes_sauvegardes\dvc.toto' 
GO 
 
-- plus intéressant est la commande permettant d'avoir des informations sur le contenu du device : 
RESTORE HEADERONLY 
FROM DVC_backup_advw 
-- nous y voyons toutes les sauvegardes, qui les a faites, à quelle heure, quelle base est concernée, quel type de sauvegarde c'est... 
-- notez la colonne position du résultat de cette commande, elle va nous être utile par la suite... 
 
-- enfin, on peut connaître les éléments d'une sauvegarde en particulier. 
-- pour cela il faut indiquer la sauvegarde en faisant référence à sa position dans le device 
RESTORE FILELISTONLY 
FROM DVC_backup_advw 
WITH FILE = 3

La restauration devient alors jeu d'enfant, car quelle que doit le nombre des fichiers à passer en restauration ils se trouvent tous dans le même device !

***
Frédéric BROUARD - SQLpro - MVP SQL Server
Spécialiste SQL/BD modélisation de données
SQL & SGBDR http://sqlpro.developpez.com/
Expert SQL Server : http://www.sqlspot.com
audits - optimisation - tuning - formation

Social Bookmarking:

                                     

Commentaires, Pingbacks:

Connectez-vous pour vous abonner à cet article:

Flux de commentaires pour cet article : Atom 1.0  RSS 2.0

Cet article n'a pas de Commentaires/Pingbacks pour le moment...

Vous devez être identifié pour poster un commentaire.

Liste des blogs

< Le blog de SQLpro/>

Fred Brouard alias SQLpro

Rechercher

<  Avril 2012  >
Lun Mar Mer Jeu Ven Sam Dim
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30

Syndiquez ce blog XML

Articles :

Commentaires :

 
 
 
 
Partenaires

Hébergement Web