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