What is the default transaction isolation level for SQL Server with ADO.NET? I am using a default installation of SQL Server and just the normal System.Data.SqlClient classes.
-
3@Neolisk: Things are often more complex than they seem... http://stackoverflow.com/questions/9851415/sql-server-isolation-level-leaks-across-pooled-connections – Remus Rusanu Nov 05 '13 at 15:11
-
Just curious about the fragment of your question which specifically mentions `with ADO.NET`? I believe irrespective of the provider w.r.t. the client side programming world (Java, .Net, Python etc) the default is driven by the database engine and NOT the provider. So the default isolation level for SQL Server should remain same irrespective of whether you are using ADO.NET or any other client side provider to connect to a SQL Server database. Kindly correct me if I'm wrong. – RBT Aug 24 '16 at 02:46
-
For other settings, there are differences between the defaults for ADO.NET and SQL Server Management Studio. So that's not really a safe assumption. – Jonathan Allen Aug 25 '16 at 09:06
2 Answers
READ COMMITTED is the default isolation level for the Microsoft SQL Server Database Engine.
Source:
Here is how it compares to other isolation levels:
The MSDN documentation for SqlConnection.BeginTransaction()
also states Read committed
... To reset the isolation level to the default (READ COMMITTED) ...
The accepted answer by hkf gives the correct answer for transactions started manually with SqlConnection.BeginTransaction()
. Here, the default level is ReadCommitted.
However, this is not the only way to start a new transaction in ADO.NET: Transactions can also be created automatically by using the classes from the System.Transactions
namespace, in particular, by creating a TransactionScope
.
Contrary to transactions started manually, transactions created by the System.Transactions
infrastructure (and, thus, by a TransactionScope
) are Serializable.
See below link for more information:

- 167,459
- 57
- 363
- 519

- 380
- 3
- 10