sys.dm_tran_current_transaction (Transact-SQL)
Devuelve una sola fila que muestra información del estado de la transacción en la sesión actual.
Sintaxis
sys.dm_tran_current_transaction
Tabla devuelta
Nombre de 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. |
Permisos
Requiere el permiso VIEW SERVER STATE 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;
Éste 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.