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.

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

Column Тип данных Описание
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 (начиная с SQL Server 2019 (15.x))

Безопасность

Разрешения

Требуется разрешение VIEW SERVER STATE.

Разрешения для SQL Server 2022 и более поздних версий

Требуется разрешение 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.name), f.file_id);  

См. также

sys.master_files (Transact-SQL)
sys.database_files (Transact-SQL)