sys.dm_tran_transactions_snapshot (Transact-SQL)
适用于: SQL Server Azure SQL 数据库 Azure SQL 托管实例
返回每个快照事务启动时处于活动状态的事务sequence_number的虚拟表。 此视图返回的信息有助于您:
确定当前的活动快照事务数。
确定特定快照事务忽略的数据修改。 对于在快照事务启动时活动的事务,快照事务将忽略由其进行的所有数据修改,即使在事务提交后也是如此。
例如,请考虑sys.dm_tran_transactions_snapshot的以下输出:
transaction_sequence_num snapshot_id snapshot_sequence_num
------------------------ ----------- ---------------------
59 0 57
59 0 58
60 0 57
60 0 58
60 0 59
60 3 57
60 3 58
60 3 59
60 3 60
transaction_sequence_num
列标识当前快照事务的事务序列 (XSN) 号。 该输出显示两个序列号:59
和 60
。 snapshot_sequence_num
列标识在每个快照事务启动时处于活动状态的事务的事务序列号。
该输出显示,在两个活动事务 XSN-57 和 XSN-58 运行时,快照事务 XSN-59 启动。 如果 XSN-57 或 XSN-58 进行了数据修改,XSN-59 将忽略这些修改,并使用行版本控制来维护数据库的事务一致视图。
快照事务 XSN-60 将忽略由 XSN-57 和 XSN-58 以及 XSN 59 进行的数据修改。
返回的表
列名称 | 数据类型 | 描述 |
---|---|---|
transaction_sequence_num | bigint | 快照事务的事务序列号 (XSN)。 |
snapshot_id | int | 每个 Transact-SQL 语句的快照 ID 均使用行版本控制在读取提交下启动。 该值用于为数据库生成事务一致视图,该数据库支持在使用行版本控制已提交读的情况下运行的每个查询。 |
snapshot_sequence_num | bigint | 启动快照事务时处于活动状态的事务的事务序列号。 |
权限
对于 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_transactions_snapshot报告所有当前活动快照事务的此信息。
每个事务都由事务开始时分配的事务序列号标识。 在执行 BEGIN TRANSACTION 或 BEGIN WORK 语句时事务启动。 但是,数据库引擎分配事务序列号,并执行第一个 Transact-SQL 语句,该语句访问 BEGIN TRANSACTION 或 BEGIN WORK 语句之后的数据。 事务序列号以一为增量递增。