programing

SQL Server 2000 데이터베이스에 열려 있는 트랜잭션을 나열하는 방법이 있습니까?

newsource 2023. 4. 10. 21:57

SQL Server 2000 데이터베이스에 열려 있는 트랜잭션을 나열하는 방법이 있습니까?

SQL Server 2000 데이터베이스에 열려 있는 트랜잭션을 나열하는 방법을 아는 사람이 있습니까?

뷰를 조회할 수 있습니다.sys.dm_tran_session_transactionsSQL 2005(및 그 이후) 데이터베이스 버전에서는 사용할 수 없습니다.

모든 데이터베이스에 대해 sys.sysprocesses를 쿼리합니다.

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

현재 데이터베이스의 경우:

DBCC OPENTRAN

아래 쿼리를 통해 활성 트랜잭션의 모든 정보를 얻을 수 있습니다.

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

그리고 그것은 다음과 같은 결과를 줄 것이다.

세션 ID를 참조하여 아래 KILL 쿼리 도움말에 의해 트랜잭션을 종료합니다.

KILL 77

DBCC OPENTRAN은 로그 절단을 방해할 수 있는 활성 트랜잭션을 식별하는 데 도움이 됩니다.DBCC OPENTRAN은 지정된 데이터베이스의 트랜잭션로그 내에 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제 트랜잭션(있는 경우)에 대한 정보를 표시합니다.로그에 활성 트랜잭션이 있거나 데이터베이스에 복제 정보가 포함된 경우에만 결과가 표시됩니다.

로그에 활성 트랜잭션이 없는 경우 정보 메시지가 표시됩니다.

DBCC 운영 체제

트랜잭션이 두 개 이상 열릴 때마다 아래가 작동하므로 이 옵션을 사용하십시오.

SELECT * FROM sys.sysprocesses WHERE open_tran <> 0

언급URL : https://stackoverflow.com/questions/4449719/is-there-a-way-to-list-open-transactions-on-sql-server-2000-database