我们的一款软件解决方案中存在一个非常难以追踪的错误,有时会留下未完成的事务。我们的应用程序在许多站点(即70+)中投入生产,到目前为止,我们只在不同的位置发现过这个问题两次。
我们遇到的问题是由于与SQL Server的持续连接而导致事务未被关闭。使用
运行
谢谢!
我们遇到的问题是由于与SQL Server的持续连接而导致事务未被关闭。使用
dbcc opentran
命令显示出现了单个未关闭的事务。在今天的情况下,这个事务已经从早上9:30开始未关闭直到我们在下午1:00才发现。关闭具有连接的程序将导致事务被关闭/取消,并且当天至此的所有数据都将丢失。运行
dbcc opentran
命令后,它响应打开事务的名称是user_transaction
。尝试使用commit tran user_transaction
关闭它会报错:The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
我理解你几乎永远不想在没有先前连接知识的情况下强制提交事务,但是否有任何方法可以实现呢?在这种情况下,我们关闭了程序,损失了半天的业务数据。谢谢!
KILL
一个处于未决状态的事务,这是你应该关注的,而不是强制提交。 - Remus Rusanu