sys.dm_tran_version_store_space_usage (Transact-SQL)

适用于: SQL Server 2016 (13.x) SP 2 及更高版本 Azure SQL 数据库 不支持。 Azure Synapse Analytics 不支持。 分析平台系统 (PDW)

返回一个表,该表显示每个数据库的版本存储记录使用的 tempdb 中的总空间。 sys.dm_tran_version_store_space_usage高效且不昂贵地运行,因为它不会浏览各个版本存储记录,并返回每个数据库在 tempdb 中消耗的聚合版本存储空间。

每个版本控制记录都存储为二进制数据,以及一些跟踪或状态信息。 与数据库表中的记录相似,版本存储区记录存储在 8192 字节的页中。 如果记录超过 8192 字节,则该记录将拆分为两个不同的记录。

由于有版本控制的记录以二进制数据的形式存储,因此不同的数据库可以采用不同的排序规则。 使用 sys.dm_tran_version_store_space_usage 根据 SQL Server 实例中数据库的存储空间使用情况来监视和规划 tempdb 大小。

列名称 数据类型 描述
database_id int 数据库的数据库 ID。

在 Azure SQL 数据库中,这些值在单一数据库或弹性池中是唯一的,但在逻辑服务器中不是唯一的。
reserved_page_count bigint tempdb 中为数据库的版本存储记录保留的页面总数。
reserved_space_kb bigint tempdb 中用于数据库的版本存储记录的总空间(以千字节为单位)。

权限

在 SQL Server 上,需要 VIEW SERVER STATE 权限。

SQL Server 2022 及更高版本的权限

要求对服务器具有 VIEW SERVER PERFORMANCE STATE 权限。

示例

以下查询可用于根据 SQL Server 实例中每个数据库的版本存储来确定 tempdb 中使用的空间。

SELECT 
  DB_NAME(database_id) as 'Database Name',
  reserved_page_count,
  reserved_space_kb 
FROM sys.dm_tran_version_store_space_usage;  

结果集如下。

Database Name            reserved_page_count reserved_space_kb  
------------------------ -------------------- -----------  
msdb                      0                    0             
AdventureWorks2022        10                   80             
AdventureWorks2022DW      0                    0             
WideWorldImporters        20                   160             

另请参阅

动态管理视图和函数 (Transact-SQL)
与事务有关的动态管理视图和函数 (Transact-SQL)