События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодняЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Область применения: SQL Server
База данных SQL Azure Управляемый экземпляр SQL Azure
Атрибут | Значение |
---|---|
Название продукта | SQL Server |
ИД события | 1204 |
Источник событий | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | LK_OUTOF |
Текст сообщения | Экземпляру компонента SQL Server Database Engine не удается получить ресурс LOCK в данный момент времени. Запустите инструкцию повторно, когда число активных пользователей уменьшится. Попросите администратора баз данных проверить конфигурацию блокировки и памяти для данного экземпляра либо выполнить проверку давно выполняющихся транзакций. |
Во время выполнения запросы часто получают доступ к ресурсам и снимают блокировку доступа к ним. Получение блокировки использует структуры блокировки из доступного пула структур блокировки. Если новые блокировки не удается получить, так как в пуле нет дополнительных структур блокировки, возвращается сообщение об ошибке 1204. Эта проблема может быть вызвана любой из следующих причин:
SQL Server не может выделить больше памяти, так как другие процессы используют его, или так как SQL Server использовал всю память и достиг значения, настроенного с помощью параметра конфигурации максимальной памяти сервера.
Диспетчер блокировки не может использовать более 60 процентов памяти, доступной для SQL Server, и пороговое значение уже выполнено.
Вы настроили блокировки параметров конфигурации системной хранимой процедуры sp_configure (Transact-SQL) в нединамическую, нединамическую.
Вы включили флаги трассировки 1211, 1224 или обоих в SQL Server для управления поведением эскалации блокировки, и выполняете запросы, требующие большого количества блокировок.
Если вы подозреваете, что SQL Server не может выделить достаточно памяти, попробуйте выполнить следующие действия.
Определите, использовал ли любой другой клерк памяти в SQL Server большую часть настроенной памяти SQL Server, используя следующий запрос:
SELECT pages_kb, type, name, virtual_memory_committed_kb, awe_allocated_kb
FROM sys.dm_os_memory_clerks
ORDER BY pages_kb DESC;
Затем уменьшите потребление памяти для этого клерка памяти, чтобы разрешить блокировке памяти использовать больше ресурсов. Дополнительные сведения см. в статье об устранении неполадок с нехваткой памяти или нехваткой памяти в SQL Server.
Если другие приложения, кроме SQL Server, используют ресурсы, попытайтесь закрыть эти приложения или запустите их на отдельном сервере. В этом случае память освобождается от других процессов для SQL Server.
Если вы настроили максимальную память сервера, увеличьте максимальный параметр памяти сервера.
Если вы подозреваете, что диспетчер блокировки использовал максимальный объем доступной памяти, определите транзакцию, которая держит большинство блокировок и завершите ее. Следующий скрипт определяет транзакцию с наибольшим числом блокировок:
SELECT request_session_id, COUNT (*) num_locks
FROM sys.dm_tran_locks
GROUP BY request_session_id
ORDER BY count (*) DESC;
Выполните наивысший идентификатор сеанса и завершите его с помощью команды KILL .
Если вы используете значение locks
, отличное от по умолчанию, используйте sp_configure
для изменения значения locks
его параметра по умолчанию с помощью следующей инструкции:
EXEC sp_configure 'locks', 0;
Если при использовании флагов трассировки SQL Server 1211, 1224 или обоих, проверьте их использование и отключите при выполнении запросов, требующих большого количества блокировок. Дополнительные сведения см. в статье DBCC TRACEON — флаги трассировки (Transact-SQL) и устранение проблем блокировки, вызванных эскалацией блокировки в SQL Server.
События
31 мар., 23 - 2 апр., 23
Самое большое событие обучения SQL, Fabric и Power BI. 31 марта – 2 апреля. Используйте код FABINSIDER, чтобы сэкономить $400.
Зарегистрироваться сегодня