sys.dm_tran_transactions_snapshot (Transact-SQL)

Devuelve una tabla virtual para sequence_number de las transacciones que están activas cuando se inicia la transacción de instantáneas. La información que devuelve esta vista le puede ayudar a realizar las siguientes acciones:

  • Buscar el número de transacciones de instantáneas activas actualmente.

  • Identificar modificaciones de datos pasadas por alto por una transacción de instantáneas determinada. Si existe una transacción activa cuando comienza una transacción de instantáneas, todas las modificaciones de datos de la primera, incluso después de confirmarla, se pasan por alto en la transacción de instantáneas.

Por ejemplo, suponga que obtiene el siguiente resultado de 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

La columna transaction_sequence_num identifica el número de secuencia de transacción (XSN) de las transacciones de instantáneas actuales. El resultado muestra dos: 59 y 60. La columna snapshot_sequence_num identifica el número de secuencia de las transacciones activas al iniciarse cada transacción de instantáneas.

El resultado muestra que la transacción de instantáneas XSN-59 comienza mientras se ejecutan dos transacciones activas, XSN-57 y XSN-58. Si XSN-57 o XSN-58 realizan modificaciones de datos, XSN-59 pasa por alto los cambios y utiliza el control de versiones de fila para conservar una vista coherente de la base de datos desde el punto de vista transaccional.

La transacción de instantáneas XSN-60 pasa por alto las modificaciones efectuadas por XSN-57 y XSN-58 y también por XSN 59.

Sintaxis

dm_tran_transactions_snapshot

Tabla devuelta

Nombre de columna

Tipo de datos

Descripción

transaction_sequence_num

bigint

Número de secuencia de transacción (XSN) de una transacción de instantáneas.

snapshot_id

int

Id. de instantánea de cada instrucción de Transact-SQL iniciada con lectura confirmada y que utiliza el control de versiones de fila. Este valor se utiliza para generar una vista de la base de datos transaccionalmente coherente que admita cada consulta que se ejecute en una lectura confirmada utilizando el control de versiones de filas.

snapshot_sequence_num

bigint

Número de secuencia de una transacción que estaba activa cuando se inició la transacción de instantánea.

Permisos

Requiere el permiso VIEW SERVER STATE en el servidor.

Notas

Cuando se inicia una transacción de instantáneas, Database Engine (Motor de base de datos) registra todas las transacciones activas en ese momento determinado. sys.dm_tran_transactions_snapshot proporciona esta información de todas las transacciones de instantáneas actualmente activas.

Cada transacción se identifica mediante un número de secuencia que se asigna cuando se inicia la transacción. Las transacciones empiezan en el momento en que se ejecuta una instrucción BEGIN TRANSACTION o BEGIN WORK. No obstante, Database Engine (Motor de base de datos) asigna el número de secuencia de la transacción con la ejecución de la primera instrucción de Transact-SQL que tiene acceso a datos después de la instrucción BEGIN TRANSACTION o BEGIN WORK. Los números de secuencia de la transacción se incrementan de uno en uno.