Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

SQL Server : Sauvegarder ses bases de données vers un fichier horodaté et vérifier les sauvegarde automatiquement

Pour commencer la semaine, voici un script d'automatisation de sauvegarde, qui vous permet d'un part d'intégrer la date à vos fichiers de sauvegarde et d'autre part de lancer la vérification de celle-ci en se basant sur un calcul de CHECKSUM.

Dans ce genre de cas, une logique à base de curseur est de loin ce qui se fait de plus simple, on exécute la commande BACKUP DATABASE dans cette boucle en lui passant 2 variables, l'une correspondant au nom de la base de données, l'autre au nom du fichier cible.

J'utilise une nouveauté de SQL Server 2005, qui consiste dans le calcul d'un CHECKSUM pour permettre la vérification de l'intégrité du fichier de sauvegarde (ne pas confondre avec le CHECKSUM intégré dans les pages au sein de SQL Server) et à la suite de la sauvegarde la commande de vérification (RESTORE VERIFYONLY) qui n'est pas nouvelle, mais intègre l'option de CHECKSUM elle aussi.

Libre à vous d'y ajouter des blocs TRY / CATCH si nécessaire et aussi de mettre un DBCC CHECKDB avant la sauvegarde pour assurer l'intégrité logique de la base de données. On pourra aussi paralléliser un peu plus l'exécution en réalisant le CHECKDB d'une base pendant le BACKUP d'une autre et le VERIFY d'une autre encore. Mais là ça devient compliqué.

Le script :

DECLARE @path nvarchar(4000) ;
DECLARE @dbid int, @dbname sysname ;
DECLARE @filename nvarchar(max) ;

SET @path =
'C:\BACKUP\' ;

DECLARE crsDB CURSOR FOR SELECT database_id, name FROM sys.databases WHERE name != 'tempdb' FOR READ ONLY ;

OPEN crsDB ;

FETCH NEXT FROM crsDB INTO @dbid, @dbname ;


WHILE ( @@FETCH_STATUS = 0)

BEGIN


    SET @filename = @path + CASE WHEN RIGHT(@path, 1) != N'\' THEN N'\' ELSE N'' END + @dbname + CONVERT(nvarchar(20),GETDATE(), 112) + '.BAK';

BACKUP DATABASE @dbname TO DISK = @filename WITH CHECKSUM;
RESTORE VERIFYONLY FROM DISK = @filename WITH CHECKSUM
;

FETCH NEXT FROM crsDB INTO @dbid, @dbname ;


END


CLOSE crsDB ;

DEALLOCATE crsDB ;

Dernière chose pour déterminer l'emplacement par défaut au SQL Server dépose ses sauvegarde :

-- Récupère l'emplacement par défaut des sauvegardes

DECLARE @regpath nvarchar(4000);
DECLARE @instancename nvarchar(128), @regvalue nvarchar(1000);

-- Détermine le nom de l'instance
SELECT @instancename = CAST(CASE WHEN SERVERPROPERTY('InstanceName') IS NULL THEN 'MSSQLSERVER' ELSE serverproperty('InstanceName') END as nvarchar(128))

SET @regpath =
'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL' ;

EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key=@regpath,
@value_name=@instancename,
@value=@regvalue OUTPUT

SET
@regpath =
'Software\Microsoft\Microsoft SQL Server\' + @regvalue
+
'\MSSQLServer' ;

-- Trouve le chemin d'installation
EXEC master..xp_regread @rootkey='HKEY_LOCAL_MACHINE',
@key=@regpath,
@value_name='BackupDirectory',
@value=@regvalue OUTPUT

SET
@path =
@regvalue
;

Ce dernier script peut être inséré dans la suite de la déclaration de variable du code de sauvegarde.

Bonne sauvegarde…

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Publié lundi 12 juillet 2010 13:33 par christian

Commentaires

Pas de commentaires
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le il y a 10 heures et 18 minutes

- Perspective 3.0 pour Silverlight 5.0 par Perspective le il y a 11 heures et 38 minutes

- TechDays Paris 2012 : Top 10 des Best Practices pour SQL Server par Blog Technique de Romelard Fabrice le il y a 17 heures et 15 minutes

- TechDays Paris 2012 : Kinect + Office 365 un bon geste pour votre SI par Blog Technique de Romelard Fabrice le il y a 17 heures et 38 minutes

- TechDays Paris 2012 : Pleinière du premier jour par Blog Technique de Romelard Fabrice le il y a 17 heures et 53 minutes

- [SharePoint 2010] Erreur d’analyse de contenu “L’élément SharePoint en cours d’analyse a renvoyé une erreur lors de la demande de données auprès du se... par Julien Chable le il y a 22 heures et 26 minutes

- [TechDays2012] Oui j’y serai! par Blog de Jérémy Jeanson le 02-06-2012, 22:13

- TFS Integration Tools – Suivi des synchronisations avec Reporting Services par Vivien Fabing le 02-05-2012, 17:46

- CSS Content State Selectors (Personnal Draft) par Le blog de FremyCompany le 02-04-2012, 15:38

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le 02-03-2012, 14:22