MS SQL Express 2005 Sauvegarde des données Création : 08.04.2011 Modification : 08.04.2011 Situation La base de données gratuite MSSQL Express 2005 ne dispose pas d agent (planificateur de tâche) comme dans la version complète de MSSQL et de ce fait, ne permet pas d automatiser les sauvegardes des bases de données. Solution Etape 1: créer l arborescence des répertoires Pour qu il soit possible de paramétrer les scripts, il est nécessaire de créer deux répertoires : Répertoire de sauvegarde : dans notre exemple "C:\Backuped_SQL_DB" Répertoire des scripts : dans notre exemple "C:\SQLBACKUP" hostagest sàrl Grand Rue 14 CH 1083 Mézières Tél : +41 21 635 31 02 Fax : +41 21 635 31 04 Email : info@hostagest.ch Homepage : www.hostagest.ch
Création du script de sauvegarde "Backup_All_Databases.sql" Le script suivant sert de base pour votre script de sauvegarde : Les adaptations suivantes doivent être entreprises : 1. Le répertoire de sauvegarde. Dans notre exemple : 'C:\Backuped_SQL_DB\' Au cas où la sauvegarde devrait être enregistrée sur un lecteur réseau, il est important de saisir le chemin UNC. 2. Liste de toutes les bases de données qui doivent être exclues de la sauvegarde. Dans notre exemple : 'tempdb' et 'model' MS SQL Express 2005 Sauvegarde des données Page 2 sur 19
DECLARE @BackupFile varchar(255), @DB varchar(30), @Description varchar(255), @LogFile varchar(50) DECLARE @Name varchar(30), @MediaName varchar(30), @BackupDirectory nvarchar(200) SET @BackupDirectory = 'C:\Backuped_SQL_DB\' --Add a list of all databases you don't want to backup to this. DECLARE Database_CURSOR CURSOR FOR SELECT name FROM sysdatabases WHERE name <> 'tempdb' AND name <> 'model' OPEN Database_Cursor FETCH next FROM Database_CURSOR INTO @DB WHILE @@fetch_status = 0 BEGIN SET @Name = @DB + '( Daily BACKUP )' SET @MediaName = @DB + '_Dump' + CONVERT(varchar, CURRENT_TIMESTAMP, 112) SET @BackupFile = @BackupDirectory + + @DB + '_' + 'Full' + '_' + CONVERT(varchar, CURRENT_TIMESTAMP, 112) + '.bak' SET @Description = 'Normal' + ' BACKUP at ' + CONVERT(varchar, CURRENT_TIMESTAMP) + '.' IF (SELECT COUNT(*) FROM msdb.dbo.backupset WHERE database_name = @DB) > 0 OR @DB = 'master' BEGIN SET @BackupFile = @BackupDirectory + @DB + '_' + 'Full' + '_' + CONVERT(varchar, CURRENT_TIMESTAMP, 112) + '.bak' --SET some more pretty stuff for sql server. SET @Description = 'Full' + ' BACKUP at ' + CONVERT(varchar, CURRENT_TIMESTAMP) + '.' END ELSE BEGIN SET @BackupFile = @BackupDirectory + @DB + '_' + 'Full' + '_' + CONVERT(varchar, CURRENT_TIMESTAMP, 112) + '.bak' --SET some more pretty stuff for sql server. SET @Description = 'Full' + ' BACKUP at ' + CONVERT(varchar, CURRENT_TIMESTAMP) + '.' END BACKUP DATABASE @DB TO DISK = @BackupFile WITH INIT, NAME = @Name, DESCRIPTION = @Description, MEDIANAME = @MediaName, MEDIADESCRIPTION = @Description, STATS = 10 FETCH next FROM Database_CURSOR INTO @DB END CLOSE Database_Cursor DEALLOCATE Database_Cursor MS SQL Express 2005 Sauvegarde des données Page 3 sur 19
Création du fichier batch qui supprime les anciens fichiers de sauvegarde et exécute le script de sauvegarde C:\SQLBACKUP\FORFILES -pc:\backuped_sql_db -s -m*.bak -d-3 -c"cmd /C del /Q @FILE" sqlcmd -S.\SQLEXPRESS -i "C:\SQLBACKUP\Backup_All_Databases.sql" Veuillez noter : Forfiles.exe doit se trouver dans le répertoire déclaré. Nous vous conseillons d utiliser le Forfiles.exe livré, il existe en effet d autres versions avec une syntaxe totalement différente. Les deux lignes de commandes en détail La syntaxe de ces deux lignes doit exactement correspondre. Trop ou trop peu de caractères d espacement provoquent des erreurs. FORFILES Veuillez noter : Forfiles.exe doit se trouver dans le répertoire déclaré. Nous vous conseillons d utiliser le Forfiles.exe livré, il existe en effet d autres versions avec une syntaxe totalement différente. Le paramètre /d-3 signifie que les fichiers qui datent de plus de trois jours doivent être supprimés. Le paramètre pc:\backuped_sql_db signifie que le répertoire C:\Backuped_SQL_DB est pris en compte. Le paramètre -s signifie que les sous-répertoires doivent être pris en compte. Ce paramètre peut être ignoré si dans le répertoire de sauvegarde, aucun sous-répertoire n a été créé, ce qui est le cas dans notre exemple. Le paramètre -m*.* a pour effet de supprimer tous types de fichiers. Si vous ne désirez supprimer que les fichiers dont l extension est.bak, saisissez le paramètre ainsi : -m*.bak. MS SQL Express 2005 Sauvegarde des données Page 4 sur 19
Sqlcmd Comme avec "Forfiles", il peut y avoir des différences selon les versions de sqlcmd. Dans l invite de commandes (Démarrer > Exécuter > cmd), la syntaxe peut être éditée : Ci-dessous, la commande originale de Microsoft qui n existe pas sous forme de fichier exe mais qui est intégrée dans le service SQL : Voici une version d un prestataire tiers (AnalogX) qui existe en tant que "sqlcmd.exe" : Attention : nous nous basons sur la commande originale de MSQL 2005 Express! Elle se trouve automatiquement sur l ordinateur, sur lequel est installé MS SQL Express. MS SQL Express 2005 Sauvegarde des données Page 5 sur 19
Le paramètre.\sqlexpress permet de déclarer le nom de l instance du serveur SQL. Dans notre cas, le point avant l antislash signifie qu il s agit d une instance locale. A la place du point, il est possible de saisir le nom du serveur Host, p. ex. NB03. Bien entendu, le répertoire dans le script de sauvegarde doit être correctement indiqué. Dans notre exemple : "C:\Backup_all_databases.sql". Enregistrement des trois fichiers dans un répertoire Fichiers «Forfiles.exe», fichier batch et script SQL MS SQL Express 2005 Sauvegarde des données Page 6 sur 19
Création d une tâche Windows Windows 7 Sélectionnez le menu «Démarrer - Panneau de configuration - Outils d administration - Planificateur de tâche». MS SQL Express 2005 Sauvegarde des données Page 7 sur 19
Sélectionnez «Créer une tâche de base». Saisissez le nom de la tâche ainsi que la description puis cliquez sur le bouton «Suivant». MS SQL Express 2005 Sauvegarde des données Page 8 sur 19
Sélectionnez le déclencheur, c est-à-dire la périodicité de la tâche et cliquez sur le bouton «Suivant». Indiquez la date et l heure de début de la tâche et cliquez sur le bouton «Suivant». Une sauvegarde à midi est indiquée car il est possible de laisser tourner l ordinateur sans problème et au retour, il est possible de vérifier immédiatement si la sauvegarde a été effectuée avec succès. MS SQL Express 2005 Sauvegarde des données Page 9 sur 19
Déterminez quelle action le planificateur doit effectuer. Dans notre cas un programme doit être exécuté. Cliquez ensuite sur le bouton «Suivant». Sélectionnez le programme (batch) à exécuter en cliquant sur le bouton «Parcourir». MS SQL Express 2005 Sauvegarde des données Page 10 sur 19
Sélectionnez le fichier batch et cliquez sur le bouton «Ouvrir». Dans notre exemple : c:\sqlbackup\backup_all_databases MS SQL Express 2005 Sauvegarde des données Page 11 sur 19
Cliquez sur le bouton «Suivant». Un résumé s affiche. Cliquez sur le bouton «Terminer». MS SQL Express 2005 Sauvegarde des données Page 12 sur 19
Test de la tâche Dans le planificateur de tâche, double-cliquez sur la tâche créée. Cliquez sur le bouton «Exécuter» pour démarrer la tâche à n importe quel moment. Sous «Propriétés», il est possible de modifier les paramétrages. MS SQL Express 2005 Sauvegarde des données Page 13 sur 19
Windows XP Sélectionnez le menu «Démarrer Panneau de configuration Tâches planifiées». Double-cliquez sur «Création d une tâche planifiée» pour ouvrir l assistant de création de tâche. Cliquez sur le bouton «Suivant». MS SQL Express 2005 Sauvegarde des données Page 14 sur 19
Sélectionnez le programme (batch) à exécuter en cliquant sur le bouton «Parcourir». Sélectionnez le fichier batch et cliquez sur le bouton «Ouvrir». Dans notre exemple : c:\sqlbackup\backup_all_databases MS SQL Express 2005 Sauvegarde des données Page 15 sur 19
Sélectionnez la périodicité de la tâche et cliquez sur le bouton «Suivant». Indiquez la date et l heure de début de la tâche et cliquez sur le bouton «Suivant». Une sauvegarde à midi est indiquée car il est possible de laisser tourner l ordinateur sans problème et au retour, il est possible de vérifier immédiatement si la sauvegarde a été effectuée avec succès. MS SQL Express 2005 Sauvegarde des données Page 16 sur 19
Saisissez le nom d utilisateur et le mot de passe qui doit être confirmé et cliquez sur le bouton «Suivant». Remarque : Un mot de passe est obligatoire Un résumé s affiche. Cliquez sur le bouton «Terminer» pour confirmer la tâche. MS SQL Express 2005 Sauvegarde des données Page 17 sur 19
Test de la tâche Dans les tâches planifiées, cliquez avec le bouton droit de la souris sur la tâche créée. Sélectionnez «Exécuter» pour démarrer la tâche à n importe quel moment. Sous «Propriétés», il est possible de modifier les paramétrages. MS SQL Express 2005 Sauvegarde des données Page 18 sur 19
Vérification de la sauvegarde Il est important que vous contrôliez chaque jour si la sauvegarde a été effectuée avec succès! Bien entendu la tâche ne sera pas exécutée si rien ne fonctionne à l heure prévue. Options étendues du planificateur de tâche de Windows Marquez la tâche et sélectionnez le menu «Avancé» : Windows 7 : Dans Windows 7, l onglet «Historique» affiche le protocole de la tâche. Windows XP : M avertir lorsqu une tâche n a pas été exécutée Ne donne aucune garantie que la tâche a été complètement et correctement exécutée. Dans le planificateur de tâche de Windows, il n est pas possible d exclure les fins de semaines. Afficher le journal Affichage d un protocole de traitement de tâches. MS SQL Express 2005 Sauvegarde des données Page 19 sur 19