Проблема IsolationLevel.Невозможно получить доступ к таблице, даже если установлено значение ReadUncommited - PullRequest
1 голос
/ 22 марта 2011

У меня есть проблемы с этим фрагментом кода. Когда я запускаю его, я хочу, чтобы он НЕ блокировал таблицы, используемые транзакцией. Для достижения этой цели я установил уровень изоляции ReadUncommited.

Проблема в том, что он все еще блокирует таблицу, он действует так, как если бы изоляционный уровень был Сериализуемым. Я использую SQL Server 2008

Вот код:

using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions() { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted }))
{
   while (true)
   {
      using (SqlConnection connection = new SqlConnection(ConnectionString))
      {
         connection.Open();

         Console.WriteLine(Transaction.Current.IsolationLevel);

         SqlUtils.ExecuteNonQuery(connection, "INSERT INTO test4 (test) VALUES ('ASDASDASD')");
      }
      Thread.Sleep(1000);
   }

   scope.Complete();
}

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Уровень изоляции транзакции Read Uncommitted применяется только тогда, когда вы читаете данные (как следует из названия).Он будет читать данные, которые еще не были зафиксированы.

Я не знаю, как остановить SQL Server, чтобы он блокировал таблицы при вставке или обновлении данных.

2 голосов
/ 22 марта 2011

ReadUncommitted, как следует из названия, воздействует на читателей - т. Е. Должны ли операции чтения принимать блокировки чтения и блокировки диапазона ключа; должны ли они уважать существующие замки и т. д.

I Интересно предложит ли IsolationLevel.Chaos что-нибудь здесь, но, пожалуйста, не используйте это. Пожалуйста.

Если ваш конкурирующий считыватель должен видеть незафиксированные данные, измените уровень изоляции считывателя . Кроме того, само собой разумеется, но длительные транзакции (и в частности транзакции DTC / LTM) не рекомендуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...