适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
分析平台系统(PDW)
Microsoft Fabric中的SQL数据库
为生成版本存储区中大多数版本的对象返回一个虚拟表。 sys.dm_tran_top_version_generators返回按database_id和rowset_id分组的前 256 条聚合记录长度。 sys.dm_tran_top_version_generators通过查询dm_tran_version_store虚拟表来检索数据。 sys.dm_tran_top_version_generators是运行效率低下的视图,因为此视图查询版本存储,并且版本存储可能非常大。 建议使用此函数查找版本存储区的最大使用者。
注释
若要从 Azure Synapse Analytics 或 Analytics 平台系统(PDW)调用此名称,请使用名称 sys.dm_pdw_nodes_tran_top_version_generators。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。
Syntax
sys.dm_tran_top_version_generators
返回的表
| 列名称 | 数据类型 | 说明 |
|---|---|---|
| database_id | int | 数据库 ID。 在 Azure SQL 数据库中,这些值在单一数据库或弹性池中是唯一的,但在逻辑服务器中不是唯一的。 |
| rowset_id | bigint | 行集 ID。 |
| aggregated_record_length_in_bytes | int | 版本存储中每个database_id和rowset_id对的记录长度之和。 |
| pdw_node_id | int |
适用于:Azure Synapse Analytics、Analytics Platform System (PDW) 此分发所打开的节点的标识符。 |
Permissions
在 SQL Server 和 SQL 托管实例上,需要 VIEW SERVER STATE 权限。
在 SQL 数据库 基本、S0和 S1 服务目标上,对于 弹性池、服务器管理员 帐户、Microsoft entra 管理员 帐户或 ##MS_ServerStateReader##服务器角色 的成员身份。 在所有其他 SQL 数据库服务目标上,需要对数据库具有 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色的成员身份。
SQL Server 2022 及更高版本的权限
需要 VIEW 服务器上的 SERVER PERFORMANCE STATE 权限。
注解
由于 sys.dm_tran_top_version_generators 可能需要读取许多页面,因为它扫描整个版本存储区,因此运行 sys.dm_tran_top_version_generators 可能会干扰系统性能。
Examples
下面的示例使用具有四个并发事务的测试方案,每一个事务都由事务序列号 (XSN) 标识,并在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 选项设置为 ON 的数据库中运行。 下列事务正在运行:
XSN-57 是序列化隔离下的更新操作。
XSN-58 与 XSN-57 相同。
XSN-59 是快照隔离下的选择操作。
XSN-60 与 XSN-59 相同。
执行以下查询。
SELECT
database_id,
rowset_id,
aggregated_record_length_in_bytes
FROM sys.dm_tran_top_version_generators;
结果集如下。
database_id rowset_id aggregated_record_length_in_bytes
----------- -------------------- ---------------------------------
9 72057594038321152 87
9 72057594038386688 33
输出显示所有版本都是通过 database_id``9 两个表创建的,以及版本是从两个表生成的。