sys.dm_os_volume_stats (Transact-SQL)

Gilt für:SQL Server

Gibt Informationen zum Betriebssystemvolume (Verzeichnis) zurück, auf dem die angegebenen Datenbanken und Dateien in SQL Server gespeichert sind. Verwenden Sie diese dynamische Verwaltungsfunktion, um die Attribute des physischen Datenträgers zu überprüfen oder um Informationen zum verfügbaren freien Speicherplatz für das Verzeichnis zurückzugeben.

Transact-SQL-Syntaxkonventionen

Syntax

sys.dm_os_volume_stats (database_id, file_id)  

Argumente

database_id
Die ID der Datenbank. database_id ist vom Datentyp intund hat keinen Standardwert. Lässt keine NULL-Werte zu.

file_id
Die ID der Datei. file_id ist vom Datentyp intund hat keinen Standardwert. Lässt keine NULL-Werte zu.

Zurückgegebene Tabelle

Spalte Datentyp Beschreibung
database_id int Die ID der Datenbank. Darf nicht NULL sein.
file_id int Die ID der Datei. Darf nicht NULL sein.
volume_mount_point nvarchar(512) Der Einbindungspunkt, der das Stammverzeichnis des Volumes darstellt. Kann eine leere Zeichenfolge zurückgeben. Gibt null unter Linux-Betriebssystem zurück.
volume_id nvarchar(512) Die ID des Betriebssystemvolumes. Kann eine leere Zeichenfolge zurückgeben. Gibt null unter Linux-Betriebssystem zurück.
logical_volume_name nvarchar(512) Der Name des logischen Volumes. Kann eine leere Zeichenfolge zurückgeben. Gibt null unter Linux-Betriebssystem zurück.
file_system_type nvarchar(512) Der Typ des Dateisystemvolumes (z. B. NTFS, FAT, RAW). Kann eine leere Zeichenfolge zurückgeben. Gibt null unter Linux-Betriebssystem zurück.
total_bytes bigint Die Gesamtgröße des Volumes in Bytes. Darf nicht NULL sein.
available_bytes bigint Der verfügbare freie Speicherplatz auf dem Volume. Darf nicht NULL sein.
supports_compression tinyint Gibt an, ob das Volume eine Komprimierung durch das Betriebssystem unterstützt. Kann unter Windows nicht NULL sein und gibt null unter Linux-Betriebssystem zurück.
supports_alternate_streams tinyint Gibt an, ob das Volume alternative Datenströme unterstützt. Kann unter Windows nicht NULL sein und gibt null unter Linux-Betriebssystem zurück.
supports_sparse_files tinyint Gibt an, ob das Volume Sparsedateien unterstützt. Kann unter Windows nicht NULL sein und gibt null unter Linux-Betriebssystem zurück.
is_read_only tinyint Gibt an, ob das Volume derzeit als schreibgeschützt gekennzeichnet ist. Darf nicht NULL sein.
is_compressed tinyint Gibt an, ob dieses Volume derzeit komprimiert ist. Kann unter Windows nicht NULL sein und gibt null unter Linux-Betriebssystem zurück.
incurs_seek_penalty tinyint Gibt den Typ des Speichers an, der dieses Volume unterstützt. Mögliche Werte:

0: Keine Suchstrafe für dieses Volume, in der Regel, wenn das Speichergerät PMM oder SSD ist

1: Fordern Sie eine Strafe für dieses Volume an, in der Regel, wenn das Speichergerät hdd ist

2: Der Speichertyp kann nicht bestimmt werden, wenn sich das Volume in einem UNC-Pfad oder eingebundenen Freigaben befindet.

NULL: Der Speichertyp kann unter Linux-Betriebssystem nicht bestimmt werden.

Gilt für: SQL Server (ab SQL Server 2019 (15.x))

Sicherheit

Berechtigungen

Erfordert die VIEW SERVER STATE-Berechtigung.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Beispiele

A. Zurückgeben des gesamten und des verfügbaren freien Speicherplatzes für alle Datenbankdateien

Im folgenden Beispiel wird der gesamt verfügbare Speicherplatz (in Bytes) für alle Datenbankdateien in der Instanz von SQL Server zurückgegeben.

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. Zurückgeben des gesamten und des verfügbaren freien Speicherplatzes für die aktuelle Datenbank

Im folgenden Beispiel werden der gesamte Speicherplatz und der verfügbare freie Speicherplatz (in Bytes) für die Datenbankdateien der aktuellen Datenbank zurückgegeben.

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

Weitere Informationen

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