2012-04-03 2 views
40

Каков уровень изоляции транзакций по умолчанию для SQL Server с ADO.NET? Я использую стандартную установку SQL Server и обычные классы System.Data.SqlClient.Каков уровень изоляции транзакций по умолчанию для SQL Server с ADO.NET?

+10

Если вы используете нижестоящий элемент, пожалуйста, объясните, почему –

+0

@RemusRusanu: Не дочитав документы, я думаю. (Я не спустил) – Neolisk

+3

@Neolisk: вещи часто сложнее, чем кажется ... http://stackoverflow.com/questions/9851415/sql-server-isolation-level-leaks-across-pooled-connections –

ответ

51

READ COMMITTED - уровень изоляции по умолчанию для СУБД Microsoft SQL Server.

Источник:

Вот как он сравнивает с другими уровнями изоляции:

В документации MSDN для SqlConnection.BeginTransaction() также утверждает Read committed

... Для того, чтобы сбросить уровень изоляции по умолчанию (READ COMMITTED) ...

9

По умолчанию уровень изоляции для TransactionScope - Serializable, который обеспечивает наивысший уровень защиты.

см ссылку ниже для получения дополнительной информации:

+1

Этот ответ кажется более актуальным, поскольку речь идет о транзакциях .NET, а не при использовании TSQL. –

+2

Вопрос относится к ADO NET, который предлагает инструменты для доступа к базе данных из пространства имен System.Data (где, кстати, уровень изоляции по умолчанию установлен в ReadCommitted). В то время как TransactionScope происходит из пространства имен System.Transactions, которое предлагает эти инструменты поверх источника данных в целом (например, веб-службы). – Bronek

+3

Я просто отказался от него, потому что когда в .NET вы вызываете System.Data.SqlClient.SqlConnection.BeginTransaction(), в результате транзакция имеет уровень изоляции ReadCommited, как описывает hkf. – mischka

Смежные вопросы