Muitas vezes precisamos acompanhar o tamanho dos backups gerados.
Com isso podemos prever o espaço necessário para alocação dos backups.

Este script monta um pivot, com o tamanho médio do backup no mês.
As linhas são os Databases e as colunas os meses atual e anteriores.
Sendo Mês 0 (zero) o mês atual, Mês -1 o mês anterior e assim por diante.

DECLARE @DataInicial datetime;
SET @DataInicial = GetDate();
SELECT PVT.DatabaseName, PVT.[0], PVT.[-1], PVT.[-2], PVT.[-3], PVT.[-4], PVT.[-5], PVT.[-6], PVT.[-7], PVT.[-8], PVT.[-9], PVT.[-10], PVT.[-11], PVT.[-12]
FROM
(SELECT BS.database_name AS DatabaseName,DATEDIFF(mm, @DataInicial, BS.backup_start_date) AS MonthsAgo,CONVERT(numeric(10, 1), AVG(BF.file_size / 1048576.0)) AS AvgSizeMB
FROM msdb.dbo.backupset as BS INNER JOIN msdb.dbo.backupfile AS BF ON BS.backup_set_id = BF.backup_set_id
WHERE NOT BS.database_name IN ('master', 'msdb', 'model', 'tempdb') AND BF.[file_type] = 'D' AND BS.backup_start_date BETWEEN DATEADD(yy, -1, @DataInicial) AND @DataInicial
GROUP BY BS.database_name,DATEDIFF(mm, @DataInicial, BS.backup_start_date)
) AS BCKSTAT
PIVOT (SUM(BCKSTAT.AvgSizeMB)
FOR BCKSTAT.MonthsAgo IN ([0], [-1], [-2], [-3], [-4], [-5], [-6], [-7], [-8], [-9], [-10], [-11], [-12])
) AS PVT
ORDER BY PVT.DatabaseName;

Com estes valores podemos também criar gráficos no Excel para uma melhor visualização.


Ozimar Henrique
http://ozimar.com/