sys.dm_tran_active_transactions (Transact-SQL)

Применимо к:SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)

Возвращает сведения о транзакциях для экземпляра SQL Server.

Примечание.

Чтобы вызвать это из Azure Synapse Analytics или Analytics Platform System (PDW), используйте имя sys.dm_pdw_nodes_tran_active_transactions. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.

Имя столбца Тип данных Description
transaction_id bigint Идентификатор транзакции на уровне экземпляра, а не на уровне базы данных. Он уникален во всех базах данных только в пределах экземпляра, но не уникален во всех экземплярах сервера.
name nvarchar(32) Имя транзакции. Оно перезаписывается, если транзакция помечена, и помеченное имя заменяет имя транзакции.
transaction_begin_time datetime Время начала транзакции.
transaction_type int Тип транзакции.

1 = транзакция чтения-записи

2 = транзакция только чтения

3 = системная транзакция

4 = распределенная транзакция
transaction_uow uniqueidentifier Идентификатор единицы работы транзакции (UOW) для распределенных транзакций. MS DTC использует идентификатор UOW для работы с распределенной транзакцией.
transaction_state int 0 = Транзакция еще не была полностью инициализирована.

1 = Транзакция была инициализирована, но еще не началась.

2 = Транзакция активна.

3 = Транзакция закончилась. Используется для транзакций «только для чтения».

4 = Фиксирующий процесс был инициализирован на распределенной транзакции. Предназначено только для распределенных транзакций. Распределенная транзакция все еще активна, но дальнейшая обработка не может иметь место.

5 = Транзакция находится в готовом состоянии и ожидает разрешения.

6 = транзакция зафиксирована.

7 = Производится откат транзакции.

8 = транзакция была откатена.
transaction_status int Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
transaction_status2 int Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
dtc_state int Применимо к: База данных SQL Azure (первоначальный выпуск через текущий выпуск).

1 = ACTIVE

2 = PREPARED

3 = COMMITTED

4 = ABORTED

5 = RECOVERED
dtc_status int Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
dtc_isolation_level int Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
filestream_transaction_id varbinary(128) Применимо к: База данных SQL Azure (первоначальный выпуск через текущий выпуск).

Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.
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_transactions с другими динамическими представлениями для поиска сведений об активных транзакциях

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

SELECT
  GETDATE() as now,
  DATEDIFF(SECOND, transaction_begin_time, GETDATE()) as tran_elapsed_time_seconds,
  st.session_id,
  txt.text, 
  *
FROM
  sys.dm_tran_active_transactions at
  INNER JOIN sys.dm_tran_session_transactions st ON st.transaction_id = at.transaction_id
  LEFT OUTER JOIN sys.dm_exec_sessions sess ON st.session_id = sess.session_id
  LEFT OUTER JOIN sys.dm_exec_connections conn ON conn.session_id = sess.session_id
    OUTER APPLY sys.dm_exec_sql_text(conn.most_recent_sql_handle)  AS txt
ORDER BY
  tran_elapsed_time_seconds DESC;

См. также

sys.dm_tran_session_transactions (Transact-SQL)
sys.dm_tran_database_transactions (Transact-SQL)
Динамические административные представления и функции (Transact-SQL)
Динамические административные представления и функции, связанные с транзакциями (Transact-SQL)