2016-12-14 3 views
1

В нашем приложении C# мы не установили уровень изоляции, поэтому я предполагаю, что уровень изоляции по умолчанию идет как Read Committed. Однако в тупике, мы могли видеть, что LockMode приложения являетсяБудет ли изменяться уровень изоляции во время транзакции базы данных?

IsolationLevel = "сериализация (4)"

Что это значит по сериализации (4)? Также будет ли уровень изоляции автоматически конвертировать в другое во время транзакции?

+0

Как вы просматриваете уровень изоляции транзакции в приложении во время тупика? –

+0

Нет, уровень изоляции не изменится сам по себе. Да, вы можете изменить уровень изоляции в транзакции либо через явный «УРОВЕНЬ ИЗОБРАЖЕНИЯ СТАВКИ», либо путем применения табличной подсказки в предложении 'FROM'. Но более вероятной причиной неожиданного уровня изоляции является объединение соединений, которое ранее имело сериализуемую транзакцию: [уровень изоляции не сбрасывается] (https://connect.microsoft.com/SQLServer/feedback/details/243527/sp -reset-соединение-оленья кожа-сброс-уровень-изоляции). Если вы хотите быть уверенным, всегда устанавливайте его явно. –

+0

@RossBush, мы получили журналы тупиков от DBA, у которого есть список процессов и ресурсов в тупике – Antoops

ответ

1

Для оказания помощи другим, я отправляю решение, которое мы нашли. Мы использовали транзакцию с помощью TransactionScope с его конструктором по умолчанию. Его уровень изоляции по умолчанию: serializable, который сделал путаницу. Теперь исправлено использование Read Committed в качестве уровня изоляции явно.

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