sys.dm_tran_transactions_snapshot

Возвращает виртуальную таблицу номеров sequence_number транзакций, активных при запуске каждой транзакции моментальных снимков. Данные, возвращаемые этим представлением, могут помочь:

  • найти номера активных в настоящее время транзакций моментальных снимков;

  • определить изменения данных, пропущенные обычной транзакцией моментальных снимков. Для транзакции, активной при запуске транзакции моментальных снимков, все измененные этой транзакцией данные (даже после того, как она будет зафиксирована) будут пропущены транзакцией моментальных снимков.

Предположим, что представление 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

Столбец transaction_sequence_num содержит последовательные номера транзакции (XSN) текущих транзакций моментальных снимков. В приведенном примере их два: 59 и 60. Столбец snapshot_sequence_num содержит последовательные номера транзакций, активных при запуске каждой транзакции моментальных снимков.

Видно, что запуск транзакции моментальных снимков XSN-59 произошел, когда были активны транзакции XSN-57 и XSN-58. Если в транзакциях XSN-57 или XSN-58 выполняется изменение данных, транзакция XSN-59 пропустит эти изменения и будет использовать учет версий строк для поддержки транзакционно согласованного представления базы данных.

Транзакция моментальных снимков XSN-60 пропустит изменения данных, сделанные в транзакциях XSN-57, XSN-58 и XSN 59.

Синтаксис

dm_tran_transactions_snapshot

Возвращаемая таблица

Имя столбца

Тип данных

Описание

transaction_sequence_num

bigint

Последовательный номер транзакции моментальных снимков.

snapshot_id

int

Идентификатор моментального снимка для каждой инструкции Transact-SQL, вызванной в контексте чтения зафиксированных данных с помощью управления версиями строк. Этот идентификатор используется для формирования согласованного на уровне транзакций представления базы данных, поддерживающего выполнение каждого запроса в контексте управления версиями строк с чтением только зафиксированных данных.

snapshot_sequence_num

bigint

Последовательный номер транзакции, которая была активна при запуске транзакции моментальных снимков.

Разрешения

Требуется разрешение VIEW SERVER STATE на сервер.

Замечания

При запуске транзакции моментальных снимков компонент Database Engine регистрирует все активные транзакции. Представление sys.dm_tran_transactions_snapshot предоставляет эти сведения всем активным в данный момент транзакциям моментальных снимков.

Каждая транзакция имеет последовательный номер, который назначается ей при запуске. Запуск транзакций начинается с вызова инструкции BEGIN TRANSACTION или BEGIN WORK. Однако последовательный номер транзакции назначается компонентом Database Engine при выполнении первой инструкции Transact-SQL, следующей за инструкцией BEGIN TRANSACTION или BEGIN WORK. Последовательные номера транзакций увеличиваются с единичным интервалом.