sys.database_files (Transact-SQL)

適用于:SQL Server (Azure SQL Database Azure SQL 受控執行個體 Azure Synapse Analytics Analytics 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

記錄

FILESTREAM

FULLTEXT
data_space_id int 此值可能是 0 或大於 0。 值為 0 代表資料庫記錄檔,而大於 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 = 不適用

如果是資料庫快照集,size 會反映快照集可以使用的最大檔案空間。

對於 FILESTREAM 檔案群組容器,size 會反映容器目前的使用大小。
max_size int 最大檔案大小 (以 8 KB 頁面為單位):

0 = 不允許任何成長。

-1 = 檔案會成長到磁碟已滿。

268435456 = 記錄檔可以成長到最大 2 TB 的大小。

對於 FILESTREAM 檔案群組容器,max_size反映容器的大小上限。

請注意,使用無限制記錄檔大小升級的資料庫將會針對記錄檔的大小上限回報 -1。

在 Azure SQL Database 中,所有資料檔案的max_size值總和可能小於資料庫的資料大小上限。 使用 DATABASEPROPERTYEX(DB_NAME(), 'MaxSizeInBytes') 來判斷資料大小上限。
增長 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 = 只有在下一次記錄備份之後,卸除的檔案名稱 (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。

除非 state = RESTORING 或 state = RECOVERY_PENDING,否則,便是 NULL。
redo_start_fork_guid uniqueidentifier 復原分岔的唯一識別碼。 下一個還原的記錄備份之 first_fork_guid 必須符合這個值。 這代表檔案目前的狀態。
redo_target_lsn numeric(25,0) 能夠停止這個檔案的線上向前復原的 LSN。

除非 state = RESTORING 或 state = RECOVERY_PENDING,否則,便是 NULL。
redo_target_fork_guid uniqueidentifier 能夠復原檔案的復原分岔。 與 redo_target_lsn 形成一組。
backup_lsn numeric(25,0) 檔案最近的資料或差異備份的 LSN。

注意

當您卸載或重建大型索引,或卸載或截斷大型資料表時,Database Engine 會延遲實際的頁面解除配置及其相關聯的鎖定,直到交易認可之後為止。 延遲的卸除作業並不會立即釋出已配置的空間。 因此,在卸除或截斷大型物件之後,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 Database 中管理資料庫的檔案空間中,尋找使用 SQL Database 的範例查詢。 您可以:

後續步驟

在下列文章中深入了解相關概念: