Поделиться через


sys.dm_os_volume_stats (Transact-SQL)

Область применения:SQL Server

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

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

Синтаксис

sys.dm_os_volume_stats (database_id , file_id)

Аргументы

database_id

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

file_id

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

Возвращаемая таблица

Столбец Тип данных Описание
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 Указывает, поддерживает ли том сжатие на уровне операционной системы. Не допускает значение NULL в Windows и возвращает значение NULL в Linux.
supports_alternate_streams tinyint Указывает, поддерживает ли том дополнительные потоки. Не допускает значение NULL в Windows и возвращает значение NULL в Linux.
supports_sparse_files tinyint Указывает, поддерживает ли том разреженные файлы. Не допускает значение NULL в Windows и возвращает значение NULL в Linux.
is_read_only tinyint Указывает, помечен ли том как доступный только для чтения. Не допускается значение NULL.
is_compressed tinyint Указывает, сжат ли том в настоящее время. Не допускает значение NULL в Windows и возвращает значение NULL в Linux.
incurs_seek_penalty tinyint Указывает тип хранилища, поддерживающего этот том. Возможны следующие значения:

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

1. Поиск штрафа на этом томе, как правило, когда устройство хранения является HDD

2. Тип хранилища не может быть определен, если том находится на пути UNC или подключенных общих ресурсах

NULL: тип хранилища не может быть определен в операционной системе Linux

применимо к следующим версиям: SQL Server 2019 (15.x) и более поздних версий

Разрешения

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

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

Примеры

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

В следующем примере возвращается общее пространство и доступное пространство (в байтах) для всех файлов базы данных в экземпляре 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);