Comparteix a través de


sys.dm_tran_current_transaction (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Instancia administrada Azure Synapse Analytics Analytics Platform System (PDW)

Devuelve una sola fila que muestra información del estado de la transacción en la sesión actual.

Nota:

Para llamarlo desde Azure Synapse Analytics o Analytics Platform System (PDW), use el nombre sys.dm_pdw_nodes_tran_current_transaction. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Sintaxis

  
sys.dm_tran_current_transaction  

Tabla devuelta

Nombre de la columna Tipo de datos Descripción
transaction_id bigint Id. de transacción de la instantánea actual.
transaction_sequence_num bigint Número de secuencia de la transacción que genera la versión de registro.
transaction_is_snapshot bit Estado de aislamiento de instantáneas. Este valor es 1 si la transacción se ha iniciado con aislamiento de instantáneas. En caso contrario, el valor es 0.
first_snapshot_sequence_num bigint Número más bajo de secuencia de la transacción de las transacciones que estaban activas cuando se obtuvo la instantánea. Cuando se ejecuta, una transacción de instantánea realiza una instantánea de todas las transacciones activas en ese momento. En las transacciones que no son de instantánea, en esta columna se muestra 0.
last_transaction_sequence_num bigint Número de secuencia global. Este valor representa el último número de secuencia de transacción generado por el sistema.
first_useful_sequence_num bigint Número de secuencia global. Este valor representa el número de secuencia de la transacción más antiguo con versiones de fila que deben conservarse en el almacén de versiones. Las versiones de fila creadas por transacciones anteriores se pueden quitar.
pdw_node_id int Se aplica a: Azure Synapse Analytics, Sistema de la plataforma de análisis (PDW)

Identificador del nodo en el que se encuentra esta distribución.

Permisos

En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.

En los objetivos de servicio de SQL Database Basic, S0 y S1, y para las bases de datos de grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador de Microsoft Entra o la pertenencia al rol de ##MS_ServerStateReader## servidor. En el resto de objetivos del servicio de SQL Database, se requiere el permiso VIEW DATABASE STATE en la base de datos o la pertenencia en el rol del servidor ##MS_ServerStateReader##.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VER ESTADO DE RENDIMIENTO DEL SERVIDOR en el servidor.

Ejemplos

En el ejemplo siguiente se utiliza un escenario de prueba con cuatro transacciones simultáneas, identificadas con un número de secuencia de transacción (XSN), que se ejecutan en una base de datos con las opciones ALLOW_SNAPSHOT_ISOLATION y READ_COMMITTED_SNAPSHOT establecidas en ON. Se están ejecutando las siguientes transacciones:

  • XSN-57 es una operación de actualización con aislamiento serializable.

  • XSN-58 es igual que XSN-57.

  • XSN-59 es una operación de selección con aislamiento de instantáneas.

  • XSN-60 es igual que XSN-59.

La siguiente consulta se ejecuta en el ámbito de cada transacción.

SELECT   
    transaction_id  
   ,transaction_sequence_num  
   ,transaction_is_snapshot  
   ,first_snapshot_sequence_num  
   ,last_transaction_sequence_num  
   ,first_useful_sequence_num  
  FROM sys.dm_tran_current_transaction;  

Este es el resultado de XSN-59.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9387                 59                       1                         
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
57                               61                        
  
first_useful_sequence_num  
-------------------------  
57  

En la salida se muestra que XSN-59 es una transacción de instantáneas que utiliza XSN-57 como la primera transacción activa cuando se inició XSN-59. Esto significa que XSN-59 lee datos confirmados por transacciones con un número de secuencia de la transacción inferior a XSN-57.

Éste es el resultado de XSN-57.

transaction_id       transaction_sequence_num transaction_is_snapshot  
-------------------- ------------------------ -----------------------  
9295                 57                       0  
  
first_snapshot_sequence_num last_transaction_sequence_num  
--------------------------- -----------------------------  
NULL                        61  
  
first_useful_sequence_num  
-------------------------  
57  

Puesto que XSN-57 no es una transacción de instantáneas, first_snapshot_sequence_num es NULL.

Consulte también

Funciones y vistas de administración dinámica (Transact-SQL)
Funciones y vistas de administración dinámica relacionadas con transacciones (Transact-SQL)