適用対象:SQL Server
指定したデータベースとファイルが SQL Server に格納されているオペレーティング システム ボリューム (ディレクトリ) に関する情報を返します。 この動的管理関数は、物理ディスク ドライブの属性を確認する場合や、ディレクトリの使用可能な空き容量に関する情報を取得する場合に使用します。
構文
sys.dm_os_volume_stats (database_id , file_id)
引数
database_id
データベースの ID です。
database_id は int, 、既定値はありません。
NULL
できません。
file_id
ファイルの ID。
file_id は int で、既定値はありません。
NULL
できません。
返されるテーブル
コラム | データ型 | 形容 |
---|---|---|
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 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);