TransactionScope 超时过早发生?

2024-05-07

我在用着TransactionScope进行一些批量插入和更新。问题是,即使我设置了超时,我也会在 30 分钟长的操作中遇到超时异常TransactionScope到一小时。

此外,在异常之后,它会插入看似随机数量的批次记录。例如,最后一个操作有 12440 条插入,超时后有 7673 条记录插入到表中。

的超时时间为SqlConnection and 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 分钟后失败?如果是这样,您可能正在点击事务管理器最大超时 http://msdn.microsoft.com/en-us/library/system.transactions.transactionmanager.maximumtimeout.aspx这是在 machine.config 中设置的。如果我没记错的话,如果您尝试设置大于最大值的超时,那么您的设置将被忽略。尝试增加 machine.config 中的值,看看这是否对您的问题有帮助。

就随机提交而言,您是否设置Transaction Binding=Explicit Unbind在你的连接字符串上?默认值为Transaction Binding=Implicit Unbind. From MSDN http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx:

隐式解除绑定导致连接 当它从事务中分离 结束。分离后,附加 连接上的请求是 在自动提交模式下执行。这 系统.交易.交易.当前 执行时不检查属性 交易期间的请求 积极的。交易完成后 已结束,还有其他请求 在自动提交模式下执行。

基本上,当事务超时时,截至该点的所有插入都将回滚,但使用同一连接完成的任何其他插入都将以自动提交模式完成,其中每个插入语句都将立即提交。这听起来确实与您所看到的场景类似(但如果不看到完整的代码/重现就很难知道)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TransactionScope 超时过早发生? 的相关文章

随机推荐

  • 将 SAML 令牌与 Web 服务 (wsdl) 结合使用

    我已从提供商处获得了 wsdl 文件和 pfx 我致电 IdP 并获取 SAML 令牌 现在我需要将该令牌传递给 WebService 如何使用 SAML 令牌来处理 WebService 我正在使用 NET 4 5 在以下两篇文章的帮助下
  • 不会将字符串转换为十进制 C#(输入字符串的格式不正确。)

    Visual Studio 不会将我的字符串转换为十进制 错误 输入字符串的格式不正确 Code string test 123 95 decimal test1 decimal parse test string being an int
  • Java 支持多行字符串吗?

    来自 Perl 我肯定缺少在源代码中创建多行字符串的 here document 方法 string lt lt EOF create a three line string text text text EOF 在 Java 中 当我从头
  • 使用 opencv warpPerspective() 生成道路的自上而下视图

    我正在尝试实施逆透视映射计算与道路上另一辆车的距离 我知道在应用该函数之前我需要生成一个包含源点和目标点的变换矩阵warpPerspective 但我不知道如何计算目的地点 我在这个论坛和其他网站中搜索 但无法将第一张图片转换为第二张图片
  • 从 Get-ChildItem -Path 返回对象数组

    从 powershell 开始 ls R txt将按目录递归列出文件 或者更好 PS gt Get ChildItem Path C Test Name logs anotherfile txt Command txt CreateTest
  • 需要帮助找出为什么 for 循环的计数器变量被循环内的函数更改

    我的循环内的函数以某种方式改变了我正在迭代的值 但我不确定如何改变 如果描述得很糟糕 我很抱歉 在这个 for 循环内 int k for k 0 k lt 512 k Discardheader d doesnt actually do
  • try..catch VS long if() [重复]

    这个问题在这里已经有答案了 我的项目中有一个复杂的模型结构 有时我必须得到一个deep从中放置价值 它看起来像下面这样 something getSomethongElse getSecondSomething getThirdSometh
  • C++ 致命错误 LNK1120:1 个未解析的外部

    是什么导致了这个错误 我用谷歌搜索了它 我发现的前几个解决方案是库和主函数出了问题 但在我的问题中似乎都很好 我什至重新输入了两者 可能是什么原因造成的 这可能会有所帮助 MSVCRTD lib crtexew obj 错误 LNK2019
  • Doctype的实际使用

    虽然我在 w3 org 上浏览了大量有关 Doctype 的信息并了解不同类型的 doctype 过渡型 严格型 框架集 我还是不太清楚在页面上使用Doctype的实际用途是什么 I mean 是为了阻止开发商 在代码中使用某些标签 例如
  • 为什么 Xampp 控制面板在启动时显示错误访问被拒绝 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我的 Xampp 控制面板遇到问题 当我尝试启动它时 它会弹出一条错误消息 错误 无法创建文件 C xampp xampp control
  • 如何初始化 LinearLayout 变量?

    快速通知 我正在使用SharedPreferences这样我可以在重新打开应用程序时重新加载数据 Problem我有一个LinearLayout在我的应用程序的主要片段中 一切都运行顺利 直到我重新打开应用程序并尝试重新初始化LinearL
  • 如何从 Perl 调用 gnuplot 脚本

    我有一个 gnu gp 文件 grphist conf set terminal canvas Terminal type set to canvas Options are solid butt size 600 400 fsize 10
  • Highcharter 已弃用函数的输出与建议的不同

    我正在用 Josh Kunst 的出色作品制作一个时间序列情节highcharterR 中的库 使用此数据 gt dput t structure c 2 2 267822980 325286564 66697091 239352431 9
  • 如何防止 CouchDB 在更新简单计数器时创建文档修订

    我想将计数器存储在 CouchDB 文档中 并在每个页面视图上递增 CouchDB 将创建本文档的完整修订版 只需 1 次计数器更新 这样会不会占用太多空间 考虑到我一天的点击量为 100 万次 我一天内可能会查看该文档的 100 万次修订
  • 向 ChartJS 数据点添加逗号

    我需要在 ChartJS 图表中的数字中添加逗号 前任 数据点可能是 1032 05 4334 75 8482 46 我需要它显示为 1 032 05 4 334 75 8 482 46 以下是包含当前代码的开发网站的链接 投资计算器 ww
  • 快速分类(分箱)

    我有大量条目 每个条目都是浮点数 这些数据x可以通过迭代器访问 我需要使用像这样的选择对所有条目进行分类10
  • 如何关闭 Grizzly 日志记录?

    如何关闭 Grizzly 的日志记录 我想关闭以下日志记录 Okt 18 2018 8 42 24 AM org glassfish grizzly http server NetworkListener start INFORMATION
  • PCL 点特征直方图 - 分箱

    分箱过程是点特征直方图估计的一部分 结果是b 3bins 如果仅使用三个角度特征 alpha phi theta 其中 b 是 bins 的数量 为什么b 3并不是b 3 假设我们考虑阿尔法 将特征值范围细分为b个区间 您迭代查询点的所有邻
  • 修改 FOR 循环内的索引变量是否是一种好的做法? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 给定代码 for int i 1 i lt 5 i Do work 改变其值是可以接受的i从循环内 例如 for int i 1 i lt 5
  • TransactionScope 超时过早发生?

    我在用着TransactionScope进行一些批量插入和更新 问题是 即使我设置了超时 我也会在 30 分钟长的操作中遇到超时异常TransactionScope到一小时 此外 在异常之后 它会插入看似随机数量的批次记录 例如 最后一个操