DBAtlas · Atlas de operaciones de bases de datos

Historial de backups desde msdb y comprobación de backups faltantes

SQL ServerBackup y log

Comando

-- Last FULL / DIFF / LOG per database (never backed up first):
SELECT d.name AS db,
       d.recovery_model_desc,
       MAX(CASE WHEN b.type = 'D' THEN b.backup_finish_date END) AS last_full,
       MAX(CASE WHEN b.type = 'I' THEN b.backup_finish_date END) AS last_diff,
       MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END) AS last_log,
       DATEDIFF(MINUTE, MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END), GETDATE()) AS log_age_min
FROM   sys.databases d
  LEFT JOIN msdb.dbo.backupset b
         ON b.database_name = d.name AND b.is_copy_only = 0
WHERE  d.name <> N'tempdb'
GROUP BY d.name, d.recovery_model_desc
ORDER BY last_full;

-- Chain for one DB over the last 7 days (LSN, size, file):
SELECT b.backup_start_date, b.backup_finish_date, b.type, b.is_copy_only,
       b.first_lsn, b.last_lsn, b.database_backup_lsn,
       CAST(b.backup_size / 1048576.0 AS DECIMAL(12,1))            AS size_mb,
       CAST(b.compressed_backup_size / 1048576.0 AS DECIMAL(12,1)) AS compressed_mb,
       b.has_backup_checksums, mf.physical_device_name
FROM   msdb.dbo.backupset b
  JOIN msdb.dbo.backupmediafamily mf ON mf.media_set_id = b.media_set_id
WHERE  b.database_name = N'Musteri'
  AND  b.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY b.backup_start_date;

Qué hace

Lista la hora del último backup FULL/DIFF/LOG y la antigüedad del backup de log de cada base de datos; para una base de datos, la cadena de backups con la secuencia de LSN, el tamaño comprimido, el indicador de checksum y la ruta del archivo.

Cuándo usarlo

En la revisión matutina, para saber qué archivos necesita una restauración, para responder "cuándo fue el último backup" en una auditoría o para ver si los backups de log se están ejecutando durante una alerta de log lleno.

Precaución

msdb solo conoce los backups tomados por esta instancia; los backups tomados en otro servidor o en otra réplica del AG no son visibles (revise cada réplica de un AG). El first_lsn de un backup de log debe ser igual al last_lsn del anterior; un hueco significa que la cadena está rota. En recuperación FULL, un last_log NULL significa que el log nunca se respalda y seguirá creciendo. Consulta de solo lectura; segura.

Abrir en DBAtlas →

Relacionado