sys.dm_os_volume_stats (Transact-SQL)

Применимо к:SQL Server

Возвращает информацию о томе операционной системы (каталоге), на котором хранятся указанные базы данных и файлы в SQL Server. Используйте эту функцию динамического управления, чтобы проверить атрибуты физического дисковода или вернуть доступную информацию о свободном пространстве в каталоге.

Соглашения о синтаксисе Transact-SQL

Syntax

sys.dm_os_volume_stats (database_id , file_id)

Аргументы

database_id

Идентификатор базы данных. Аргумент database_id имеет тип int и не имеет значения по умолчанию. Не может быть NULL.

file_id

Идентификатор файла. file_id не используется без значения по умолчанию. Не может быть NULL.

Таблица возвращена

колонна Тип данных Description
database_id int Идентификатор базы данных. Не допускает значения NULL.
file_id int Идентификатор файла. Не допускает значения NULL.
volume_mount_point nvarchar(512) Точка крепления, в которую корнётся громкость. Может вернуть пустую строку. Возвращает null на Linux.
volume_id nvarchar(512) Идентификатор тома операционной системы. Может вернуть пустую строку. Возвращает null на Linux.
logical_volume_name nvarchar(512) Логичное название тома. Может вернуть пустую строку. Возвращает null на Linux.
file_system_type nvarchar(512) Тип тома файловой системы (например, NTFS, FAT, RAW). Может вернуть пустую строку. Возвращает null на Linux.
total_bytes bigint Общий размер в байтах тома. Не допускает значения NULL.
available_bytes bigint Свободное место на томе. Не допускает значения NULL.
supports_compression tinyint Указывает, поддерживает ли том сжатие операционной системы. В Windows он не обнуливает и возвращает null на Linux.
supports_alternate_streams tinyint Показывает, поддерживает ли объем альтернативные потоки. В Windows он не обнуливает и возвращает null на Linux.
supports_sparse_files tinyint Указывает, поддерживает ли том разредённые файлы. В Windows он не обнуливает и возвращает null на Linux.
is_read_only tinyint Указывает, помечен ли том как только для чтения. Не допускает значения NULL.
is_compressed tinyint Указывает, сжат ли этот объём в данный момент. В Windows он не обнуливает и возвращает null на Linux.
incurs_seek_penalty tinyint Указывает тип хранилища, поддерживающего этот объём. Возможны следующие значения:

0: Нет штрафа за поиск на этом томе, обычно если устройство хранения — PMM или SSD

1: Искать штраф на этом томе, обычно если устройство хранения — HDD

2: Тип хранилища нельзя определить, когда объем находится на UNC пути или на монтированных shares

NULL: Тип хранилища нельзя определить на операционной системе Linux

Область применения: SQL Server 2019 (15.x) и более поздних версий

Permissions

ДЛЯ SQL Server 2019 (15.x) и более ранних версий требуется VIEW SERVER STATE разрешение на сервере.

SQL Server 2022 (16.x) и более поздние версии требуют наличия разрешения VIEW SERVER PERFORMANCE STATE на сервере.

Examples

А. Вернуть общее пространство и доступное пространство для всех файлов базы данных

Следующий пример возвращает общее пространство и доступное пространство (в байтах) для всех файлов базы данных в экземпляре SQL Server.

SELECT f.database_id,
       f.file_id,
       volume_mount_point,
       total_bytes,
       available_bytes
FROM sys.master_files AS f
CROSS APPLY sys.dm_os_volume_stats(f.database_id, f.file_id);

B. Вернуть общее пространство и доступное пространство для текущей базы данных

Следующий пример возвращает общее пространство и доступное пространство (в байтах) для файлов базы данных в текущей базе данных.

SELECT database_id,
       f.file_id,
       volume_mount_point,
       total_bytes,
       available_bytes
FROM sys.database_files AS f
CROSS APPLY sys.dm_os_volume_stats(DB_ID(), f.file_id);