База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как узнать % оставшегося места на SQL сервере в SSMS 20.2?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 недели назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
27 декабря 2025 в 16:00 #35352
В ms sql server managment studio 20.2 есть ли возможность посмотреть процент оставшегося дискового пространства конкретного sql сервера? интересует как с помощью команд так и штатные отчёты
-
27 декабря 2025 в 16:00 #35353
В MS SQL Server Management Studio (SSMS) 20.2 есть несколько способов узнать процент оставшегося дискового пространства на сервере — как с помощью T-SQL команд, так и через штатные отчёты.
—
### 1. Через T-SQL запросы
SQL Server не хранит напрямую информацию о свободном месте на дисках ОС, но можно получить её с помощью расширенной функции `xp_fixeddrives` или через динамические представления.
#### Пример 1. Использование `xp_fixeddrives`
EXEC xp_fixeddrives;
Выводит список дисков с количеством свободного места в мегабайтах.
Чтобы получить процент свободного места, нужно дополнительно узнать общий размер диска. Это можно сделать, например, через PowerShell или WMI, но в чистом T-SQL это не реализовано.
#### Пример 2. Использование расширенного запроса с WMI через SQL Server
DECLARE @DriveSpace TABLE ( Drive VARCHAR(2), FreeSpaceMB INT, TotalSpaceMB INT, FreeSpacePercent DECIMAL(5,2) ); INSERT INTO @DriveSpace (Drive, FreeSpaceMB, TotalSpaceMB, FreeSpacePercent) EXEC xp_cmdshell 'wmic logicaldisk get name,freespace,size /format:csv'; -- Обработка результата xp_cmdshell требует дополнительной обработки, поэтому проще использовать PowerShell или внешние скрипты. SELECT * FROM @DriveSpace;Этот способ сложнее и требует разрешений на выполнение `xp_cmdshell`.
—
### 2. Использование штатных отчётов SSMS
В SSMS есть встроенные отчёты, которые показывают информацию о дисковом пространстве:
— В Object Explorer щёлкните правой кнопкой по серверу.
— Выберите **Reports** → **Standard Reports** → **Disk Usage** или **Disk Usage by Top Tables**.Эти отчёты показывают использование пространства баз данных и файлов, но не всегда показывают свободное место на уровне диска ОС.
—
### 3. Использование системных представлений для анализа файлов баз данных
Можно узнать размер файлов баз данных и свободное место внутри них:
SELECT db.name AS DatabaseName, mf.name AS LogicalName, mf.physical_name, mf.size / 128.0 AS SizeMB, mf.size / 128.0 - CAST(FILEPROPERTY(mf.name, 'SpaceUsed') AS INT) / 128.0 AS FreeSpaceMB, ((mf.size / 128.0 - CAST(FILEPROPERTY(mf.name, 'SpaceUsed') AS INT) / 128.0) * 100.0) / (mf.size / 128.0) AS FreeSpacePercent FROM sys.master_files mf INNER JOIN sys.databases db ON db.database_id = mf.database_id WHERE mf.type_desc = 'ROWS' ORDER BY db.name;Этот запрос покажет свободное место внутри файлов баз данных, но не на уровне диска.
—
### Итог
— **Для оценки свободного места на дисках ОС**:
Используйте `EXEC xp_fixeddrives` для быстрого просмотра свободного места в МБ на каждом диске.— **Для анализа использования пространства баз данных**:
Используйте запрос к `sys.master_files` и `FILEPROPERTY` (пример выше).— **Для визуального контроля**:
Используйте штатные отчёты SSMS → Reports → Standard Reports → Disk Usage.—
Рекомендую посмотреть здесь:
https://winitpro.ru/index.php/2020/01/21/sql-server-diagnostika-proizvoditelnosti/
https://infostart.ru/1c/articles/1128594/
https://infostart.ru/1c/articles/1059227/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.