Колллеги, рад вас приветствовать.
Сегодня я хочу поделиться с вами способом анализа роста БД без каких либо специализированных программ.
Часто бывает так, что просьбы поступают крайне неожиданно и система просто не готова к ним. Тем не менее на вопрос «На сколько в год ростёт наша БД» мы можем ответить и без какой либо предварительной подготовки. В этом нам поможет системная таблица «backupset», в которой регистрируются все backup. Данная таблица содержит в себе все сведения о backup с момента установки сервера. На основе данной таблицы мы можем определить размер backup с помощью следующего запроса (SQL Server 2008 и выше):
SELECT[database_name] AS "Database", DATEPART(month,[backup_start_date]) AS "Month", AVG([backup_size]/1024/1024) AS "Backup Size MB", AVG([compressed_backup_size]/1024/1024) AS "Compressed Backup Size MB", AVG([backup_size]/[compressed_backup_size]) AS "Compression Ratio" FROM msdb.dbo.backupset WHERE [database_name] = N'DB_Name' AND [type] = 'D' AND DATEPART(yy,[backup_start_date]) > 2013 GROUP BY [database_name],DATEPART(mm,[backup_start_date]);
В результате выполнения данного запроса мы получим средний размер указанной БД по месяцам. Вместо «DB_Name» необходимо указать название вашей БД и вместо DATEPART(yy,[backup_start_date]) > 2013 указать интересующий вас временной период. Так же стоит учитывать степень сжатия. В моём примере выдаётся инфомрация за 2014 год. При необходимости можно переписать данный запрос, чтобы он возвращал информацию по всем БД.
В SQL Server 2005 ещё не было сжатия и данный скрипт будет выглядеть следующим образом:
SELECT[database_name] AS "Database", DATEPART(month,[backup_start_date]) AS "Month", AVG([backup_size]/1024/1024) AS "Backup Size MB" FROM msdb.dbo.backupset WHERE [database_name] = N'DB_Name' AND type = 'D' AND DATEPART(yy,[backup_start_date]) > 2013 GROUP BY [database_name],DATEPART(month,[backup_start_date]);