Ескерім
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
azure Synapse Analytics Analytics
Platform System (PDW)
В экземпляре SQL Server это динамическое представление управления возвращает виртуальную таблицу для всех активных транзакций, которые создают или потенциально получают доступ к версиям строк. Транзакции включаются для одного или нескольких из следующих условий.
Если одному или обоим параметрам базы данных ALLOW_SNAPSHOT_ISOLATION и READ_COMMITTED_SNAPSHOT присвоены значения ON.
Для каждой транзакции имеется одна строка, запускающаяся на уровне изоляции моментальных снимков либо на уровне READ COMMITTED с использованием управления версиями строк.
Для каждой транзакции имеется одна строка, вызывающая создание версии строки в текущей базе данных. Например, транзакция формирует версию строки путем обновления или удаления строки из текущей базы данных.
При срабатывании триггера имеется одна строка для транзакции, в которой выполняется триггер.
При запуске процедуры индексирования в сети имеется одна строка для транзакции, которая создает индекс.
При включенном режиме MARS имеется одна строка для каждой транзакции, которая получает доступ к версиям строк.
Это динамическое административное представление не включает в себя системные транзакции.
Примечание.
Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_tran_active_snapshot_database_transactions. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Синтаксис
sys.dm_tran_active_snapshot_database_transactions
Возвращаемая таблица
Имя столбца | Тип данных | Description |
---|---|---|
transaction_id | bigint | Уникальный идентификатор, присвоенный транзакции. Идентификатор транзакции используется главным образом для определения транзакции при операциях блокировки. |
transaction_sequence_num | bigint | Порядковый номер транзакции. Порядковый номер транзакции является уникальным и присваивается транзакции в момент ее запуска. Транзакции, которые не создают записи версий и не используют сканирование моментальных снимков, не получат порядковый номер. |
commit_sequence_num | bigint | Порядковый номер, который указывает, когда транзакция заканчивается (фиксируется или останавливается). Для активных транзакций значение равно NULL. |
is_snapshot | int | 0 = транзакция, отличная от изоляции моментального снимка. 1 = транзакция изоляции моментального снимка. |
session_id | int | Идентификатор сеанса, в рамках которого была инициирована транзакция. |
first_snapshot_sequence_num | bigint | Наименьший порядковый номер транзакции, которая была активна при получении моментального снимка. При выполнении транзакции моментального снимка она формирует моментальный снимок активных в этот момент транзакций. Для транзакций, не связанных с моментальными снимками, в этом столбце отображается 0. |
max_version_chain_traversed | int | Максимальная длина цепочки версий, пройденной в поисках транзакционно согласованной версии. |
average_version_chain_traversed | real | Среднее число версий строк по всем пройденным цепочкам версий. |
elapsed_time_seconds | bigint | Время, истекшее с момента, когда транзакция получила свой порядковый номер. |
pdw_node_id | int | Область применения: Azure Synapse Analytics, Analytics Platform System (PDW) Идентификатор узла, на который находится данное распределение. |
Разрешения
На 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_active_snapshot_database_transactions сообщает о транзакциях, назначенных номеру последовательности транзакций (XSN). Порядковый номер XSN назначается при первом доступе транзакции к хранилищу версий. В следующих примерах показано, как в базе данных, для которой включена изоляция моментальных снимков или READ COMMITTED с использованием управления версиями строк, транзакции назначается номер XSN.
Если транзакция выполняется на упорядочиваемом уровне изоляции, номер XSN назначается при первом выполнении транзакцией какой-либо инструкции, например операции UPDATE, в ходе которой создается версия строки.
Если транзакция выполняется на уровне изоляции моментальных снимков, номер XSN назначается при выполнении какой-либо инструкции языка обработки данных (DML), включая операцию SELECT.
Порядковые номера транзакций последовательно увеличиваются для каждой транзакции, запущенной в экземпляре ядро СУБД.
Примеры
Следующий пример использует тестовый сценарий, содержащий четыре параллельные транзакции, идентифицированные порядковыми номерами (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,
commit_sequence_num,
is_snapshot session_id,
first_snapshot_sequence_num,
max_version_chain_traversed,
average_version_chain_traversed,
elapsed_time_seconds
FROM sys.dm_tran_active_snapshot_database_transactions;
Вот результирующий набор.
transaction_id transaction_sequence_num commit_sequence_num
-------------- ------------------------ -------------------
9295 57 NULL
9324 58 NULL
9387 59 NULL
9400 60 NULL
is_snapshot session_id first_snapshot_sequence_num
----------- ----------- ---------------------------
0 54 0
0 53 0
1 52 57
1 51 57
max_version_chain_traversed average_version_chain_traversed
--------------------------- -------------------------------
0 0
0 0
1 1
1 1
elapsed_time_seconds
--------------------
419
397
359
333
Следующие сведения оценивают результаты из sys.dm_tran_active_snapshot_database_transactions:
XSN-57: так как эта транзакция не выполняется при изоляции моментальных снимков,
is_snapshot
значение иfirst_snapshot_sequence_num
являются0
. Аргументtransaction_sequence_num
показывает, что данной транзакции был присвоен порядковый номер, поскольку параметр READ_COMMITTED_SNAPSHOT или ALLOW_SNAPSHOT_ISOLATION (или оба) имеют значение ON.XSN-58: эта транзакция не выполняется при изоляции моментальных снимков, а те же сведения для XSN-57 применяются.
XSN-59: это первая активная транзакция, которая выполняется при изоляции моментальных снимков. Транзакция считывает данные, зафиксированные транзакцией XSN-57, на что указывает параметр
first_snapshot_sequence_num
. Вывод этой транзакции также указывает на то, что максимальная цепочка версий, пройденная для строки, равна1
и что для каждой строки, к которой был получен доступ, пройдена в среднем1
версия. Это означает, что транзакции XSN-57, XSN-58 и XSN-60 не изменяли строки и были зафиксированы.XSN-60: это вторая транзакция, выполняемая при изоляции моментальных снимков. Вывод содержит такие же сведения, что и для транзакции XSN-59.
См. также
SET TRANSACTION ISOLATION LEVEL (Transact-SQL)
Динамические административные представления и функции (Transact-SQL)
Динамические административные представления и функции, связанные с транзакциями (Transact-SQL)