Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Base de datos de Azure SQL en Microsoft Fabric
Esta vista de gestión dinámica devuelve información sobre las transacciones registradas para el verseado de filas y asignadas a un número de secuencia de transacción (XSN). Las transacciones pueden incluirse bajo una o más de las siguientes condiciones:
Cuando uno o ambos
ALLOW_SNAPSHOT_ISOLATIONy lasREAD_COMMITTED_SNAPSHOTopciones de base de datos sonON:Transacciones que establecen una instantánea bajo aislamiento de instantáneas o que leen aislamiento comprometido usando versionado de filas.
Transacciones que generan versiones de filas, por ejemplo, actualizando o eliminando filas en una base de datos con estas opciones activadas.
Transacciones que generan o acceden a versiones de fila para detectar disparadores.
Transacciones que utilizan versionado de filas durante las operaciones de índice en línea.
Transacciones que utilizan versionado de filas en una sesión de Conjuntos de Resultados Activos Múltiples (MARS).
En SQL Server 2019 (15.x) y versiones posteriores, las transacciones que modifican datos en una base de datos con recuperación acelerada de bases de datos (ADR) activada, incluso cuando ambas opciones de base de datos instantáneas son
OFF.
Esta vista de gestión dinámica no incluye las transacciones del sistema. Las transacciones completadas pueden aparecer brevemente durante la enumeración concurrente o la limpieza de transacciones.
Note
Para llamar a esto desde Azure Synapse Analytics, usa el nombre sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.
Syntax
sys.dm_tran_active_snapshot_database_transactions
Tabla devuelta
| Nombre de la columna | Tipo de dato | Descripción |
|---|---|---|
transaction_id |
bigint |
Número de identificación único asignado a la transacción. El Id. de transacción se utiliza principalmente para identificar la transacción en las operaciones de bloqueo. |
transaction_sequence_num |
bigint |
Número de secuencia único asignado cuando la transacción requiere por primera vez versionado de fila. Las transacciones que no generan versiones de fila ni utilizan escaneos de instantáneas no se les asigna un número de secuencia de transacción. |
commit_sequence_num |
bigint |
Siempre NULO en esta visión. |
session_id |
int |
ID de la sesión asociada a la transacción. |
is_snapshot |
bit |
0 = No es una transacción de aislamiento de instantánea. 1 = Es una transacción de aislamiento de instantánea. |
first_snapshot_sequence_num |
bigint |
El número de secuencia de transacción más bajo registrado como activo en las instantáneas que actualmente posee la transacción. Incluye instantáneas a nivel de transacción y a nivel de instrucción. NULL si no se registra dicho número de secuencia. |
max_version_chain_traversed |
int |
Número máximo de versiones de fila recorridas en una sola cadena de versiones por la transacción. Devuelve 0 si no se recorren versiones por fila. |
average_version_chain_traversed |
float |
Número medio de versiones de fila recorridas por cada recorrido de la cadena de versiones por la transacción. Se excluyen los recorridos de longitud 0. Devuelve 0 si no se recorren versiones por fila. |
elapsed_time_seconds |
bigint |
Tiempo transcurrido, en segundos, desde que la transacción obtuvo su número de secuencia de transacción. |
pdw_node_id |
int |
Se aplica a: Azure Synapse Analytics Identificador del nodo en el que se encuentra esta distribución. |
Permissions
En SQL Server y SQL Managed Instance, requiere el permiso VIEW SERVER STATE.
En los objetivos de servicio Básico, S0 y S1 de SQL Database y para bases de datos en grupos elásticos, se requiere la cuenta de administrador del servidor, la cuenta de administrador Microsoft Entra o la pertenencia al ##MS_ServerStateReader##rol del 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 VIEW SERVER PERFORMANCE STATE en el servidor.
Comentarios
sys.dm_tran_active_snapshot_database_transactions informa transacciones asignadas a un número de secuencia de transacción (XSN) para el visionado de filas. Un XSN se asigna cuando la transacción requiere versionado por primera fila, no necesariamente cuando inicia o accede físicamente al almacén de versiones.
En una base de datos con ALLOW_SNAPSHOT_ISOLATION o READ_COMMITTED_SNAPSHOT habilitada, ejemplos incluyen:
Una transacción que se ejecuta bajo aislamiento serializable recibe asignada una XSN cuando genera por primera vez versiones de fila, por ejemplo mediante una
UPDATEoperación oDELETE.Una transacción que se ejecuta bajo aislamiento de instantáneas recibe un XSN cuando establece por primera vez una instantánea para el acceso a datos, por ejemplo, a través de una
SELECTque lee una tabla de usuario.BEGIN TRANSACTIONpor sí sola no asigna un XSN.
Los XSN se asignan a partir de un contador creciente a nivel de instancia. El mismo contador se usa para instantáneas a nivel de sentencia, por lo que los XSN de transacciones no tienen por qué ser consecutivos.
Examples
El siguiente ejemplo ilustra cuatro transacciones concurrentes en una base de datos con ALLOW_SNAPSHOT_ISOLATION y READ_COMMITTED_SNAPSHOT configuradas en ON:
- XSN-57 ejecuta un
UPDATEaislamiento subserializable y permanece sin comprometerse. - XSN-58 ejecuta otro
UPDATEbajo aislamiento serializable y permanece sin comprometer. - XSN-59 ejecuta un
SELECTaislamiento bajo instantánea y permanece abierto. - XSN-60 ejecuta otro
SELECTbajo aislamiento de instantáneas y permanece abierto.
Ambas transacciones de instantáneas establecen sus instantáneas mientras XSN-57 y XSN-58 están activas. Sus declaraciones leen SELECT versiones anteriores de las filas modificadas por las actualizaciones no comprometidas.
Se ejecuta la siguiente consulta:
SELECT transaction_id,
transaction_sequence_num,
commit_sequence_num,
is_snapshot,
session_id,
first_snapshot_sequence_num,
max_version_chain_traversed,
average_version_chain_traversed,
elapsed_time_seconds
FROM sys.dm_tran_active_snapshot_database_transactions
ORDER BY transaction_sequence_num;
El siguiente resultado es ilustrativo. Los identificadores reales, números de secuencia, estadísticas y tiempos transcurridos varían.
transaction_id transaction_sequence_num commit_sequence_num is_snapshot session_id first_snapshot_sequence_num max_version_chain_traversed average_version_chain_traversed elapsed_time_seconds
-------------- ------------------------ ------------------- ----------- ---------- --------------------------- --------------------------- ------------------------------- --------------------
9295 57 NULL 0 54 NULL 0 0 419
9324 58 NULL 0 53 NULL 0 0 397
9387 59 NULL 1 52 57 1 1 359
9400 60 NULL 1 51 57 1 1 333
Los resultados muestran lo siguiente:
XSN-57 y XSN-58 utilizan aislamiento serializable, por lo que
is_snapshot = 0. LasUPDATEsentencias ejecutadas dentro de estas transacciones generan versiones de fila porque las opciones de instantánea de la base de datos sonON. Esta generación de versiones hace que se asignen números de secuencia de transacción. Ninguna de las dos transacciones contiene una instantánea en este ejemplo, por lo quefirst_snapshot_sequence_numNULL lo es.XSN-59 y XSN-60 tienen
is_snapshot = 1. Sufirst_snapshot_sequence_numvalor de57identifica la transacción más antigua registrada como activa cuando se establecieron sus instantáneas.Para XSN-59 y XSN-60, las longitudes de recorrido de la cadena de versión máxima y media son ambas
1. Cada recorrido registrado visitaba una versión de una fila. La media se calcula sobre recorridos que visitan al menos una versión de la fila.XSN-59 y XSN-60 leían versiones comprometidas anteriores de las filas modificadas por XSN-57 y XSN-58, que aún no estaban comprometidas cuando se establecieron ambas instantáneas.