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