sys.dm_tran_transactions_snapshot (Transact-SQL)
Se aplica a: SQL ServerAzure SQL Database Azure SQL Instancia administrada
Devuelve una tabla virtual para el sequence_number de transacciones que están activas cuando se inicia cada transacción de instantánea. 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, considere la siguiente salida 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 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.
Tabla devuelta
Nombre de la 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 para cada instrucción transact-SQL iniciada en lectura confirmada mediante 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 las versiones de fila. |
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
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.
Comentarios
Cuando se inicia una transacción de instantánea, el Motor de base de datos registra todas las transacciones que están activas en ese momento. sys.dm_tran_transactions_snapshot notifica esta información para todas las transacciones de instantáneas activas actualmente.
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. Sin embargo, el Motor de base de datos asigna el número de secuencia de transacciones con la ejecución de la primera instrucción Transact-SQL que tiene acceso a los 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.
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)