5

我们的一个软件解决方案中存在一个非常难以追踪的错误,该错误有时会留下未处理的交易。我们在多个站点(阅读:70 多个站点)都在生产这个应用程序,今年到目前为止,我们在不同的位置只看到过两次这个问题。

我们遇到的问题是由于与 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.

我可以理解您几乎永远不会在没有事先连接知识的情况下强制提交事务,但是有什么办法吗?在这种情况下,我们关闭了程序,我们丢失了半天的业务价值数据。

谢谢。

4

1 回答 1

8

如果一个事务有可能被另一个连接提交,那么它就不是一个事务。如果这是可能的,它将为解决的问题打开大门。

请参阅此链接:http ://ask.sqlservercentral.com/questions/3865/forcing-a-transaction-to-commit.html

于 2013-06-19T20:25:33.393 回答