Превышено время ожидания запроса блокировки - Telerik OpenAccess ORM - PullRequest
1 голос
/ 18 февраля 2012

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

Но нашему веб-приложению необходимо выполнить поиск по этим строкам, и этот поиск иногда приводит к превышению периода ожидания запроса блокировки

.at Telerik.OpenAccess.RT.Adonet2Generic.Impl.PreparedStatementImp.executeQuery () ..

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

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

1 Ответ

2 голосов
/ 18 февраля 2012

Используйте

SET LOCK_TIMEOUT -1

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

См. Справочное руководство

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

...