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)
没有找到相关结果
已邀请:
2 个回复
导力疵谜
。从MSDN: 隐式解除绑定导致连接 与交易分离 结束。拆卸后,额外 对连接的请求是 在自动提交模式下执行。的 System.Transactions.Transaction.Current 执行时不检查属性 交易期间请求 活性。交易完成后 结束,其他请求是 在自动提交模式下执行。 基本上,当事务超时时,将回滚到该点的所有插入,但是使用同一连接完成的所有其他插入将在自动提交模式下完成,在该模式下,将立即提交每个insert语句。这听起来确实与您所看到的场景类似(但是,如果没有完整的代码/再现,很难知道)。
乐遣杀屎