MS-SQL Curseur et sauvegarde
Utilisation simple d’un curseur avec MS-SQL et script pour faire une sauvegarde de toutes vos bases de données.
DECLARE @name VARCHAR(50) – Nom de la base de données
DECLARE @path VARCHAR(256) – Répertoire pour la sauvegarde
DECLARE @fileName VARCHAR(256) – Nom du fichier de sauvegarde
DECLARE @fileDate VARCHAR(50) – Date et heure utilisé pour nommé la sauvegarde et l’identifier
SET @path = 'C:\Sauvegarde\'
SELECT @fileDate = REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),113),' ','_'),':','_')
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb')
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Le curseur est utilisé pour passer enregistrement par enregistrement dans une boucle avec la fonction WHILE. La variable @@FETCH_STATUS est égale a 0 tant qu'il y a des enregistrements à lire.
Dans le select du nom de base de données il faut exclure les tables systèmes (master, modelm msdb, tempdb) pour ne faire une sauvegarde que de vos bases de données de façon dynamique.
Je n'expliquerai pas ici comment créer une tâche avec MS-SQL mais je vous conseil d'en créer une et de la céduler pour le jour et l'heure voulu et vous venez d'automatiser votre sauvegarde.
Daniel Bernier
Mis à jour (Mercredi, 12 Mai 2010 21:29)