Проблема параллелизма данных в Windows Service - PullRequest
0 голосов
/ 14 мая 2011

У меня проблема со вставкой данных в таблицу SQL 2008.

У меня есть 6 SP, и все они выполняются в транзакции из кода ADO.Net.Первые 3 SP удаляют данные, а следующие 3 SP вставляют данные в эти таблицы.Эти SP являются частью службы Windows.Я заметил, что когда работает один экземпляр службы, все работает нормально, но если запущено несколько экземпляров службы, я сталкиваюсь с проблемой параллелизма данных.Один из SP выдает ошибку с нарушением PrimaryKey из одного сервиса, в то время как тот же SP с одинаковыми данными, запущенными с другого сервера, работает нормально.

Я установил уровень изоляции транзакции RepeatableRead в коде ADO.Net.

Может кто-нибудь сказать мне, что мне здесь не хватает?Должен ли я использовать HOLDLOCK в SP при вставке данных?

1 Ответ

0 голосов
/ 14 мая 2011

Необходимо повысить уровень изоляции до Serializable, чтобы другой экземпляр не мог обновить данные, пока транзакция выполняется. См. здесь для получения дополнительной информации.

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