我使用CommittableTransaction
删除大量记录,超时时间为300秒。偶尔我收到一个错误
SqlException:超时已过期。操作完成之前经过的超时时间或服务器没有响应。
在超时后,SQL似乎自动执行回滚,回滚需要大约200秒才能完成。
但是我当前的C#代码捕获SqlException
并检查TransactionStatus
(Aborted
)并继续前进。由于回滚正在进行中,我应该等到回滚完成。有没有办法找到回滚状态?或者我该如何处理这种情况?
答案 0 :(得分:0)
从这里开始 Implementing an Explicit Transaction using CommittableTransaction
CommittableTransaction对象可用于函数调用和 线程。但是,应由程序开发人员来处理 异常,特别是在遇到的情况下调用Rollback方法 故障。
我认为你可以在catch块中显式调用Transaction.Rollback(Exception) SqlException。所以你等待完成操作回滚。