2011-10-27 5 views

答えて

9

/Unresearchedテストされていないが、

SELECT at.transaction_id, 
     at.transaction_begin_time, 
     st.session_id 
FROM sys.dm_tran_active_transactions at 
LEFT JOIN sys.dm_tran_session_transactions st 
    ON at.transaction_id = st.transaction_id 
ORDER BY transaction_begin_time 

のようなもの?

+0

あなたと[Pinalのアプローチ](http://stackoverflow.com/questions/7916210/how-to-identify-and-kill -longest-running-transaction/7916316#7916316)異なる結果が返されます。クエリでは現在、session_id = NULLのトランザクションはすべて22個のリストになっていますが、Pinalsはこのクエリ自体のトランザクション(Session_Id = 57)のみを示しています。どうして? –

+1

@TimSchmelter - 質問で指定されているように(内部システムを含む)、私のクエリは**トランザクション**をリストしているのに対し、Pinalは現在トランザクションに参加しているかどうかのステートメントを実行しています。あなたのレポートクエリがトランザクションを見て 'select'を行っているだけであれば、助けにはならないでしょう。 –

+8

@Tim Schmelter:Pinalのサイトの "権威"という言葉は、実際の "権威"ではなくユーモアの一種であるとみなすべきです。 – gbn

4

SQL Server Management Studioでは、作業データベース - >レポート - >すべてのトランザクションを右クリックすると、継続するトランザクションのIDを見つけることができます。 トランザクションのIDを決定したら新しいクエリを作成し、次のクエリ "kill [transactionID]"を実行する kill 96

+0

賛成です。このデータベースには現在開いている取引がありません。一方、私のレポートは停止されていますが、少なくともWebアプリケーションがこのDBを頻繁に使用しているため、他のアクティブなトランザクションが存在しないのはなぜですか?とにかくありがとう。 –

関連する問題