Как проверить активные транзакции в SQL Server 2014?
Я использую SQL Server 2014 и хочу знать, как проверить мои активные транзакции?
4 ответов
-
запрос
sys.sysprocesses
SELECT * FROM sys.sysprocesses WHERE open_tran = 1
DBCC OPENTRAN: помогает идентифицировать активные транзакции, которые могут препятствовать усечению журнала. DBCC OPENTRAN отображает информацию о старейшей активной транзакции и старейших распределенных и нераспределенных реплицированных транзакциях, если таковые имеются, в журнале транзакций указанной базы данных. Результаты отображаются только в том случае, если существует активная транзакция в журнале или, если база данных содержит сведения о репликации. Если в журнале нет активных транзакций, отображается информационное сообщение.
sys.dm_tran_active_transactions
возвращает сведения о транзакциях для экземпляра SQL Server. синтаксис
интересно, о сделке ?
транзакция-это единый блок работа. Если транзакция успешно, все изменения данных, сделанные во время транзакции фиксируются и становятся постоянной частью базы данных.
перевод 3. запрос, что комментарии Tharif.
select transaction_id, name, transaction_begin_time
,case transaction_type
when 1 then '1 = Read/write transaction'
when 2 then '2 = Read-only transaction'
when 3 then '3 = System transaction'
when 4 then '4 = Distributed transaction'
end as transaction_type
,case transaction_state
when 0 then '0 = The transaction has not been completely initialized yet'
when 1 then '1 = The transaction has been initialized but has not started'
when 2 then '2 = The transaction is active'
when 3 then '3 = The transaction has ended. This is used for read-only transactions'
when 4 then '4 = The commit process has been initiated on the distributed transaction'
when 5 then '5 = The transaction is in a prepared state and waiting resolution'
when 6 then '6 = The transaction has been committed'
when 7 then '7 = The transaction is being rolled back'
when 8 then '8 = The transaction has been rolled back'
end as transaction_state
,case dtc_state
when 1 then '1 = ACTIVE'
when 2 then '2 = PREPARED'
when 3 then '3 = COMMITTED'
when 4 then '4 = ABORTED'
when 5 then '5 = RECOVERED'
end as dtc_state
,transaction_status, transaction_status2,dtc_status, dtc_isolation_level, filestream_transaction_id
from sys.dm_tran_active_transactions
Если вы хотите узнать больше о активных сеансах, таких как идентификатор сеанса, имя хоста, имя Входа, идентификатор транзакции, имя транзакции, время начала Trnasaction, идентификатор Databse, имя базы данных вы можете использовать ниже sql query
SELECT
trans.session_id AS [SESSION ID],
ESes.host_name AS [HOST NAME],login_name AS [Login NAME],
trans.transaction_id AS [TRANSACTION ID],
tas.name AS [TRANSACTION NAME],tas.transaction_begin_time AS [TRANSACTION
BEGIN TIME],
tds.database_id AS [DATABASE ID],DBs.name AS [DATABASE NAME]
FROM sys.dm_tran_active_transactions tas
JOIN sys.dm_tran_session_transactions trans
ON (trans.transaction_id=tas.transaction_id)
LEFT OUTER JOIN sys.dm_tran_database_transactions tds
ON (tas.transaction_id = tds.transaction_id )
LEFT OUTER JOIN sys.databases AS DBs
ON tds.database_id = DBs.database_id
LEFT OUTER JOIN sys.dm_exec_sessions AS ESes
ON trans.session_id = ESes.session_id
WHERE ESes.session_id IS NOT NULL