Historal de backups y restauración SQL Server

Hola,gpsos-dbaremoto

si eres DBA, antes o después te encontrarás con esta problemática. Es por ello que basándonos en la query encontrada en dbamemories, hemos creado una query para obtener el historial de backups y restauraciones de todas las bases de datos de la instancia de SQL Server, así con una sola ejecución de este script podrás ver cuando fue el último backup, de qué tipo, en qué ubicación…ya sea para consulta, para verificar que se ha realizado bien el backup la noche anterior, para encontrar el último backup que se realizó o el que se hizo la semana anterior para restaurarlo en todas las bases de datos. Para ello hemos usado del procedimiento no documentado de Microsoft, sp_MSforeachdb, que ejecuta el comando que le indiquemos sobre todas las BBDDs. Esta sería la query:

EXEC sp_MSforeachdb 'USE ? ;
select
bs.database_name as TargetDatabase
,bs.backup_start_date as Operation_Date
,cast(datediff(minute,bs.backup_start_date,bs.backup_finish_date)/60 as varchar) + '' hours '' +
cast(datediff(minute,bs.backup_start_date,bs.backup_finish_date)%60 as varchar) + '' minutes '' +
cast(datediff(second,bs.backup_start_date,bs.backup_finish_date)%60 as varchar) + '' seconds''
as [Duration]
,cast(bs.backup_size/1024/1024 as decimal(22,2)) as [BackupSize(MB)]
,''BACKUP'' as Operation_Type
,case bs.type
when ''D'' then ''Database''
when ''L'' then ''Log''
when ''I'' then ''Differential''
end as BackupType
,bs.user_name as [User]
,bmf.physical_device_name as BackupFile
,bs.server_name as ServerOrigin
,bs.recovery_model
,bs.begins_log_chain
,bs.is_copy_only
,bms.software_name as BackupSoftware
from msdb.dbo.backupset bs
inner join msdb.dbo.backupmediaset bms
on bs.media_set_id = bms.media_set_id
inner join msdb.dbo.backupmediafamily bmf
on bms.media_set_id = bmf.media_set_id
where bs.database_name = db_name()
and bs.server_name = serverproperty(''servername'')
union all
select
rh.destination_database_name
,rh.restore_date as operation_date
,''Unknown'' as [Duration]
,cast(bs.backup_size/1024/1024 as decimal(22,2)) as [BackupSize(MB)]
,''RESTORE'' as Operation_Type
,case rh.restore_type
when ''D'' then ''Database''
when ''L'' then ''Log''
when ''I'' then ''Differential''
end as BackupType
,rh.user_name as [User]
,bmf.physical_device_name as BackupFile
,bs.server_name as ServerOrigin
,bs.recovery_model
,bs.begins_log_chain
,bs.is_copy_only
,bms.software_name as BackupSoftware
from msdb.dbo.backupset bs
inner join msdb.dbo.backupmediaset bms
on bs.media_set_id = bms.media_set_id
inner join msdb.dbo.backupmediafamily bmf
on bms.media_set_id = bmf.media_set_id
inner join msdb.dbo.restorehistory rh
on bs.backup_set_id = rh.backup_set_id
where rh.destination_database_name = db_name()
order by 2 desc
';

Esperamos que esta aportación os ayude.

Un saludo,

Equipo DBA.

Uso de cookies

GPS Open Source, S.L, le informa que este sitio web utiliza Cookies tanto propias como de terceros para facilitar la navegación y para recopilar información estadística sobre su navegación. Si pulsa aceptar o continúa navegando entenderemos que acepta la instalación de las mismas. Más Info, política de cookies

ACEPTAR
Show Buttons
Hide Buttons