--- in SQL Server, for databases using FULL recovery model, their transaction logs are backed up
--- quite frequently in a typical env. This query gives hourly log backup size of a database for
--- each day in the tabular format
with B (backup_day, backup_hour, LogBackupSize_MB)
as
(
select backup_day, backup_hour, cast(sum(backup_size)/1000000 as int) LogBackupSize_MB
from
(
select
convert(char(23), bs.backup_start_date, 111) as backup_day
, cast(datepart(hh, bs.backup_start_date) as varchar) backup_hour
, bs.backup_size as backup_size
from
msdb.dbo.backupset bs
WHERE (CONVERT(datetime, bs.backup_start_date, 102) >= GETDATE() - 14)
and bs.database_name = 'MYDBNAME'
and bs.type='L'
) A
group by backup_day, backup_hour
)
select * from B -- cols to pivot: backup_day, hour, LogBackupSize_MB
pivot (
max(LogBackupSize_MB) -- Pivot on this column
for backup_hour in ([0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],
[13],[14],[15], [16],[17],[18],[19],[20],[21],[22],[23],[24] )) -- make backup_hour one of this
as LogBackupSizeHourly -- Pivot table alias
In one of our production SQL Server databases, the transaction log backup happens every 15 min. Below is the sample output from the query:
No comments:
Post a Comment