Есть ли способ вывести список открытых транзакций в базе данных SQL Server 2000? - PullRequest
89 голосов
/ 15 декабря 2010

Кто-нибудь знает какой-либо способ перечисления открытых транзакций в базе данных SQL Server 2000?

Я знаю, что могу запросить представление sys.dm_tran_session_transactions в версиях базы данных SQL 2005 (и более поздних), однако это не доступно в SQL 2000.

Ответы [ 3 ]

130 голосов
/ 15 декабря 2010

Для всех баз данных запрос sys.sysprocesses

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

Для текущей базы данных используйте:

DBCC OPENTRAN
22 голосов
/ 15 декабря 2010

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

Информационное сообщение отображается, если в журнале нет активных транзакций.

DBCC OPENTRAN

15 голосов
/ 08 августа 2017

Вы можете получить всю информацию об активной транзакции с помощью запроса ниже

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

и это даст ниже аналогичный результат enter image description here

и вы закрываете эту транзакцию с помощью приведенной ниже справки KILL , ссылаясь на идентификатор сессии

KILL 77
...