sys.dm_tran_current_transaction
Возвращает строку, которая отображает сведения о состоянии транзакции в текущей сессии.
Синтаксис
sys.dm_tran_current_transaction
Возвращаемые таблицы
Имя столбца |
Тип данных |
Описание |
---|---|---|
transaction_id |
bigint |
Идентификатор транзакции текущего моментального снимка. |
transaction_sequence_num |
bigint |
Порядковый номер транзакции, формирующий номер версии записи. |
transaction_is_snapshot |
bit |
Состояние изоляции моментального снимка. Значение 1, если транзакция запускается с изоляцией моментального снимка. В противном случае — значение 0. |
first_snapshot_sequence_num |
bigint |
Наименьший порядковый номер транзакции, которая была активна при получении моментального снимка. При выполнении транзакции моментального снимка она формирует моментальный снимок активных в этот момент транзакций. Для транзакций, не связанных с моментальными снимками, в этом столбце отображается 0. |
last_transaction_sequence_num |
bigint |
Глобальный последовательный номер. Последний последовательный номер транзакции, созданный системой. |
first_useful_sequence_num |
bigint |
Глобальный последовательный номер. Самый старый последовательный номер транзакции, версии строк которой должны сохраняться в хранилище версий. Версии строк, созданных предыдущими транзакциями, можно удалить. |
Разрешения
Требует разрешения VIEW SERVER STATE на сервер.
Примеры
В следующем примере используется тестовый сценарий, в котором четыре параллельные транзакции, каждую из которых идентифицирует порядковый номер (XSN), выполняются в базе данных с параметрами ALLOW_SNAPSHOT_ISOLATION и READ_COMMITTED_SNAPSHOT, установленными в значение ON. Выполняются следующие транзакции:
XSN-57 — операция обновления с упорядочиваемым уровнем изоляции.
XSN-58 — то же, что и XSN-57.
XSN-59 — операция выборки с изоляцией моментального снимка.
XSN-60 — то же, что и XSN-59.
Следующий запрос выполняется в области каждой транзакции.
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;
Результат для 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
Выход показывает, что XSN-59 — транзакция моментального снимка, использовавшая XSN-57 как первую активную транзакцию на момент запуска XSN-59. Это означает, что транзакция XSN-59 считывает данные, зафиксированные транзакциями с порядковыми номерами ниже чем у XSN-57.
Результат для 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
Так как транзакция XSN-57 не связана с моментальными снимками, значение first_snapshot_sequence_num равно NULL.