sys.dm_tran_current_snapshot (Transact-SQL)

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

返回一个虚拟表,该表显示当前快照事务启动时所有处于活动状态的事务。 如果当前事务不是快照事务,则该函数不返回行。 sys.dm_tran_current_快照类似于sys.dm_tran_transactions_快照,但sys.dm_tran_current_快照仅返回当前快照事务的活动事务。

注意

若要从 Azure Synapse Analytics 或 Analytics 平台系统(PDW)调用此名称,请使用名称sys.dm_pdw_nodes_tran_current_快照。 Azure Synapse Analytics 中的无服务器 SQL 池不支持此语法。

语法

  
sys.dm_tran_current_snapshot  

返回的表

列名称 数据类型 描述
transaction_sequence_num bigint 活动事务的事务序列号。
pdw_node_id int 适用于:Azure Synapse Analytics、Analytics Platform System (PDW)

此分发所在节点的标识符。

权限

对于 SQL Server 和 SQL 托管实例,需要 VIEW SERVER STATE 权限。

在SQL 数据库基本、S0S1 服务目标以及弹性池中的数据库、服务器管理员帐户、Microsoft Entra 管理员帐户或服务器角色的成员##MS_ServerStateReader##身份是必需的。 对于所有其他 SQL 数据库服务目标,需要数据库的 VIEW DATABASE STATE 权限或 ##MS_ServerStateReader## 服务器角色中的成员身份。

SQL Server 2022 及更高版本的权限

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

示例

下面的示例使用具有四个并发事务的测试方案,每一个事务都由事务序列号 (XSN) 标识,并在 ALLOW_SNAPSHOT_ISOLATION 和 READ_COMMITTED_SNAPSHOT 选项设置为 ON 的数据库中运行。 下列事务正在运行:

  • XSN-57 是序列化隔离下的更新操作。

  • XSN-58 与 XSN-57 相同。

  • XSN-59 是快照隔离下的选择操作。

  • XSN-60 与 XSN-59 相同。

下面的查询在 XSN-59 的作用域中执行。

SELECT   
    transaction_sequence_num  
  FROM sys.dm_tran_current_snapshot;  

下面是结果集:

transaction_sequence_num  
------------------------  
57  
58  

结果显示 XSN-57 和 XSN-58 在快照事务 XSN-59 启动时已处于活动状态。 即使 XSN-57 和 XSN-58 提交或回滚之后,相同的结果也将一直持续到快照事务完成。

在 XSN-60 的作用域中执行相同的查询。

下面是结果集:

transaction_sequence_num  
------------------------  
57  
58  
59  

XSN-60 的输出不仅包括为 XSN-59 显示的相同事务,而且还包括在 XSN-60 启动时处于活动状态的 XSN-59。

另请参阅

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