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 |
Partager