【问题标题】:What is the default ADO.NET isolation level?什么是默认的 ADO.NET 隔离级别?
【发布时间】:2014-07-29 21:34:17
【问题描述】:

我知道如果我使用System.Transactions.TransactionScope 并且不指定隔离级别,它将默认为Serializable。但是,如果我不使用事务范围,而只是使用老式的表适配器怎么办?那么默认的隔离级别是多少呢?

非常感谢。

【问题讨论】:

  • 比较复杂;隔离级别不会在池连接的使用之间重置,因此它还取决于“底层连接的最后一次使用在做什么”
  • @MarcGravell 是的,太好了,谢谢。我的一位同事刚刚给我发了一个链接,其中提到了同样的事情。不完全是成功的坑,以及我在使用 .NET 的 7 年中没有注意到它的原因,我不知道......
  • 但“默认默认值”可能已被读取提交
  • 在了解了这个关于池的令人不安的事实后,我发布了一个关于如何避免这种情况的问题:stackoverflow.com/questions/9851415/…

标签: .net database isolation-level


【解决方案1】:

如果您需要绝对了解您的应用程序数据操作,您可能不想依赖默认值。这些东西可能会在不同的框架版本之间发生变化。

强烈建议明确说明所有数据调用的隔离级别和会话设置 - 通过 TransactionScope(这可能意味着根据情况升级到 DTC)或在目标存储过程调用中明确说明(如果采用的路由)。

有关 DTC / TransactionScope 的更多详细信息:https://stackoverflow.com/a/9075800/1568341

TL;DR

A:读取已提交的 SQLS,但不要假定默认

【讨论】:

    猜你喜欢
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多