sys.database_files (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

データベース自体に保存されているデータベースのファイルごとに 1 行のデータを格納します。 これはデータベース単位のビューです。

列名 データ型 説明
file_id int データベース内のファイルの ID。
file_guid uniqueidentifier ファイルの GUID。

NULL = データベースが以前のバージョンの SQL Server からアップグレードされました (SQL Server 2005 以前のバージョンに対して有効)。
type tinyint ファイルの種類です。

0 = 行
1 = ログ
2 = FILESTREAM
3 = 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
4 = フルテキスト
type_desc nvarchar(60) ファイルの種類の説明:

ROWS
LOG
FILESTREAM
FULLTEXT
data_space_id int 値には、0 または 0 より大きい値を指定できます。 値は 0 データベース ログ ファイルを表し、0 より大きい値は、このデータ ファイルが格納されているファイル グループの ID を表します。
name sysname データベース内のファイルの論理名。
physical_name nvarchar(260) オペレーティング システムのファイル名。 データベースが可用性グループ の読み取り可能なセカンダリ レプリカによってホストされている場合は、 physical_name プライマリ レプリカ データベースのファイルの場所を示します。 読み取り可能なセカンダリ データベースの正しいファイルの場所については、sys.sysaltfiles を照会してください。
state tinyint ファイルの状態です。

0 = ONLINE
1 = RESTORING
2 = RECOVERING
3 = RECOVERY_PENDING
4 = SUSPECT
5 = 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
6 = OFFLINE
7 = DEFUNCT
state_desc nvarchar(60) ファイルの状態の説明です。

ONLINE
RESTORING
RECOVERING
RECOVERY_PENDING
SUSPECT
OFFLINE
DEFUNCT
詳しくは、「ファイルの状態」をご覧ください。
size int ファイルの現在のサイズ (8 KB ページ単位)。

0 = 適用なし
データベース スナップショットの場合、size は、スナップショットがファイルに対して使用する中で最大の領域を表します。
FILESTREAM ファイル グループ コンテナーの場合、サイズにはコンテナーの現在使用されているサイズが反映されます。
max_size int 最大ファイル サイズ (8 KB ページ単位)。

0 = 拡張は許可されません。
-1 = ディスクがいっぱいになるまでファイルを拡張できます。
268435456 = ログ ファイルの最大サイズは 2 TB (テラバイト)まで拡大できます。
FILESTREAM ファイル グループ コンテナーの場合、 max_size コンテナーの最大サイズが反映されます。
ログ ファイルの最大サイズに関する無制限のログ ファイル サイズ レポート -1 を使用してアップグレードされたデータベース。
Azure SQL Database では、すべてのデータ ファイルの値の max_size 合計がデータベースの最大データ サイズより小さい場合があります。 DATABASEPROPERTYEX(DB_NAME(), 'MaxSizeInBytes') を使って、最大データ サイズを決定します。
growth int 0 = ファイルのサイズは固定されており、拡張することはできません。

0 より大きい = ファイルは自動的に拡張されます。
= 0 の場合is_percent_growth、増加の増分は 8 KB (キロバイト) ページの単位で、最も近い 64 KB (キロバイト)に丸められます。
= 1 の場合 is_percent_growth 、増加増分は整数パーセントで表されます。
is_media_read_only bit 1 = ファイルは読み取り専用メディア上にあります。

0 = ファイルは読み取り/書き込みメディア上にあります。
is_read_only bit 1 = ファイルは読み取り専用としてマークされています。

0 = ファイルは読み取り/書き込み用としてマークされています。
is_sparse bit 1 = ファイルはスパース ファイルです。

0 = ファイルはスパース ファイルではありません。
詳しくは、「データベース スナップショットのスパース ファイルのサイズを表示する方法 (Transact-SQL)」を参照してください。
is_percent_growth bit 1 = ファイルの拡張はパーセンテージで表されます。

0 = 絶対拡張サイズ (ページ単位)。
is_name_reserved bit 1 = ドロップされたファイル名 (name または physical_name) は、次のログ バックアップの後でのみ再利用できます。 ファイルがデータベースから削除されると、ファイルの論理名は次回のログ バックアップまで予約された状態になります。 この列は完全復旧モデルと一括ログ復旧モデルにのみ関係します。
create_lsn numeric(25,0) ファイルが作成されたログ シーケンス番号 (LSN) です。
drop_lsn numeric(25,0) ファイルが削除された LSN。

0 = ファイル名は再利用できません。
read_only_lsn numeric(25,0) ファイルを含むファイル グループが読み取り/書き込みから読み取り専用に変更された LSN (最新の変更)。
read_write_lsn numeric(25,0) ファイルを含むファイル グループが読み取り専用から読み取り/書き込みに変更された LSN (最新の変更)。
differential_base_lsn numeric(25,0) 差分バックアップのベースです。 この LSN の後に変更されたデータ エクステントは、差分バックアップに含まれます。
differential_base_guid uniqueidentifier 差分バックアップの基になるベース バックアップの一意識別子。
differential_base_time datetime differential_base_lsn対応する時間。
redo_start_lsn numeric(25,0) 次のロールフォワードを開始する必要がある LSN です。

は、NULL次の場合を除きRESTORING = state、または .state = RECOVERY_PENDING
redo_start_fork_guid uniqueidentifier 復旧分岐の一意識別子です。 復元された次のログ バックアップの first_fork_guid 値は、この値と一致している必要があります。 これは、ファイルの現在の状態を表します。
redo_target_lsn numeric(25,0) このファイルのオンライン ロールフォワードが停止することができる LSN。

は、NULL次の場合を除きRESTORING = state、または .state = RECOVERY_PENDING
redo_target_fork_guid uniqueidentifier ファイルを復旧できる復旧分岐。 と組み合わせて redo_target_lsn使用します。
backup_lsn numeric(25,0) ファイルの最新データまたは差分バックアップの LSN。

注意

大きなインデックスを削除または再構築したり、大きなテーブルに対する削除や切り詰めを行うと、トランザクションがコミットされるまで、データベース エンジンにより、実際のページの割り当て解除と、それらに関連付けられたロックが遅延されます。 遅延された削除操作では、割り当てられた領域は直ちに解放されません。 そのため、大きなオブジェクトを削除または切り捨てた直後に sys.database_files 返される値は、使用可能な実際のディスク領域を反映していない可能性があります。

アクセス許可

ロール public のメンバーシップが必要です。 詳細については、「 Metadata Visibility Configuration」を参照してください。

次のステートメントでは、各データベース ファイルの名前、ファイル サイズ、空き領域のサイズが返されます。

SELECT name, size/128.0 FileSizeInMB,
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 
   AS EmptySpaceInMB
FROM sys.database_files;

SQL Database を使ったクエリの例については、「Azure SQL Database でデータベースのファイル領域を管理する」を参照してください。 次の操作を行うことができます。