適用対象:SQL Server
指定されたデータベースやファイルがSQL Serverに保存されているオペレーティングシステムのボリューム(ディレクトリ)に関する情報を返します。 この動的管理機能を使って、物理ディスクドライブの属性を確認したり、ディレクトリの空き容量情報を返したりします。
Syntax
sys.dm_os_volume_stats (database_id , file_id)
引数
database_id
データベースの ID です。
database_id は int, 、既定値はありません。
NULL にすることはあり得ません。
file_id
ファイルの ID。
file_id は int で、既定値はありません。
NULL にすることはあり得ません。
返されるテーブル
| Column | データの種類 | Description |
|---|---|---|
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ではnullableではなく、Linuxではnullを返します。 |
supports_alternate_streams |
tinyint | ボリュームが代替ストリームをサポートしているかどうかを示します。 Windowsではnullableではなく、Linuxではnullを返します。 |
supports_sparse_files |
tinyint | ボリュームがスパースファイルをサポートしているかどうかを示します。 Windowsではnullableではなく、Linuxではnullを返します。 |
is_read_only |
tinyint | ボリュームが現在読み取り専用とマークされているかどうかを示します。 NULL 値は許可されません。 |
is_compressed |
tinyint | このボリュームが現在圧縮されているかどうかを示します。 Windowsではnullableではなく、Linuxではnullを返します。 |
incurs_seek_penalty |
tinyint | このボリュームをサポートするストレージの種類を示します。 使用可能な値は次のとおりです。0: このボリュームではシークペナルティはありません。通常、ストレージデバイスがPMMやSSDの場合です1このボリュームに対してペナルティをシークします。通常はストレージデバイスがHDDの場合です2:ストレージの種類は、ボリュームがUNCパス上またはマウント共有されている場合に判別できませんNULL:ストレージの種類はLinuxオペレーティングシステムでは特定できません適用対象: SQL Server 2019 (15.x) 以降のバージョン |
Permissions
SQL Server 2019 (15.x) 以前のバージョンでは、サーバーに対する VIEW SERVER STATE アクセス許可が必要です。
SQL Server 2022 (16.x) 以降のバージョンでは、サーバーに対する VIEW SERVER PERFORMANCE STATE アクセス許可が必要です。
Examples
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);