次の方法で共有


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, 、既定値はありません。 NULLできません。

file_id

ファイルの ID。 file_idint で、既定値はありません。 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);