Como Detectar Ausência de Backups em Produção
Vou abordar um assunto simples, porém muito importante para “não abrir a vaga” do DBA: BACKUP.
Você precisa verificar se todos os bancos de dados dos servidores em produção estão com os backups em dia, o que fazer?
Colocar simplesmente um alerta no JOB de backup para quando ocorrer uma falha não basta, porque pode existir um banco novo que ainda não possui JOB de backup… Ou então se o JOB de backup foi desabilitado?
Existe um método simples de verificar consultando a tabela backupset no banco de dados de sistema MSDB. Veja a consulta abaixo:
select b.database_name as Banco,b.backup_finish_date as UltimoBackup, case b.[type] when 'D' then 'Database' when 'I' then 'Database Differential' when 'L' then 'Log' when 'F' then 'File or Filegroup' end as TipoBackup -- b.* from msdb.dbo.backupset b join (select database_name, max(backup_finish_date) backup_finish_date from msdb.dbo.backupset group by database_name) u on b.database_name = u.database_name and b.backup_finish_date = u.backup_finish_date where b.backup_finish_date < (getdate() - 2) or b.backup_finish_date is null order by b.database_name
A consulta acima retorna lista com os bancos de dados onde o último backup feito (não importa o tipo) for anterior a dois dias da data corrente.
Para obter a lista dos bancos de dados sem backup nos últimos 2 dias, basta comparar o resultado da consulta acima com a View sysdatabases, veja:
with BackupFeito as ( select b.database_name as Banco from msdb.dbo.backupset b join (select database_name, max(backup_finish_date) backup_finish_date from msdb.dbo.backupset group by database_name) u on b.database_name = u.database_name and b.backup_finish_date = u.backup_finish_date where b.backup_finish_date < (getdate() - 2) or b.backup_finish_date is null) select name as Banco from sysdatabases s where s.name not in('tempdb','model') and not exists (select * from BackupFeito b where b.Banco = s.name)
Basta rodar esta consulta em cada servidor para obter a listagem dos bancos de dados sem backup nos últimos 2 dias!
Você pode automatizar utilizando Linked Server ou PowerShell.
Até o próximo post,
Landry