如果在使用.Net中的TransactionScope回滚事务时网络丢失会发生什么

时间:2011-03-21 06:19:41

标签: .net sql-server

我有以下代码: -

 using (var transactionScope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required))
        {
            bool IsCreated=false;
            context.CommandTimeout = 120;
            if(IsCreated)
              transactionScope.Complete();                             
        }

现在如果未调用transactionScope.Complete(),则一旦使用范围为Complete,则回滚事务。但是,如果在此之前存在网络中断,那么该事务将如何回滚。当我尝试移除网络电缆时,它会回滚,但我不明白它是如何回滚的。根据我的理解,如果在命令超时内没有提交Transaction,它将被sql server回滚。请验证。

1 个答案:

答案 0 :(得分:1)

CommandTimeout仅影响发出的命令 - 而不是整个事务。 DTC有一个超时(也可以通过一些构造函数重载),但主要是用于分布式死锁场景。

方案中,我怀疑更多的情况是控制器会对所涉及的所有系统进行监控,并在其中任何一个未能响应/保持联系时报告失败。