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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| -- déclaration variable
Declare @nom_base varchar(255),
@FileName varchar(255),
@backup varchar(255),
@CMD varchar(255),
@File_Exists int;
--recupération de la liste des bases
declare curseur_liste_base cursor for select [name] from sys.databases where sys.databases.name != 'tempdb' ;
Open curseur_liste_base
while (1=1)
BEGIN ;
--parcours de la liste des bases
Fetch next from curseur_liste_base into @nom_base;
IF @@FETCH_STATUS < 0 BREAK;
SELECT @FileName='D:\Backup\'+ @nom_base
SET @backup= @FileName + '\' + @nom_base + REPLACE(REPLACE(REPLACE(CONVERT(CHAR(16),CURRENT_TIMESTAMP, 120), '-', ''), ' ', ''), ':', '') + '.bak' --chemin + nom sauvegarde
EXEC Master.dbo.xp_fileexist @FileName, @File_Exists OUT --test de l'existance du recpertoite de sauvegarde
IF @File_Exists = 1 --si exite sauvegarde
Begin
BACKUP DATABASE @nom_base TO DISK = @backup WITH NOFORMAT, NOINIT, NAME = @nom_base, STATS = 10
SET @CMD = 'C:\WINDOWS\system32\gzip ' + @backup -- compression
EXEC xp_cmdshell @CMD
END
Else -- si n'existe pas
Begin
SET @CMD = 'MD '+ @FileName -- creation du repertoire
EXEC xp_cmdshell @CMD
BACKUP DATABASE @nom_base TO DISK = @backup WITH NOFORMAT, NOINIT, NAME = @nom_base, SKIP, NOREWIND, NOUNLOAD, STATS = 10
SET @CMD = 'C:\WINDOWS\system32\gzip ' + @backup --compression
EXEC xp_cmdshell @CMD
END
END;
-- Close and deallocate the cursor.
CLOSE curseur_liste_base;
DEALLOCATE curseur_liste_base; |
Partager