sys.database_files (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

針對儲存在資料庫本身的資料庫的每個檔案,各包含一個數據列。 這是每個資料庫檢視。

資料行名稱 資料類型 描述
file_id int 資料庫內檔案的標識碼。
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 表示資料庫記錄檔,而大於零的值代表儲存此數據檔之檔案群組的標識符。
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 = 不適用
對於資料庫快照集,大小會反映快照集可用於檔案的最大空間。
針對 FILESTREAM 檔案群組容器,size 會反映容器目前使用的大小。
max_size int 檔案大小上限,以 8 KB 為單位:

0 = 不允許成長。
-1 = 檔案可以成長,直到磁碟已滿為止。
268435456 = 記錄檔可以成長到大小上限 2 TB。
針對 FILESTREAM 檔案群組容器, max_size 反映容器的大小上限。
使用無限制記錄檔大小報告 -1 升級的資料庫,以取得記錄檔的大小上限。
在 Azure SQL 資料庫 中,所有數據檔的值總和max_size可能小於資料庫的數據大小上限。 使用 DATABASEPROPERTYEX(DB_NAME(), 'MaxSizeInBytes') 來判斷數據大小上限。
growth int 0 = 檔案是固定大小且不會成長。

大於 0 = 檔案會自動成長。
如果 is_percent_growth = 0,成長增量是以 8 KB 頁面為單位,四捨五入為最接近的 64 KB。
如果 is_percent_growth = 1,成長增量會以整數百分比表示。
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 = 卸除的檔案名 (namephysical_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。

除非 或RECOVERY_PENDING = state ,否則stateRESTORING = 為 。NULL
redo_start_fork_guid uniqueidentifier 復原分支的唯一標識碼。 first_fork_guid還原之下一個記錄備份的 必須符合此值。 這表示檔案的目前狀態。
redo_target_lsn numeric(25,0) 在此檔案上在線向前復原的 LSN 可以停止。

除非 或RECOVERY_PENDING = state ,否則stateRESTORING = 為 。NULL
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;

在管理 Azure SQL 資料庫 中資料庫的檔案空間中,尋找使用 SQL 資料庫 的範例查詢。 您可以: