IDbTransaction回滚超时

时间:2009-08-12 08:36:18

标签: c# sql-server ado.net transactions rollback

我正在处理一个有趣的情况,我在一个事务中执行许多数据库更新。如果这些更新因任何原因失败,则回滚事务。

IDbTransaction transaction
try {
    transaction = connection.BeginTransaction();

    // do lots of updates (where at least one fails)

    transaction.Commit();
} catch {
    transaction.Rollback(); // results in a timeout exception
} finally {
    connection.Dispose();
}

我认为上述代码通常被认为是在事务中执行数据库更新的标准模板。

我面临的问题是,虽然正在向SQL Server发出transaction.Rollback(),但它也会在客户端上超时。

是否有区分发出rollback命令的超时和执行完成的命令超时?

提前致谢, 本

1 个答案:

答案 0 :(得分:0)

您应该指定特定的捕获量,即查看抛出的不同异常。如果在处理sql命令时出现错误,则应抛出SqlException,以便捕获不同的异常以区分项目。

您还可以捕获并编程

异常 - 尝试提交事务时发生错误。

InvalidOperationException - 事务已提交或回滚。 -要么- 连接断了。

安德鲁