Bonjour,

Suite à un problème de place pour les sauvegardes , je mets en place un job qui liste l'ensemble des bases et ensuite fait la sauvegarde et la compression des bases.

Cependant je ne sais pas pourquoi la sauvegarde et la compression ne se fait pas pour toutes les bases (seulement 10 sur 240).
je n'ai pas de message d'erreur et tous semble s'exécuter normalement

ce que je ne comprend c'est que lorsque je remplace les traitements dans les if part des print @nom_base , il m'affiche bien le nom de toutes les bases


Ci dessous le code .

une idée ?

Cordialement,


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;