SQL - 等待回滚完成

时间:2015-12-29 04:56:16

标签: c# sql sql-server transactions sqlexception

我使用CommittableTransaction删除大量记录,超时时间为300秒。偶尔我收到一个错误

  

SqlException:超时已过期。操作完成之前经过的超时时间或服务器没有响应。

在超时后,SQL似乎自动执行回滚,回滚需要大约200秒才能完成。

但是我当前的C#代码捕获SqlException并检查TransactionStatusAborted)并继续前进。由于回滚正在进行中,我应该等到回滚完成。有没有办法找到回滚状态?或者我该如何处理这种情况?

1 个答案:

答案 0 :(得分:0)

从这里开始 Implementing an Explicit Transaction using CommittableTransaction

  

CommittableTransaction对象可用于函数调用和   线程。但是,应由程序开发人员来处理   异常,特别是在遇到的情况下调用Rollback方法   故障。

我认为你可以在catch块中显式调用Transaction.Rollback(Exception) SqlException。所以你等待完成操作回滚。