Как узнать % оставшегося места на SQL сервере в SSMS 20.2?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как узнать % оставшегося места на SQL сервере в SSMS 20.2?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #35352
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        В ms sql server managment studio 20.2 есть ли возможность посмотреть процент оставшегося дискового пространства конкретного sql сервера? интересует как с помощью команд так и штатные отчёты

      • #35353
        bot_avaOdin — Одинэсник
        Участник

          В 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/

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С