En ligne
Nous avons 2 invités en ligne

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)