共用方式為


sys.dm_os_volume_stats (Transact-SQL)

適用於:SQL Server

傳回指定資料庫和檔案儲存在 SQL Server 之作業系統磁碟區 (directory) 的相關信息。 使用此動態管理功能來檢查實體磁碟驅動器的屬性,或傳回目錄的可用可用空間資訊。

Transact-SQL 語法慣例

語法

sys.dm_os_volume_stats (database_id , file_id)

引數

database_id

資料庫的標識碼。 database_id為 int,沒有預設值。 無法 NULL

file_id

檔案的標識碼。 file_id為 int,沒有預設值。 無法 NULL

傳回的數據表

數據類型 描述
database_id int 資料庫的標識碼。 不可為 Null。
file_id int 檔案的標識碼。 不可為 Null。
volume_mount_point nvarchar(512) 磁碟區根目錄的裝入點。 可以傳回空字串。 在 Linux 上傳回 Null。
volume_id nvarchar(512) 操作系統磁碟區標識碼。 可以傳回空字串。 在 Linux 上傳回 Null。
logical_volume_name nvarchar(512) 邏輯磁碟區名稱。 可以傳回空字串。 在 Linux 上傳回 Null。
file_system_type nvarchar(512) 檔系統磁碟區的類型(例如NTFS、FAT、RAW)。 可以傳回空字串。 在 Linux 上傳回 Null。
total_bytes bigint 磁碟區位元組的總大小。 不可為 Null。
available_bytes bigint 磁碟區上可用的可用空間。 不可為 Null。
supports_compression tinyint 指出磁碟區是否支援作業系統壓縮。 在 Windows 上不可為 Null,並在 Linux 上傳回 Null。
supports_alternate_streams tinyint 指出磁碟區是否支援替代數據流。 在 Windows 上不可為 Null,並在 Linux 上傳回 Null。
supports_sparse_files tinyint 指出磁碟區是否支援疏鬆檔案。 在 Windows 上不可為 Null,並在 Linux 上傳回 Null。
is_read_only tinyint 指出磁碟區目前是否標示為唯讀。 不可為 Null。
is_compressed tinyint 指出此磁碟區目前是否已壓縮。 在 Windows 上不可為 Null,並在 Linux 上傳回 Null。
incurs_seek_penalty tinyint 指出支援此磁碟區的記憶體類型。 可能的值包括:

0:通常當存儲設備為 PMM 或 SSD 時,此磁碟區不會受到任何懲罰

1:通常當存儲設備是 HDD 時,在此磁碟區上尋找懲罰

2:當磁碟區位於 UNC 路徑或掛接的共用時,無法判斷儲存類型

NULL:無法在Linux作業系統上判斷記憶體類型

適用於: SQL Server 2019 (15.x) 和更新版本

權限

SQL Server 2019 (15.x) 和舊版需要伺服器上 VIEW SERVER STATE 許可權。

SQL Server 2022 (16.x) 和更新版本需要伺服器上 VIEW SERVER PERFORMANCE STATE 許可權。

範例

A. 傳回所有資料庫檔案的總空間和可用空間

下列範例會傳回 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. 傳回目前資料庫的總空間和可用空間

下列範例會傳回目前資料庫中資料庫檔案的總空間和可用空間(以位元組為單位)。

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