Bonjour,

J'ai une procédure que vérifie la dat du dernier backup des bases de données dont voici le code (désolé si c pas propre) :

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
/*Procedure permettant de vérifier le dernier backup de chaque base applicative*/
 
CREATE PROCEDURE sp_CHECK_BACKUP
AS
 
DECLARE @dbname varchar(50)
DECLARE @sql nvarchar(4000)
DECLARE @plastbckp datetime
DECLARE @Para NVARCHAR(500)
DECLARE @sortie NVARCHAR (2000)
DECLARE @jobid varchar(100)
DECLARE @pjobtime int
set @sortie=''
 
DECLARE alldbname CURSOR FOR
 
-- On rΘcupΦre toutes les bases USER
SELECT name from master.dbo.sysdatabases
 
OPEN alldbname
 
--On initialise la variable @dbname avec la premiΦre valeur renvoyΘe par la requΩte
FETCH next from alldbname INTO @dbname
 
--Tant que l'on a des rΘsultats
WHILE @@fetch_status = 0
BEGIN
	-- Si la base de donnΘes n'est pasune base system
	if @dbname <> 'master' and @dbname <> 'model' and @dbname <> 'msdb' and @dbname <> 'Northwind' and @dbname <> 'pubs' and @dbname <> 'tempdb'
	BEGIN
		-- On rΘcupΦre la date du dernier backup
		SET @Para = N'@lastbckp datetime OUTPUT'
		set @sql = 'set nocount on '
		set @sql = @sql + ' select @lastbckp = backup_finish_date from backupset where database_name = ''' + @dbname + ''' and type = ''D'' order by backup_finish_date asc'
		exec sp_executesql @sql, @Para, @lastbckp = @plastbckp OUTPUT
 
		-- Si la date du dernier backup est diffΘrente de la date du jour ou de la date de la veille
		-- On affiche un message d'erreur
		if CONVERT(char(8),@plastbckp,3)!= CONVERT(char(8),getdate(),3) and datename(dy,@plastbckp) != (datename(dy,getdate()) -1)
			set @sortie = @sortie+'Probleme : le dernier backup de la base '+@dbname+' date du ' + CONVERT(char(8),@plastbckp,3)+'
'
 
 
	END
 
FETCH next from alldbname INTO @dbname
END
 
-- S'il y a eu des erreurs (longeur de sortie > 0) alors on affiche le nom du serveur et les erreurs
if LEN(@sortie)> 0
BEGIN
	PRINT '		'
	PRINT @@servername+' : '
	PRINT '		'
	PRINT @sortie
END
 
CLOSE alldbname
 
DEALLOCATE alldbname
 
 
GO
Le problème que j'ai est le suivant :
grâce a cette procédure j'envoie des mails tous les matins qui me donnent un compte rendu des backups en erreur. Je n'en ai pas eu ce matin, hors sur un serveur la sauvegarde n'as pas eu lieu depuis un moment.
Ce qui signifierai que l'on a une entrée dans la table backupset même si la sauvegarde échoue ce qui m'inquiète un peu. Ya t'il un moyen plus fiable de vérifer si la sauvegarde est correcte ?

Merci d'avance.