zoukankan      html  css  js  c++  java
  • The operation is not valid for the state of the transaction.

    DTC TIMEOUT
    The operation is not valid for the state of the transaction.


    解决方法:TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, new TimeSpane(0, 5, 0)) //五分鐘。預設是一分鐘。

    1.没事不要用TransactionScope,这玩意并不像文档里说的那样,只有"必要"的情况下,才会
    升级本地事务到分布式事务.实际情况是:在Scope中,只要你打开两条连接,就算是这俩连接
    都是相同的数据库,也会发生分布式事务.据说,同样的操作,分布式事务要慢上10倍.

    2.TransactionScope被Abort时(比如Timeout),不会释放它持有的连接.这是一个bug,内部有
    一个hotfix出来,但是还没有发布。

    3.在比较大的负载情况下(不大的情况也有,但是少.不能确认是否是负载的问题.),可能会存
    在System.Transactions.CommittableTransaction.Commit被永远阻塞的情况.后果是:你的
    方法永远不会返回,TransactionScope拿到的连接永远不会返回给连接池,从数据库端看这些
    连接状态都正常,从你的应用程序中看,它们都是活动的,所以,你永远都不可能再使用它们,
    它们成了僵尸...这是一个已经确认的bug,但是没有hotfix.

    4.如果不得不使用TransactionScope,先研究研究kb916002.

    5.如果可能,不要用分布式事务。

  • 相关阅读:
    键盘弹出与隐藏对TextView的影响
    iOS9 警告框
    计时器的写法
    iOS提交被拒
    新生活
    批量删除wps文档里的回车符的方法!WPS使用技巧分享!
    学习笔记计划
    监控服务器的注册及登陆并邮件通知的代码(go / python)
    Python调用C代码
    导入用户到Discuz论坛
  • 原文地址:https://www.cnblogs.com/zjp8023/p/DTC.html
Copyright © 2011-2022 走看看