В настоящее время SQL Server не может получить ресурс LOCK. Что делать? - PullRequest
2 голосов
/ 14 ноября 2008

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

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

Экземпляр SQL Server Database Engine не может получить LOCK ресурс в это время. Перезапустите ваш заявление, когда есть меньше активных пользователи. Спросите администратора базы данных проверить замок и память Конфигурация для этого экземпляра или проверка на длительные транзакции.

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

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

Ответы [ 2 ]

3 голосов
/ 14 ноября 2008

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

0 голосов
/ 26 апреля 2017

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

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