2013-12-09 5 views
0

Обычно мы используем SQL Server, но недавно начали тестирование с помощью ODBC.Два разных выбора блокируют друг друга

Наше приложение работает, но запирает себя.

Я отслеживал запросы с помощью Activity Monitor, и, похоже, что существует операция select, выполняемая на таблице. После этого другие операторы select блокируются со значением lck_m_s.

Если я убью первый запрос, остальные работают, и все продолжается.

Он работает, когда мы используем DB-Lib, но не тогда, когда мы используем ODBC ODBC ODBC ODBC.

Есть ли что-нибудь, что я могу сделать, чтобы эти утверждения не блокировали друг друга, когда мы используем ODBC?

Я попытался использовать NOLOCK в запросах, и это решает эту проблему, но вызывает другие. Один из моих коллег рассказал о возможности изменения настроек соединения, которые могут решить эту проблему?

ответ

0

Попробуйте использовать без замков блокировки подсказки в вашем ЕК:

From tablename with(NOLOCK) 
+0

Это может исправить симптом, но я очень заинтересован, чтобы понять, что вызывает проблему поэтому убедитесь, что подобные вещи не случаются снова. Есть идеи? – Stefan

+0

Если вы не используете подсказку nolock, вы выбираете блокировку уровня строки. Я предполагаю, что оба запроса получают доступ к тем же самым строкам, поэтому блокировка пока выполняется. – Maess

+0

А так - так ODBC будет делать это, а SQL Server - нет? (Извините за основные вопросы, я не парень базы данных!) – Stefan

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