Наблюдаемая проблема и error message
:
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
Среда: SQL Server 2005 Standard Edition на Windows Server 2003 Standard Edition. Виртуализировано на виртуальной машине — с 8 ГБ ОЗУ. Автоматические приложения обрабатывают данные — считывают необработанные данные и записывают результаты в базу данных. Эти приложения получают сообщение об ошибке и аварийно завершают работу. (Есть также запланированные задания по резервному копированию базы данных и обслуживанию индексов.)
Такая же ошибка никогда не наблюдалась в аналогичной системе с корпоративным выпуском sql server 2005 и корпоративным выпуском Windows 2003.
Я уже искал в Интернете и нашел некоторые ответы. Но напр. SQL Server не может получить LOCK ресурс в это время - что делать? не помогло в моем случае
Один источник предложил проверить:
SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id
ORDER BY count (*) DESC
За один сеанс получилось 10.
Настройки памяти и блокировки находятся в настройках по умолчанию.
Моя текущая идея состоит в том, чтобы очистить большую часть данных, которые устарели и могут быть удалены.
Есть ли у кого-нибудь другие идеи, как решить проблему блокировки ресурсов? Что именно является его причиной? Позволяет ли стандартная версия SQL Server меньше ресурсов - проблема связана с версией сервера sql? Как решить проблему?