sys.dm_os_volume_stats (Transact-SQL)

Gilt für:SQL Server

Gibt Informationen über das Betriebssystemvolumen (Verzeichnis) zurück, auf dem die angegebenen Datenbanken und Dateien im SQL Server gespeichert sind. Verwenden Sie diese dynamische Managementfunktion, um die Attribute des physischen Festplattenlaufwerks zu überprüfen oder verfügbaren freien Speicherinformationen über 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 NULL sein.

file_id

ID der Datei. file_id ist vom Datentyp intund hat keinen Standardwert. Kann nicht NULL sein.

Zurückgegebene Tabelle

Column Datentyp Description
database_id int Die ID der Datenbank. Nicht nullfähig.
file_id int ID der Datei. Nicht nullfähig.
volume_mount_point nvarchar(512) Mount-Punkt, an dem das Volumen gerootet ist. Kann eine leere Zeichenkette zurückgeben. Gibt unter Linux null zurück.
volume_id nvarchar(512) Betriebssystem-Volume-ID. Kann eine leere Zeichenkette zurückgeben. Gibt unter Linux null zurück.
logical_volume_name nvarchar(512) Logischer Bandname. Kann eine leere Zeichenkette zurückgeben. Gibt unter Linux null zurück.
file_system_type nvarchar(512) Typ des Dateisystemvolumens (zum Beispiel NTFS, FAT, RAW). Kann eine leere Zeichenkette zurückgeben. Gibt unter Linux null zurück.
total_bytes bigint Gesamtgröße in Bytes des Volumens. Nicht nullfähig.
available_bytes bigint Freier Speicherplatz auf dem Band. Nicht nullfähig.
supports_compression tinyint Gibt an, ob das Volumen Betriebssystemkompression unterstützt. Unter Windows ist es nicht nullierbar und gibt unter Linux null zurück.
supports_alternate_streams tinyint Zeigt an, ob das Volumen alternative Streams unterstützt. Unter Windows ist es nicht nullierbar und gibt unter Linux null zurück.
supports_sparse_files tinyint Zeigt an, ob das Volumen Sparse-Dateien unterstützt. Unter Windows ist es nicht nullierbar und gibt unter Linux null zurück.
is_read_only tinyint Zeigt an, ob der Band derzeit als nur lesegerecht markiert ist. Nicht nullfähig.
is_compressed tinyint Gibt an, ob dieser Band derzeit komprimiert ist. Unter Windows ist es nicht nullierbar und gibt unter Linux null zurück.
incurs_seek_penalty tinyint Gibt die Art des Speichers an, der dieses Volumen unterstützt. Mögliche Werte:

0: Keine Suchstrafe auf diesem Volume, typischerweise wenn das Speichergerät PMM oder SSD ist

1: Suche Strafe auf diesem Volume, typischerweise wenn das Speichermedium eine HDD ist

2: Der Speichertyp kann nicht bestimmt werden, wenn das Volumen auf einem UNC-Pfad oder auf montierten Sharen liegt

NULL: Der Speichertyp kann auf dem Linux-Betriebssystem nicht bestimmt werden

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

Erlaubnisse

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

SQL Server 2022 (16.x) und höhere Versionen erfordern VIEW SERVER PERFORMANCE STATE berechtigungen auf dem Server.

Examples

A. Geben Sie Gesamtspeicherplatz und verfügbaren Speicherplatz für alle Datenbankdateien zurück

Das folgende Beispiel liefert den gesamten Speicherplatz und verfügbaren Speicherplatz (in Bytes) für alle Datenbankdateien in der SQL Server-Instanz.

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. Geben Sie den Gesamtspeicher und verfügbaren Speicherplatz für die aktuelle Datenbank zurück

Das folgende Beispiel liefert den Gesamtspeicherplatz und verfügbaren Speicherplatz (in Bytes) für die Datenbankdateien in der aktuellen Datenbank.

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