【问题标题】:What is the default transaction isolation level for SQL Server with ADO.NET?带有 ADO.NET 的 SQL Server 的默认事务隔离级别是什么?
【发布时间】:2023-03-14 16:32:01
【问题描述】:

SQL Server 与 ADO.NET 的默认事务隔离级别是什么?我使用的是默认安装的 SQL Server 和普通的 System.Data.SqlClient 类。

【问题讨论】:

  • @Neolisk:事情往往比看起来更复杂......stackoverflow.com/questions/9851415/…
  • 只是对您的问题中特别提到with ADO.NET 的片段感到好奇?我相信不管提供者w.r.t.客户端编程世界(Java、.Net、Python 等)默认由数据库引擎驱动,而不是提供者。因此,无论您是使用 ADO.NET 还是任何其他客户端提供程序连接到 SQL Server 数据库,SQL Server 的默认隔离级别都应该保持不变。如果我错了,请纠正我。
  • 对于其他设置,ADO.NET 和 SQL Server Management Studio 的默认设置之间存在差异。所以这并不是一个真正安全的假设。

标签: sql-server-2008 transactions ado.net


【解决方案1】:

READ COMMITTED 是 Microsoft SQL Server 数据库引擎的默认隔离级别。

来源:

这是它与其他隔离级别的比较:

SqlConnection.BeginTransaction() 的 MSDN 文档还声明了 Read committed

...将隔离级别重置为默认值(READ COMMITTED)...

【讨论】:

    【解决方案2】:

    hkf 接受的答案为使用SqlConnection.BeginTransaction()手动 开始的交易提供了正确答案。此处,默认级别为 ReadCommitted。

    但是,这不是在 ADO.NET 中启动新事务的唯一方法:还可以使用 System.Transactions 命名空间中的类自动创建事务,特别是通过创建TransactionScope。

    与手动启动的事务相反,由System.Transactions 基础架构(因此由TransactionScope)创建的事务是Serializable。

    查看以下链接了解更多信息:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-26
      • 2010-12-12
      • 2014-09-27
      • 2011-09-13
      相关资源
      最近更新 更多