NoReady 2016-11-01 22:22 采纳率: 0%
浏览 965

.net 事务的隔离级别,事务为什么事实上没有遵循原子性?

示意代码如下:

             TransactionOptions transOption = new TransactionOptions();
            transOption.IsolationLevel = System.Transactions.IsolationLevel.RepeatableRead;
            using (TransactionScope ts = new TransactionScope(TransactionScopeOption.RequiresNew, transOption))
            {
                //1、增加申请
                dal.Add(apply);

                //2、更新订单状态
                dalOrders.UpdateStatus(orderId, PaymentStatus.等待退款.GetHashCode());

                //提交事务
                ts.Complete();
            }

现在我遇到的奇怪现象是,在数据库压力大的情况下,有万分之一概率出现:事务提交了,但第2步实际上失败了(数据没有更新)。

我的线上环境是:
Windows2008 + .net Framework3.5 + SqServer2008R2,web服务器和Db服务器是分开的。

有谁遇到过这样的情况吗:
1、这是什么原因呢?
2、除了提高事务的隔离级别,还有别的办法吗?

  • 写回答

1条回答 默认 最新

  • NoReady 2016-11-01 22:24
    关注

    1)问题现象
    第1步成功了,第2步失败了,但事务没有回滚而是提交了。

    2)我的运行环境
    Windows2008 + .net Framework3.5 + SqServer2008R2,web服务器和Db服务器是分开的

    评论

报告相同问题?

悬赏问题

  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换