Los backups son probablemente una de las partes más importantes de nuestra instancia SQL Server y también la forma más sencilla de afrontar un problema con la recuperación de las bases de datos en caso de que sea necesario.
Saber hacer una configuración óptima de los backups es un conocimiento FUNDAMENTAL para cualquier administrador de bases de datos.
Script para comprobar los últimos backups completados en SQL Server
Dicho esto, a veces tenemos que hacer comprobaciones de cuándo y cómo se han tomado los backups, por lo que hoy os traigo un script que nos mostrará toda la información que necesitamos para hacer un análisis de la configuración de los backups de una instancia.
Este script trae algunas líneas opcionales que pueden ser descomentadas para filtrar cosas como el tipo de backup o el nombre de la base de datos.
SELECT TOP 100 s.backup_start_date as 'Start Date', s.backup_finish_date as 'Full Date', CONVERT(varchar, s.backup_finish_date, 103) as 'Date', CONVERT(VARCHAR(8),s.backup_finish_date,108) as 'Time', DATEDIFF(minute, s.backup_start_date, s.backup_finish_date) as 'Duration (minutes)', s.database_name as 'Database Name', CAST(s.backup_size / (1024*1024) as int) as 'Backup Size (MBs)', CASE WHEN (s.[type] = 'D' AND s.is_copy_only = 0) THEN 'Full' WHEN (s.[type] = 'D' AND s.is_copy_only = 1) THEN 'Full - CopyOnly' WHEN (s.[type] = 'I') THEN 'Differential database' WHEN (s.[type] = 'L') THEN 'Log' WHEN (s.[type] = 'F') THEN 'File or filegroup' WHEN (s.[type] = 'G') THEN 'Differential file' WHEN (s.[type] = 'P') THEN 'Partial' WHEN (s.[type] = 'G') THEN 'Differential partial' ELSE NULL END AS BackupType, m.physical_device_name as 'Backup Device', t.physical_device_name as 'Differential base - Device', t.backup_finish_date as 'Differential base - Full Date', s.[user_name] as [User] FROM msdb.dbo.backupset s INNER JOIN msdb.dbo.backupmediafamily m ON s.media_set_id = m.media_set_id LEFT JOIN (SELECT ss.backup_set_uuid, ss.backup_finish_date, mm.physical_device_name FROM msdb.dbo.backupset ss INNER JOIN msdb.dbo.backupmediafamily mm ON ss.media_set_id = mm.media_set_id ) as t ON s.differential_base_guid = t.backup_set_uuid WHERE 1=1 --AND s.type = 'D' -- Backups full --AND s.type = 'I' -- Backups diferencial --AND s.type = 'L' -- Backups log --AND s.database_name = '' -- Comprobar una base de datos en particular --AND s.database_name = DB_NAME() -- Comprobar la base de datos actual order by s.backup_start_date DESC GO
El resultado de este script nos mostrará la información de la siguiente manera (he censurado la información sensible y privada).

¿Todavía tienes dudas?
Si este post no ha solucionado tu problema o todavía tienes dudas sobre este o cualquier otro asunto relacionado con SQL Server, puedes enviarme un mensaje o solicitar una consultoría gratuita haciendo clic aquí.