sys.dm_os_volume_stats (Transact-SQL)

S’applique à :SQL Server

Retourne des informations sur le volume du système d’exploitation (répertoire) sur lequel les bases de données et fichiers spécifiés sont stockés dans SQL Server. Utilisez cette fonction de gestion dynamique pour vérifier les attributs du lecteur de disque physique ou retourner les informations relatives à l'espace disque disponible pour le répertoire.

Conventions de la syntaxe Transact-SQL

Syntaxe

sys.dm_os_volume_stats (database_id, file_id)  

Arguments

database_id
ID de la base de données. database_id est de type int, sans valeur par défaut. Ne peut pas avoir la valeur NULL.

file_id
ID du fichier. file_id est int, sans valeur par défaut. Ne peut pas avoir la valeur NULL.

Table retournée

Colonne Type de données Description
database_id int ID de la base de données. Ne peut pas être null.
file_id int ID du fichier. Ne peut pas être null.
volume_mount_point nvarchar(512) Point de montage à la racine duquel le volume est attaché. Peut retourner une chaîne vide. Retourne null sur le système d’exploitation Linux.
volume_id nvarchar(512) Identificateur du volume du système d'exploitation. Peut retourner une chaîne vide. Retourne null sur le système d’exploitation Linux.
logical_volume_name nvarchar(512) Nom du volume logique. Peut retourner une chaîne vide. Retourne null sur le système d’exploitation Linux.
file_system_type nvarchar(512) Type du volume du système de fichiers (par exemple, NTFS, FAT, RAW). Peut retourner une chaîne vide. Retourne null sur le système d’exploitation Linux.
total_bytes bigint Taille totale (en octets) du volume. Ne peut pas être null.
available_bytes bigint Espace disponible sur le volume. Ne peut pas être null.
supports_compression tinyint Indique si le volume prend en charge la compression du système d'exploitation. Ne peut pas être null sur Windows et retourne null sur le système d’exploitation Linux.
supports_alternate_streams tinyint Indique si le volume prend en charge les flux de remplacement. Ne peut pas être null sur Windows et retourne null sur le système d’exploitation Linux.
supports_sparse_files tinyint Indique si le volume prend en charge les fichiers partiellement alloués. Ne peut pas être null sur Windows et retourne null sur le système d’exploitation Linux.
is_read_only tinyint Indique si le volume est actuellement marqué comme étant en lecture seule. Ne peut pas être null.
is_compressed tinyint Indique si ce volume est actuellement compressé. Ne peut pas être null sur Windows et retourne null sur le système d’exploitation Linux.
incurs_seek_penalty tinyint Indique le type de stockage prenant en charge ce volume. Les valeurs possibles sont les suivantes :

0 : Aucune pénalité de recherche sur ce volume, généralement lorsque le périphérique de stockage est PMM ou SSD

1 : Demander une pénalité sur ce volume, généralement lorsque le périphérique de stockage est HDD

2 : Le type de stockage ne peut pas être déterminé lorsque le volume se trouve sur un chemin UNC ou des partages montés

NULL : le type de stockage ne peut pas être déterminé sur le système d’exploitation Linux

S’applique à : SQL Server (à compter de SQL Server 2019 (15.x))

Sécurité

Autorisations

Nécessite l'autorisation VIEW SERVER STATE.

Autorisations pour SQL Server 2022 et versions ultérieures

Nécessite l’autorisation VIEW SERVER PERFORMANCE STATE sur le serveur.

Exemples

R. Retour de l'espace total et de l'espace disponible pour tous les fichiers de base de données

L’exemple suivant retourne l’espace total et l’espace disponible (en octets) pour tous les fichiers de base de données dans l’instance de 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. Retour de l'espace total et de l'espace disponible pour la base de donnée actuelle

L'exemple suivant retourne l'espace total et l'espace disponible (en octets) pour les fichiers de base de données dans la base de données actuelle.

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

Voir aussi

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