2012-02-18 2 views
1

У меня есть большая база данных SQL Server 2008 R2 со многими строками, которые постоянно обновляются. Обновление выполняется приложением back-end, которое вызывает хранимые процедуры. В одной из этих хранимых процедур есть курсор SQL, который пересчитывает и обновляет данные. Все это нормально.Время ожидания запроса блокировки превышено - Telerik OpenAccess ORM

Но наш интерфейс веб-приложениям нужно искать через эти строки и этот поиск иногда приводит к

Блокировки времени запроса аут превышен. в Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery() ..

После выполнения некоторых исследований я обнаружил, что лучший способ сделать этот запрос, чтобы работать без проблем, чтобы заставить ее работать с msgstr "читать незафиксированный уровень изоляции". Я обнаружил, что этот параметр можно сделать в настройках Telerik OpenAccess, но это параметр, который влияет на полный проект ORM базы данных. Это не то, что я хочу! Я хочу этот уровень только для этого запроса.

Есть ли способ, чтобы этот конкретный запрос LINQ выполнялся на этом незафиксированном уровне изоляции? Или мы можем сделать этот один запрос для использования подсказки WITH NOLOCK?

+0

Если есть способ намекнуть на наше приложение для резервного копирования с обновлением таким образом, чтобы он помог нам предотвратить эти ошибки блокировки, это тоже было бы интересно. Самое главное, что наш интерфейс может выполнять быстрый поиск. Скорость также важнее, чем согласованность данных. – Tys

+2

Если вы можете редактировать запросы напрямую, вы можете использовать этот оператор для установки изоляции для текущего сеанса: 'SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED' –

+1

Держу пари, что замена вашего решения курсора на решение, основанное на наборе, сократит ваши проблемы с блокировкой и, вероятно, работают лучше. –

ответ

2

Использование

SET LOCK_TIMEOUT -1 

в начале вашего запроса.

ВИДЕТЬ reference manual

Runnung запросы в read uncommitted уровня изоляции (и используя NOLOCK подсказку) может вызвать много странных проблем, вы должны четко понимать, почему вы это делаете и как это может мешать вашей поток данных

+0

Я знаю все о «странных проблемах», которые могут произойти, поэтому я четко заявил, что я наблюдаю и готов принять эти «риски». Если вы знаете, каковы риски, то они уже не такие большие :) – Tys

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