8645: A time out occurred while waiting for memory resources to execute the query
SQL ServerЧто это значит?
Истёк тайм-аут запроса при ожидании на семафоре ресурсов (resource semaphore) выделения памяти (memory grant), необходимого для выполнения. Поскольку нехватка памяти не позволила выделить грант, операция была отменена.
Почему возникает?
Параллельные запросы, интенсивно использующие память (большие сортировки, hash join, hash-агрегаты), заняли весь пул памяти запросов; новые запросы встали в очередь на семафоре и завершились по тайм-ауту. Первопричина — завышенные оценки выделения памяти (устаревшая статистика, плохие планы) или недостаток памяти сервера.
Как исправить
Определите запросы, ожидающие или удерживающие память, с помощью sys.dm_exec_query_memory_grants и DMV семафора ресурсов. Обновите статистику и исправьте планы, вызывающие завышенные выделения памяти (подходящие индексы, лучшие оценки). Снизьте параллелизм запросов, интенсивно использующих память; при необходимости ограничьте выделения памяти с помощью Resource Governor. Проверьте конфигурацию памяти сервера (max server memory).
Ещё по этой СУБД
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column
- 7202Could not find server 'name' in sys.servers
- 40501The service is currently busy. Retry the request after 10 seconds
- 8651Could not perform the operation because the requested memory grant was not available
- 5061ALTER DATABASE failed because a lock could not be placed on database
- 3702Cannot drop database because it is currently in use
- 15138The database principal owns a schema in the database, and cannot be dropped