sys.dm_os_volume_stats (Transact-SQL)

Aplica-se a: SQL Server

Devolve informações sobre o volume do sistema operativo (diretório) onde as bases de dados e ficheiros especificados são armazenados no SQL Server. Utilize esta função de gestão dinâmica para verificar os atributos da unidade de disco física ou para devolver a informação disponível sobre o diretório.

Transact-SQL convenções de sintaxe

Sintaxe

sys.dm_os_volume_stats (database_id , file_id)

Argumentos

database_id

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

file_id

ID do ficheiro. file_id é inteligência, sem padrão. Não pode ser NULL.

Tabela retornada

Column Tipo de dados Description
database_id int ID da base de dados. Não anulável.
file_id int ID do ficheiro. Não anulável.
volume_mount_point nvarchar(512) Ponto de montagem onde o volume está enraizado. Pode devolver uma cadeia vazia. Devolve o Null no Linux.
volume_id nvarchar(512) ID de volume do sistema operativo. Pode devolver uma cadeia vazia. Devolve o Null no Linux.
logical_volume_name nvarchar(512) Nome lógico do volume. Pode devolver uma cadeia vazia. Devolve o Null no Linux.
file_system_type nvarchar(512) Tipo de volume do sistema de ficheiros (por exemplo, NTFS, FAT, RAW). Pode devolver uma cadeia vazia. Devolve o Null no Linux.
total_bytes bigint Tamanho total em bytes do volume. Não anulável.
available_bytes bigint Espaço disponível disponível no volume. Não anulável.
supports_compression tinyint Indica se o volume suporta compressão do sistema operativo. Não é nullável no Windows, e devolve null no Linux.
supports_alternate_streams tinyint Indica se o volume suporta fluxos alternativos. Não é nullável no Windows, e devolve null no Linux.
supports_sparse_files tinyint Indica se o volume suporta ficheiros esparsos. Não é nullável no Windows, e devolve null no Linux.
is_read_only tinyint Indica se o volume está atualmente marcado como apenas leitura. Não anulável.
is_compressed tinyint Indica se este volume está atualmente comprimido. Não é nullável no Windows, e devolve null no Linux.
incurs_seek_penalty tinyint Indica o tipo de armazenamento que suporta este volume. Os valores possíveis são:

0: Não há penalização de procura neste volume, normalmente quando o dispositivo de armazenamento é PMM ou SSD

1: penalização de procura neste volume, normalmente quando o dispositivo de armazenamento é HDD

2: O tipo de armazenamento não pode ser determinado quando o volume está num caminho UNC ou em partilhas montadas

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

Aplica-se a: SQL Server 2019 (15.x) e versões posteriores

Permissions

O SQL Server 2019 (15.x) e versões anteriores exigem permissão de VIEW SERVER STATE no servidor.

O SQL Server 2022 (16.x) e versões posteriores exigem VIEW SERVER PERFORMANCE STATE permissão no servidor.

Examples

A. Devolver espaço total e espaço disponível para todos os ficheiros da base de dados

O exemplo seguinte devolve o espaço total e o espaço disponível (em bytes) para todos os ficheiros de base 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. Devolver espaço total e espaço disponível para a base de dados atual

O exemplo seguinte devolve o espaço total e o espaço disponível (em bytes) para os ficheiros da base de dados na base 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.file_id);