sys.dm_db_file_space_usage (Transact-SQL)

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

傳回資料庫中每個資料檔案的空間使用量資訊。

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用 名稱 sys.dm_pdw_nodes_db_file_space_usage 。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
database_id smallint 資料庫識別碼。

在 Azure SQL 資料庫中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。
file_id smallint 檔案識別碼。

file_id會對應至 file_id sys.dm_io_virtual_file_stats 和 sys.sysfiles 中的 fileid。
filegroup_id smallint 適用于:SQL Server 2012 (11.x) 和更新版本。

檔案群組識別碼。
total_page_count bigint 適用于:SQL Server 2012 (11.x) 和更新版本。

資料檔案中的總頁數。
allocated_extent_page_count bigint 適用于:SQL Server 2012 (11.x) 和更新版本。

資料檔案中已配置範圍中的總頁數。
unallocated_extent_page_count bigint 資料檔案中未配置範圍中的總頁數。

未包含配置範圍中的未使用頁面。
version_store_reserved_page_count bigint 配置給版本存放區之統一範圍中的頁面總數。 版本存放區頁面永遠不會從混合範圍配置。

不會包含 IAM 頁面,因為它們一律會從混合範圍配置。 如果從統一範圍配置 PFS 頁面,則會包含這些頁面。

如需詳細資訊,請參閱 sys.dm_tran_version_store (Transact-SQL)
user_object_reserved_page_count bigint 針對資料庫中使用者物件,從統一範圍配置的頁面總數。 配置範圍中的未使用頁面會包含在計數中。

不會包含 IAM 頁面,因為它們一律會從混合範圍配置。 如果從統一範圍配置 PFS 頁面,則會包含這些頁面。

您可以使用 total_pages sys.allocation_units 目錄檢視中的資料 行,傳回使用者物件中每個配置單位的保留頁面計數。 不過,資料 total_pages 行包含 IAM 頁面。
internal_object_reserved_page_count bigint 配置給檔案內建物件之統一範圍中的頁面總數。 配置範圍中的未使用頁面會包含在計數中。

不會包含 IAM 頁面,因為它們一律會從混合範圍配置。 如果從統一範圍配置 PFS 頁面,則會包含這些頁面。

沒有目錄檢視或動態管理物件會傳回每個內建物件的頁面計數。
mixed_extent_page_count bigint 檔案中配置混合範圍中已配置和未配置頁面的總數。 混合範圍包含配置給不同物件的頁面。 此計數確實包含檔案中的所有 IAM 頁面。
modified_extent_page_count bigint 適用于:SQL Server 2016 (13.x) SP2 和更新版本。

自上次完整資料庫備份以來,檔案已配置範圍中修改的頁面總數。 修改的頁面計數可用來追蹤資料庫自上次完整備份後的差異變更數目,以判斷是否需要差異備份。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

此散發節點的識別碼。
distribution_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

與分佈相關聯的唯一數值識別碼。

備註

頁面計數一律位於範圍層級。 因此,頁面計數值一律是八個的倍數。 包含全域配置對應 (GAM) 和共用全域配置對應 (SGAM) 配置頁面的範圍會配置統一範圍。 它們不會包含在先前描述的頁面計數中。 如需分頁和範圍的詳細資訊,請參閱分頁與範圍結構指南

目前版本存放區的內容位於 sys.dm_tran_version_store 。 版本存放區頁面會追蹤在檔案層級,而不是會話和工作層級,因為它們是全域資源。 會話可能會產生版本,但會話結束時無法移除版本。 版本存放區清除必須考慮需要存取特定版本的最長執行交易。 檢視sys.dm_tran_active_snapshot_database_transactions 中的 elapsed_time_seconds資料行,即可探索與版本存放區清除相關的最長執行交易。

資料行中的 mixed_extent_page_count 頻繁變更可能表示大量使用 SGAM 頁面。 發生這種情況時,您可能會看到許多PAGELATCH_UP等候資源是 SGAM 頁面。 如需詳細資訊,請參閱 sys.dm_os_waiting_tasks(Transact-SQL) sys.dm_os_wait_stats(Transact-SQL) sys.dm_os_latch_stats(Transact-SQL)。

使用者物件

下列物件包含在使用者物件頁面計數器中:

  • 使用者定義的資料表和索引
  • 系統資料表和索引
  • 全域臨時表和索引
  • 本機臨時表和索引
  • 資料表變數
  • 資料表值函式中傳回的資料表

內部物件

內建物件只位於 中 tempdb 。 下列物件包含在內建物件頁面計數器中:

  • 資料指標或多工緩衝處理作業和暫存大型物件的工作資料表 (LOB) 儲存體
  • 雜湊聯結等作業的工作檔案
  • 排序執行

關聯性基數

關聯
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id 一對一

權限

在 SQL Server 2019 (15.x) 和舊版上,SQL 受管理執行個體需要 VIEW SERVER STATE 許可權。

在 SQL Server 2022 (16.x) 和更新版本上,需要伺服器上的 VIEW SERVER PERFORMANCE STATE 許可權。

在SQL 資料庫基本、S0 S1 服務目標上,以及彈性集 區中的 資料庫, 需要伺服器管理員 帳戶、 Microsoft Entra 系統管理員 帳戶或伺服器角色 的成員 ##MS_ServerStateReader## 資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

範例

判斷 中的可用空間量 tempdb

下列查詢會傳回可用頁面總數,以及 中所有資料檔案 tempdb 中可用 MB 的總可用空間。

USE tempdb;
GO

SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

判斷使用者物件所使用的空間量

下列查詢會傳回使用者物件所使用的總頁數,以及 中 tempdb 使用者物件所使用的總空間。

USE tempdb;
GO

SELECT
    SUM(user_object_reserved_page_count) AS [user object pages used],
    (SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;

另請參閱