SQL Server не может получить ресурс LOCK в настоящее время - что делать?

У меня есть хранимая процедура на SQL Server 2005, выполняющая сериализуемую транзакцию. Внутри этой транзакции он выбирает таблицу с блокировкой строк. В конце процедуры, после отката / фиксации, он устанавливает уровень изоляции транзакции на Read Commited.

Эта процедура выполняется, разные процессы имеют одновременный доступ, управляемый этими ограничениями, но внезапно, через некоторое время, некоторые процессы выдают исключение Sql:

The instance of the SQL Server Database Engine cannot obtain a LOCK resource at this time. Rerun your statement when there are fewer active users. Ask the database administrator to check the lock and memory configuration for this instance, or to check for long-running transactions.

Это непредсказуемо, это может произойти рано или через час.

Что я могу сделать, чтобы решить эту проблему?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
11 451
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

у вас слишком много замков для вашей памяти. увеличьте оперативную память или перепишите запросы, чтобы использовать меньше блокировок. serializable - это блокировка. тебе это действительно нужно?

+1 Полностью согласен. Вам действительно нужна сериализуемая транзакция?

Mitch Wheat 14.11.2008 17:28

Это то, что делает менеджер предприятия при сохранении изменений таблицы. Кто-то из команды SQL Server решил, что мне нужен уровень трансизоляции serializalbe.

Ian Boyd 30.05.2009 00:37

Я решил эту ошибку, уменьшив диапазон данных, передаваемых между серверами, это означает, что если вы выбираете 1000 записей, попробуйте сократить транзакцию на два пакета для 500 записей и еще 500 записей продолжайте уменьшать число, пока ошибка не прекратится

Другие вопросы по теме