SQL Server зависает, когда у меня есть изоляция моментального снимка в коде - PullRequest
0 голосов
/ 08 февраля 2019

Я установил свою базу данных snapshot_isolation_state_desc = ON

В c # при запуске новой транзакции

var dbTransaction = _myContext.Database.BeginTransaction(IsolationLevel.Snapshot);

// delete

--- точка останова

// вставляем

в точку останова, когда я иду в sql management studio и запрашиваю таблицу, которая зависает, пока я не завершу транзакцию.Я хотел бы, чтобы данные в таблице не просто зависали ... Но я также хочу завершить транзакцию c #.Я использую неправильный уровень изоляции?

Заранее спасибо

1 Ответ

0 голосов
/ 08 февраля 2019

Использую ли я неправильный уровень изоляции?

Да.Уровень изоляции по умолчанию в SSMS READ_COMMITTED, поэтому авторы (код приложения) будут блокировать устройства чтения (запрос SSMS), если вы не включили опцию базы данных READ_COMMITTED_SNAPSHOT.Каждый сеанс может выполняться с различным уровнем изоляции, и поведение каждого из них будет зависеть от выбранного уровня этого сеанса.

Установите желаемый уровень изоляции в окне запросов SSMS перед запросом таблицы, чтобы ваш запрос не выполнялся.заблокирован незафиксированным изменением, внесенным кодом приложения:

SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
...