sys.dm_os_volume_stats (Transact-SQL)

適用対象:SQL Server

指定したデータベースとファイルがSQL Serverに格納されているオペレーティング システム ボリューム (ディレクトリ) に関する情報を返します。 この動的管理関数は、物理ディスク ドライブの属性を確認する場合や、ディレクトリの使用可能な空き容量に関する情報を取得する場合に使用します。

Transact-SQL 構文表記規則

構文

sys.dm_os_volume_stats (database_id, file_id)  

引数

database_id
データベースの ID です。 database_id int, 、既定値はありません。 Nll は指定できません。

file_id
ファイルの ID。 file_idint で、既定値はありません。 Nll は指定できません。

返されるテーブル

データの種類 説明
database_id int データベースの ID です。 null にすることはできません。
file_id int ファイルの ID。 null にすることはできません。
volume_mount_point nvarchar(512) ボリュームがルートとするマウント ポイント。 空の文字列を返すことができます。 Linux オペレーティング システムで null を返します。
volume_id nvarchar(512) オペレーティング システム ボリューム ID。 空の文字列を返すことができます。 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 (SQL Server 2019 (15.x) 以降)

セキュリティ

アクセス許可

VIEW SERVER STATE 権限が必要です。

SQL Server 2022 以降のアクセス許可

サーバーに対する 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.name), f.file_id);  

関連項目

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