SQL Server使用ADO.NET默认的事务隔离级别是什么?

62

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


3
@Neolisk:事情往往比表面看起来更加复杂...... https://dev59.com/22kw5IYBdhLWcg3wfKrZ - Remus Rusanu
只是好奇你问题中特别提到了“使用ADO.NET”这一部分?我认为无论是客户端编程世界(Java、.Net、Python等)的提供者,都由数据库引擎驱动而不是提供者。因此,SQL Server的默认隔离级别应该保持不变,无论您是使用ADO.NET还是任何其他客户端提供程序连接到SQL Server数据库。如果我错了,请纠正我。 - RBT
对于其他设置,ADO.NET 和 SQL Server Management Studio 的默认值存在差异。因此,这并不是一个安全的假设。 - Jonathan Allen
2个回答

76

17

hkf的回答对于使用SqlConnection.BeginTransaction()手动启动事务的情况给出了正确的答案。在这种情况下,默认级别是ReadCommitted

然而,在ADO.NET中启动新事务的方式不仅限于手动启动:还可以通过使用System.Transactions命名空间中的类,特别是创建TransactionScope,来自动创建事务。

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

有关更多信息,请参见下面的链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接