Freigeben über


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 werden. 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. Kann nicht NULLwerden.

file_id

Die ID der Datei. file_id ist vom Datentyp intund hat keinen Standardwert. Kann nicht NULLwerden.

Zurückgegebene Tabelle

Spalte Datentyp Beschreibung
database_id int Die ID der Datenbank. Lässt keine Nullwerte zu.
file_id int Die ID der Datei. Lässt keine Nullwerte zu.
volume_mount_point nvarchar(512) Der Einbindungspunkt, der das Stammverzeichnis des Volumes darstellt. Kann eine leere Zeichenfolge zurückgeben. Gibt NULL unter Linux zurück.
volume_id nvarchar(512) Die ID des Betriebssystemvolumes. Kann eine leere Zeichenfolge zurückgeben. Gibt NULL unter Linux zurück.
logical_volume_name nvarchar(512) Der Name des logischen Volumes. Kann eine leere Zeichenfolge zurückgeben. Gibt NULL unter Linux 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 zurück.
total_bytes bigint Die Gesamtgröße des Volumes in Bytes. Lässt keine Nullwerte zu.
available_bytes bigint Der verfügbare freie Speicherplatz auf dem Volume. Lässt keine Nullwerte zu.
supports_compression tinyint Gibt an, ob das Volume eine Komprimierung durch das Betriebssystem unterstützt. Lässt unter Windows nicht null zu und gibt null unter Linux zurück.
supports_alternate_streams tinyint Gibt an, ob das Volume alternative Datenströme unterstützt. Lässt unter Windows nicht null zu und gibt null unter Linux zurück.
supports_sparse_files tinyint Gibt an, ob das Volume Sparsedateien unterstützt. Lässt unter Windows nicht null zu und gibt null unter Linux zurück.
is_read_only tinyint Gibt an, ob das Volume derzeit als schreibgeschützt gekennzeichnet ist. Lässt keine Nullwerte zu.
is_compressed tinyint Gibt an, ob dieses Volume derzeit komprimiert ist. Lässt unter Windows nicht null zu und gibt null unter Linux zurück.
incurs_seek_penalty tinyint Gibt den Typ des Speichers an, der dieses Volume unterstützt. Dabei sind folgende Werte möglich:

0: Keine Strafe auf diesem Volume, in der Regel, wenn das Speichergerät PMM oder SSD ist

1: Suchen Sie auf diesem Volume Nach Strafe, in der Regel, wenn das Speichergerät HDD ist

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

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

Gilt für: SQL Server 2019 (15.x) und höhere Versionen

Berechtigungen

SQL Server 2019 (15.x) und frühere Versionen erfordern VIEW SERVER STATE Berechtigung auf dem Server.

SQL Server 2022 (16.x) und höhere Versionen erfordern 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 Gesamtspeicher und der verfügbare Speicherplatz (in Byte) für alle Datenbankdateien in der SQL Server-Instanz 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.file_id);