2013-06-13 5 views
1

У меня есть небольшое приложение с двумя частями:Sql соединения удерживания Уровень изоляции

  1. А часть конфигурации, которая контактирует с базой данных для извлечения данных конфигурации.
  2. Часть импортера данных, которая использует конфигурацию для импорта данных в базу данных.

импортер данных работают в нескольких потоках с использованием операций по IsolationLevel.Snapshot

Команде конфигурации SQL не использует какую-либо операцию.

Импортер данных не может работать одновременно с открытием окна конфигурации.

Моя проблема возникает следующим образом:

1.Open приложение и проверьте конфигурацию. (войдите в окно конфигурации, чтобы проверить все). 2.Run Импорт данных. 3. Установите окно конфигурации.

После открытия окна конфигурации после импорта я получаю сообщение об ошибке от DataReader, в котором говорится, что Snapshot isolation transaction failed accessing database... Однако этот DataReader создан из SqlConnection, у которого нет каких-либо транзакций или IsolationLevel, установленных на нем вообще.

Если я перезапущу приложение, я могу снова открыть окно конфигурации без ошибок.

Является ли .Net или SQLServer держателем IsolationLevel?

Есть ли способ изменить IsolationLevel после того, как он был настроен без создания новой транзакции для всего?

+1

«Команды конфигурации sql не используют транзакции». - это неверно. Каждый оператор DML запускается в транзакции, независимо от того, * вы * открываете ее или нет. Если при запуске оператора не открывается один, SQL Server откроет его. То, что он делает с этой транзакцией после завершения вашего утверждения, зависит от того, в каком режиме находится ваше соединение, - это будет либо режим автоматической фиксации, либо режим неявной транзакции. –

+0

Теперь я понимаю, что изначально я просто использовал отладочные часы Visual Studio и вручную просматривал все свойства транзакции и нашел их равными нулю, что привело меня к такому выводу. – Jastill

ответ

1

Я думаю, что уровень изоляции переносится через пул соединений.

Это дизайн, как указано в этом kb article.

Есть способы обойти это, как в явном определении уровня изоляции транзакций.

Возможно, вы захотите зарегистрироваться this article.

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

  • Нет связанных вопросов^_^