2011-10-27 60 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

你和[皮纳尔的做法(http://stackoverflow.com/questions/7916210/how-to-identify-and-kill -longest-running-transaction/7916316#7916316)给出不同的结果。您的查询当前列出了22个交易,其中session_id = NULL,而Pinals仅显示该查询本身的交易(Session_Id = 57)。为什么? –

+1

@TimSchmelter - 因为我的查询列出了问题中指定的**交易**(包括内部系统的交易),而Pinal目前正在执行可能参与或可能不参与交易的陈述。如果你的报告查询只是做一个'select'查看事务是不会有帮助的。 –

+8

@Tim Schmelter:Pinal网站中的“权威”一词应被视为某种形式的幽默,而不是实际的“权威”。 – gbn

4

在SQL Server Management Studio中,通过右击工作数据库 - >报告 - >所有交易,您可以找到持续交易的ID。 确定交易的ID后,您应该做的就是创建一个新的查询,并运行下面的查询“杀[TRANSACTIONID]” 即:kill 96

+0

嗯,这个数据库中目前没有打开的事务。虽然我的报告同时停止,但我不知道为什么没有其他活动事务,因为至少有一个Web应用程序正在使用这个数据库。不管怎么说,还是要谢谢你。 –