SCRIPT ULTIMO BACKUP
Este script ira gera o código para o job ira recolher dos servidores o status do ultimo backup.
Claro que no cenário apresentado toda a noite rodamos um backup, assim este script entende que se o ultimo backup tem mais de 24 horas então deu pau em algum backup.
Outra coisa a tabela [Control_Data_Base].[dbo].[servidores] poderá ser consultada com condições diferentes neste caso só irei fazer dos servidores Sql Server 2008 R2 que estiverem ativos.
DECLARE @nome_banco varchar(50)
DECLARE lista CURSOR SCROLL FOR
SELECT /*[nome]
,[ip]
, */
[hostname]
/* ,[descricao]
,[tipo_servidor]
,[ativo]
,[drive_backup_local]
,[drive_backup_rede]
,[sist_op]
,[sgbd]
*/
FROM [Control_Data_Base].[dbo].[servidores] where ativo='YES' /* and nome='BIUBIU ;-)' */ AND sgbd='Sql Server 2008 R2' ORDER BY tipo_servidor, nome
OPEN lista
-- Primeiro registro
FETCH FIRST FROM lista INTO @nome_banco
WHILE @@FETCH_STATUS = 0
BEGIN
print '/*****************************************************/'
print '/* Auditoria Backup SERVIDOR = '+RTRIM(@nome_banco)+' */'
print '/*****************************************************/'
print '
INSERT INTO [Control_Data_Base].[dbo].[check_backup]
([server],[base],[last_backup],[date_check],[situation])
'
print 'SELECT '''+RTRIM(@nome_banco)+''' as Servidor
,sdb.Name AS DatabaseName
,MAX(bus.backup_finish_date) AS Ultimo_bak
, getdate() as Data_atual
,(CASE WHEN datediff(day, MAX(bus.backup_finish_date), getdate()) >1
then '''+'ALERTA FALHA'+'''
else '''+'ok'+''' END
) as columnname
FROM '+RTRIM(@nome_banco)+'.master.sys.databases sdb
LEFT OUTER JOIN '+RTRIM(@nome_banco)+'.msdb.dbo.backupset bus ON bus.database_name = sdb.name
GROUP BY sdb.Name
'
-- Próximo registro
FETCH NEXT FROM lista INTO @nome_banco
END
CLOSE lista
DEALLOCATE lista