sys.dm_tran_transactions_snapshot (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Возвращает виртуальную таблицу для 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.
Возвращаемая таблица
Имя столбца | Тип данных | Description |
---|---|---|
transaction_sequence_num | bigint | Последовательный номер транзакции моментальных снимков. |
snapshot_id | int | Идентификатор моментального снимка для каждой инструкции Transact-SQL, запущенной при чтении, с помощью управления версиями строк. Этот идентификатор используется для формирования согласованного на уровне транзакций представления базы данных, поддерживающего выполнение каждого запроса в контексте управления версиями строк с чтением только зафиксированных данных. |
snapshot_sequence_num | bigint | Последовательный номер транзакции, которая была активна при запуске транзакции моментальных снимков. |
Разрешения
На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE
.
Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##
роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE
в базе данных или членство в роли сервера ##MS_ServerStateReader##
.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.
Замечания
При запуске транзакции моментального снимка ядро СУБД записывает все активные транзакции в это время. sys.dm_tran_transactions_snapshot сообщает эти сведения для всех текущих активных транзакций моментальных снимков.
Каждая транзакция имеет последовательный номер, который назначается ей при запуске. Запуск транзакций начинается с вызова инструкции BEGIN TRANSACTION или BEGIN WORK. Однако ядро СУБД назначает номер последовательности транзакций с выполнением первой инструкции Transact-SQL, которая обращается к данным после инструкции BEGIN TRANSACTION или BEGIN WORK. Последовательные номера транзакций увеличиваются с единичным интервалом.
См. также
Динамические административные представления и функции (Transact-SQL)
Динамические административные представления и функции, связанные с транзакциями (Transact-SQL)