查询交易已开始但从未结束

时间:2012-07-02 14:13:41

标签: sql-server sql-server-2008

我有时会运行一个查询,它只是挂起。我查看活动监视器(SQL Server 2008 R2)中的进程并显示它,并且只是事务处于打开状态并且它会占用整个服务器。

这没有任何意义,即使这是一个长时间运行的查询,它应该在某个时候超出人们的假设。

我对它进行了跟踪并显示了这一点:

enter image description here

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

BEGIN TRANSACTION
INSERT INTO ... VALUES ...
GO

忘了弗雷德开了个交易然后去吃午饭。由于没有活动请求,因此无法超时。用户必须最终进行explcitly commit或rollback。管理员可以使用KILL强制终止违规会话。如果留在自己的设备上,这样的会话/事务可以保持打开(假设你没有用完日志而你没有重启服务器。)

即使用户 发出COMMIT,也会出现更复杂的情况,如果涉及分布式事务,请参阅How It Works: Orphan DTC Transaction (Session/SPID = -2)