SQL Server 2000データベースで開いているトランザクションを一覧表示する方法はありますか?


100

SQL Server 2000データベースで開いているトランザクションを一覧表示する方法を知っている人はいますか?

sys.dm_tran_session_transactionsSQL 2005以降のデータベースバージョンのビューをクエリできることは承知していますが、SQL 2000では使用できません。

回答:


155

すべてのデータベースに対してsys.sysprocessesをクエリします

SELECT * FROM sys.sysprocesses WHERE open_tran = 1

現在のデータベースの使用:

DBCC OPENTRAN

34

以下のクエリを使用して、アクティブなトランザクションのすべての情報を取得できます

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

うわー、これはとてもいいです。提供されるデータの量が好きです。唯一の欠点は、実行するために管理者である必要があることです。DBCCOPENTRANで必要な権限は少なくなります。しかし、それでも...非常に良い
Yogurtu

とても便利です、ありがとう!OPの質問(SQL 2000)に答えた場合、それは受け入れられた答えであるはずです。賛成票を持っている...
リバースエンジニア

すごい、欲しいものを手に入れた。
-Vipul

23

DBCC OPENTRANは、ログの切り捨てを妨げている可能性のあるアクティブなトランザクションを特定するのに役立ちます。DBCC OPENTRANは、指定されたデータベースのトランザクションログ内の最も古いアクティブトランザクションと、最も古い分散および非分散レプリケートトランザクション(存在する場合)に関する情報を表示します。結果は、ログにアクティブなトランザクションが存在する場合、またはデータベースに複製情報が含まれている場合にのみ表示されます。

ログにアクティブなトランザクションがない場合は、情報メッセージが表示されます。

DBCC OPENTRAN


0

トランザクションが複数のトランザクションを開くときは常に、以下が機能するため、これを使用してください 。SELECT * FROM sys.sysprocesses WHERE open_tran <> 0

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.