【发布时间】:2019-04-06 05:05:42
【问题描述】:
我正在使用远程连接来连接客户端和服务器,在顺利工作 6 个月后,事务卡住了,可能是因为在事务运行时连接中断。
在连接丢失的情况下,如何防止事务卡住? 如果在一段时间内没有完成,SQL不是应该取消事务吗?
更新:
我正在使用默认的 SQL Server 隔离(已提交读),这是复制它的方法:
我按照建议尝试了 SET XACT_ABORT 为 ON,但没有运气,问题仍然存在,这是复制此问题的事件序列:
在事务中间设置断点并启动 调试
一旦事务到达断点,断开 来自网络的计算机(模拟出现异常 断线)
继续调试进程,等待.NET SqlClient 抛出错误(无网络)
将 PC 插回网络(模拟 Internet 连接已 返回)
SQL Server 未完成或回滚事务,因此 在事务的第一个中间使用的表被锁定
【问题讨论】:
-
如果连接断开,它应该会自动回滚。你有没有证实你没有被红鲱鱼愚弄? Find locks 和 check active queries。
-
SQL 没有完成事务,我只是在下面添加了复制此问题所需的步骤
标签: sql-server transactions transaction-isolation