8651: Could not perform the operation because the requested memory grant was not available
SQL ServerЧто это значит?
Выделение памяти, необходимое запросу, было недоступно, и операцию выполнить не удалось. В отличие от 8645, это не ожидание, а прямой отказ в предоставлении запрошенного большого блока памяти; обычно указывает на серьёзную нехватку памяти.
Почему возникает?
Доступная память запросов на сервере не может удовлетворить грант, запрошенный одним оператором (например, очень большой сортировкой/хешированием). Причиной могут быть чрезмерно высокие оценки памяти, низкий max server memory, внешняя нагрузка на память или низкий лимит Resource Governor — REQUEST_MAX_MEMORY_GRANT_PERCENT (группа рабочей нагрузки) или MAX_MEMORY_PERCENT (пул ресурсов).
Как исправить
Оптимизируйте запросы, раздувающие выделения памяти (обновление статистики, правильное индексирование, разбиение запроса). Отслеживайте общую и доступную память; проверьте параметр max server memory и нагрузку на память со стороны внешних приложений. Если используется Resource Governor, проверьте параметры REQUEST_MAX_MEMORY_GRANT_PERCENT группы рабочей нагрузки и MAX_MEMORY_PERCENT пула. Перенесите пакетные задания, интенсивно использующие память, на часы низкой нагрузки.
Ещё по этой СУБД
- 7202Could not find server 'name' in sys.servers
- 40501The service is currently busy. Retry the request after 10 seconds
- 8645A time out occurred while waiting for memory resources to execute the query
- 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
- 1934INSERT/UPDATE failed because the following SET options have incorrect settings