powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собирать информацию о динамике роста БД Microsoft SQL Server?
11 сообщений из 11, страница 1 из 1
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759247
squidw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каким образом можно собрать информацию о росте файлов БД? Рост mdf, ldf файлов либо bak за каждый месяц для отслеживания динамики роста?
Насколько я понимаю SQL не хранит такой информации, нежен скрипт для таких целей, который необходимо через job кидать или все же есть штатное средство какое-нибудь? Как эту информацию вывести в дальнейшем куда-нибудь за пределы SQL сервера, например, текстовый файл + отправка в почту или возможно даже на zabbix как-то отправить?
Находил на просторах http://www.sql.ru/forum/688383/dinamika-rosta-bazy-dannyh-kak-otsledit-sprognozirovat но тут вопрос, а есть ли более приспособленный вариант под текущий скрипт:
Код: sql
1.
2.
3.
4.
SELECT backup_size, backup_start_date
FROM msdb.dbo.backupset
WHERE database_name='MyDbName' and type='D'
ORDER BY backup_start_date


Здесь проблема нужно знать какие БД есть чтобы в скрипте указать руками вместо MyDbName. Есть ли возможность использовать какую-то системную команду SQL, которая обнаружит все БД в сервере и подсчитает их текущий объем либо историю по объему? Еще одна проблема на что ориентируется SQL при выполнении данного скрипта? У меня например стоит очистка бэкапов и очистка истории в плане обслуживания для каждой БД.
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759253
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно типа так:

-- Общий размер баз данных
SELECT База = D.name,
SUM(CASE F.type
WHEN 0 THEN CAST(F.[size] AS float) * 8 /1024 / 1024
ELSE 0
END) AS [Размер базы в GB],
SUM(CASE F.type
WHEN 1 THEN CAST(F.[size] AS float) * 8 /1024 / 1024
ELSE 0
END) AS [Размер лога в GB]
FROM sys.databases D
INNER JOIN sys.master_files F ON D.database_id =f.database_id
WHERE D.database_id>4
AND D.name LIKE '%'
GROUP BY D.name
ORDER BY 1, 2
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759255
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759259
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squidw,

можно настроить сервис "сбор информации" на SQL2012+.
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759321
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squidw Еще одна проблема на что ориентируется SQL при выполнении данного скрипта? У меня например стоит очистка бэкапов и очистка истории в плане обслуживания для каждой БД.

попробуйте этот скрипт


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
select 
		bs.database_name [Database]
		, bs.recovery_model [Recovery]
		, convert(datetime,convert(varchar(20),bs.backup_start_date,106)) [BackupDate]
		, convert(numeric(10,2),sum(bf.file_size/1024/1024)) [DBSizeMB]
		, (select convert(numeric(20,2),sum(bf2.file_size)/1024/1024) from msdb..backupfile bf2 where bf2.backup_set_id=bs.backup_set_id and bf2.file_type='D') [DataFilesMB]
		, (select convert(numeric(20,2),sum(bf2.file_size)/1024/1024) from msdb..backupfile bf2 where bf2.backup_set_id=bs.backup_set_id and bf2.file_type='L') [LogFilesMB]
		, convert(numeric(20,2),bs.backup_size/1024/1024) [BackupSizeMB]
		, convert(numeric(20,2),bs.compressed_backup_size/1024/1024) [BackupCompressedMB]
from  msdb.dbo.backupset bs
	join msdb.dbo.backupfile bf on bs.backup_set_id=bf.backup_set_id
where 
 --bs.database_name = '[dbname]' and 
  bs.type='D'
group by
	bs.backup_start_date
	,bs.server_name
	,bs.backup_set_id
	,bs.database_name
	,bs.recovery_model
	,bs.backup_size
	,bs.compressed_backup_size
order by 
	bs.backup_set_id asc




информация берется из истории бекапов
чем ее больше, тем больше у вас данных о базе
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759402
squidw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,
авторинформация берется из истории бекапов
чем ее больше, тем больше у вас данных о базе
То есть лучше увеличить или вообще убрать из планов обслуживания "очистка истории" для наиболее полной информации по данному скрипту?
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759405
squidw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

авторможно настроить сервис "сбор информации" на SQL2012+.
Речь идет о MS SQL Server Analysis Services?
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759422
squidw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,
автор http://www.sqlnuggets.com/blog/extended-event-track-data-log-file-size-changes/

по данному примеру запрос выполняется, но вроде как ожидается файл в директории C:\ExtendedEvent\DBSizeTracking.xel чего не происходит на выходе, при изменении на C:\ExtendedEvent\DBSizeTracking.txt та же ситуация. Кроме того при повторном выполнении необходимо менять значение "DB Size Tracking" на скажем "DB Size Tracking1" иначе ругается что такое выражение уже существует:
Код: sql
1.
2.
Сообщение 25631, уровень 16, состояние 1, строка 2
Объект сеанс событий, "DB Size Tracking", уже существует. Задайте уникальное имя сеанса событий.


Не практично. Более реально применить то, что написали в 21784617 и 21784752 .
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759435
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squidwНе практично.Вы бы хоть для начала почитали что такое Extended Events и как с ними работать...
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759444
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squidwkomrad,
авторинформация берется из истории бекапов
чем ее больше, тем больше у вас данных о базе
То есть лучше увеличить или вообще убрать из планов обслуживания "очистка истории" для наиболее полной информации по данному скрипту?
можно держать необходимую глубину данных
для некоторых это 3-6 месяцев, для некоторых это год, а некоторые вообще не чистят историю )

можно настроить отдельный джоб с вызовом sp_delete_backuphistory , запускать раз в неделю и передавать ему
Код: sql
1.
getdate()-180
...
Рейтинг: 0 / 0
Как собирать информацию о динамике роста БД Microsoft SQL Server?
    #39759453
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
squidwВладислав Колосов,

авторможно настроить сервис "сбор информации" на SQL2012+.
Речь идет о MS SQL Server Analysis Services?

В SSMS в обозревателе объектов Сбор данных. Там есть отчет о приросте базы, в том числе.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как собирать информацию о динамике роста БД Microsoft SQL Server?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]