Ошибка SQL Server 2005, недостаточно системной памяти для выполнения этого запроса - PullRequest
0 голосов
/ 23 июня 2009
Msg 701, Level 17, State 123, Line 1
There is insufficient system memory to run this query.

У меня есть запрос, который использует табличную функцию. Я вызываю функцию несколько раз. Означает ли эта ошибка, что мне не хватает места в стеке? Или я могу настроить параметры памяти моего блока SQL, чтобы это исправить? Есть идеи?

Ответы [ 3 ]

0 голосов
/ 23 июня 2009

Я решил эту проблему, перепроектировав свой запрос для использования 'Multi-Statement Function Function' Этот тип TVF, очевидно, создает временную таблицу на диске, поэтому не страдает от нехватки памяти.

Спасибо

0 голосов
/ 28 февраля 2016

Ссылка взята из этого блога!

Существуют разные альтернативы для решения этой проблемы.

Во-первых, Проверьте настройки SQL Server на наличие «минимальной памяти сервера» и «максимальной памяти сервера». Если вы обнаружили очень небольшую разницу в обоих значениях, увеличьте «max server memory».

Во-вторых, Обнаружены длительные запросы с информацией об использовании памяти, и если этот запрос находится в состоянии ожидания, проверьте и завершите этот процесс. Оптимизация производительности базы данных важна для использования памяти.

В-третьих, Обнаружено использование индекса для долго выполняющихся запросов, поскольку без правильной индексации увеличение количества операций ввода-вывода в вашей системе и его непосредственное влияние на вашу память.

В-четвертых, Проверьте размер файла подкачки виртуальной памяти и увеличьте размер этого файла.

Пятое, Проверьте размер «минимальной памяти на запрос», фактически он равен по умолчанию 1024 КБ, но в редких случаях вы можете уменьшить размер этого параметра. На самом деле, это не рекомендуется, но вы можете попробовать.

В-шестых, Попробуйте выполнить эту команду DBCC, и снова это не рекомендуется, поскольку это может повлиять на общую производительность сервера. Но вы можете попробовать это.

0 голосов
/ 23 июня 2009

Если это огромный запрос и / или система использует множество пользователей, каждый из которых выполняет большие запросы, это неизбежно.

К сожалению, существует известная проблема с SQL Server, где эта ошибка возникает, даже если рабочая нагрузка такая же, как и ранее. Остановка / перезапуск сервера, хотя и является совершенно нелепым, часто решает проблему.

Еще одна вещь, которую вы могли бы рассмотреть, - запустить операторы dbcc free*cache, чтобы очистить память, занятую кэшированием.

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