TransactionScope超时是否过早发生?

| 我正在使用ѭ0进行一些批处理插入和更新。问题是,即使我将ѭ0set的超时设置为一小时,我也在30分钟的长时间操作中遇到超时异常。 同样,在异常之后,它会插入看似随机的批记录。例如,最后一个操作有12440个插入,并且在超时后,有7673条记录插入到表中。
SqlConnection
SqlCommand
的超时都设置为
int.MaxValue
。 我究竟做错了什么? 这是我的代码:
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromHours(1)))
 {
         try
         {
                using (db = new DB())
                {
                //operations here
                }
         }
         catch (Exception ex)
         {
               throw new Exception(\"DB Error:\\r\\n\\r\\n\" + ex.Message);
         }

         transaction.Complete();
} // <--- Exception here: Transaction aborted (Inner exception: Timeout)
    
已邀请:
        10分钟后交易失败吗?如果是这样,您可能要达到在machine.config中设置的“事务管理器最大超时”。如果我没记错的话,如果您尝试将超时设置为大于最大值,那么您的设置将被忽略。尝试增加machine.config中的值,看看是否有帮助。 在随机提交方面,您是否在连接字符串上设置了“ 6”?默认值为
Transaction Binding=Implicit Unbind
。从MSDN:   隐式解除绑定导致连接   与交易分离   结束。拆卸后,额外   对连接的请求是   在自动提交模式下执行。的   System.Transactions.Transaction.Current   执行时不检查属性   交易期间请求   活性。交易完成后   结束,其他请求是   在自动提交模式下执行。 基本上,当事务超时时,将回滚到该点的所有插入,但是使用同一连接完成的所有其他插入将在自动提交模式下完成,在该模式下,将立即提交每个insert语句。这听起来确实与您所看到的场景类似(但是,如果没有完整的代码/再现,很难知道)。     
        我看看是否可以利用SqlBulkCopy类。它应该快得多,并且可以消除长时间超时的需要。     

要回复问题请先登录注册