sys.dm_os_volume_stats (Transact-SQL)

Aplica-se a:SQL Server

Retorna informações sobre o volume do sistema operacional (diretório) no qual os bancos de dados e arquivos especificados são armazenados em SQL Server. Use essa função de gerenciamento dinâmico para verificar os atributos da unidade de disco físico ou retornar informações de espaço livre disponível sobre o diretório.

Convenções de sintaxe de Transact-SQL

Sintaxe

sys.dm_os_volume_stats (database_id, file_id)  

Argumentos

database_id
ID do banco de dados. database_id é int, sem padrão. Não pode ser NULL.

file_id
ID do arquivo. file_id é int, sem padrão. Não pode ser NULL.

Tabela retornada

Coluna Data type Descrição
database_id int ID do banco de dados. Não pode ser nulo.
file_id int ID do arquivo. Não pode ser nulo.
volume_mount_point nvarchar(512) Ponto de montagem no qual o volume está na raiz. Pode retornar uma cadeia de caracteres vazia. Retorna nulo no sistema operacional Linux.
volume_id nvarchar(512) ID de volume do sistema operacional. Pode retornar uma cadeia de caracteres vazia. Retorna nulo no sistema operacional Linux.
logical_volume_name nvarchar(512) Nome lógico do volume. Pode retornar uma cadeia de caracteres vazia. Retorna nulo no sistema operacional Linux.
file_system_type nvarchar(512) Tipo de volume de sistema de arquivo (por exemplo, NTFS, FAT, RAW). Pode retornar uma cadeia de caracteres vazia. Retorna nulo no sistema operacional Linux.
total_bytes bigint Tamanho total em bytes do volume. Não pode ser nulo.
available_bytes bigint Espaço em disco disponível no volume. Não pode ser nulo.
supports_compression tinyint Indica se o volume dá suporte a compressão do sistema operacional. Não pode ser nulo no Windows e retorna nulo no sistema operacional Linux.
supports_alternate_streams tinyint Indica se o volume dá suporte a fluxos alternativos. Não pode ser nulo no Windows e retorna nulo no sistema operacional Linux.
supports_sparse_files tinyint Indica se o volume dá suporte a arquivos esparsos. Não pode ser nulo no Windows e retorna nulo no sistema operacional Linux.
is_read_only tinyint Indica se o volume está marcado como somente leitura no momento. Não pode ser nulo.
is_compressed tinyint Indica se esse volume está compactado no momento. Não pode ser nulo no Windows e retorna nulo no sistema operacional Linux.
incurs_seek_penalty tinyint Indica o tipo de armazenamento que dá suporte a esse volume. Os valores possíveis são:

0: Nenhuma penalidade de busca nesse volume, normalmente quando o dispositivo de armazenamento é PMM ou SSD

1: Buscar penalidade nesse volume, normalmente quando o dispositivo de armazenamento é HDD

2: O tipo de armazenamento não pode ser determinado quando o volume está em um caminho UNC ou compartilhamentos montados

NULL: o tipo de armazenamento não pode ser determinado no sistema operacional Linux

Aplica-se a: SQL Server (começando com SQL Server 2019 (15.x))

Segurança

Permissões

Requer a permissão VIEW SERVER STATE.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Exemplos

a. Retornar espaço total e disponível para todos os arquivos de banco de dados

O exemplo a seguir retorna o espaço total e o espaço disponível (em bytes) para todos os arquivos de banco de dados na instância do 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. Retornar espaço total e disponível para o banco de dados atual

O exemplo a seguir retorna o espaço total e disponível (em bytes) para os arquivos de banco de dados no banco de dados atual.

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);  

Confira também

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