Вчера MS SQL Server преподнес мне сюрприз. При создании новой базы данных он выдал ошибку "There is insufficient system memory in resource pool 'internal' to run this query" и "умер" – сервис SQL Server не запускался, а в ERRORLOG сыпались ошибки:
Почему-то мой MS SQL Server 2019 решил, что у него украли всю память и выставил себе в параметр "max server memory" минимально допустимое значение – 128 мегабайт. Все "танцы с бубном" в попытке реанимировать сервер я описывать не буду, просто расскажу решение по шагам.
У MS SQL Server существует два параметра управляющие использованием памяти:Msg 701, Level 17, State 130, Server XYZ, Line 1 There is insufficient system memory in resource pool 'internal' to run this query.
Параметр | Доступный объем памяти | По умолчанию | Минимально допустимое |
min server memory | Минимальный | 0 | 0 |
max server memory | Максимальный | 2 147 483 647 МБ | 128 МБ |
- Находим в реестре строку запуска службы MS SQL Server и добавляем в нее два параметра:
- f - разрешает только одно соединение и запускает экземпляр MS SQL Server в минимальной конфигурации;
- mSQLCMD - разрешает только одно соединение, которое должно идентифицироваться как "sqlcmd" (что бы никто другой не занял единственный коннект).
- Запускам службу MS SQL Server. Если она не запустилась, то можно дальше не читать.
- Подключаемся к MS SQL Server используя sqlcmd и проверяем максимально доступный размер памяти у SQL Server:
select cast(value as integer), cast(value_in_use as integer) from sys.configurations where name = 'max server memory (MB)'
- Параметры "min server memory" и "max server memory" являются расширенными, поэтому для работы с ними значение параметра "show advanced options" устанавливаем в 1:
sp_configure 'show advanced options', 1 go reconfigure go
- Меняем значение параметра "max server memory" на нужное значение (например, значение по умолчанию):
sp_configure 'max server memory (mb)', 2147483647 go reconfigure go
- Меняем значение параметра "show advanced options" обратно на 0:
sp_configure 'show advanced options', 0 go reconfigure go
- Из строки запуска службы MS SQL Server убираем добавленные параметры: "-f -mSQLCMD".
- Перезапускаем службу MS SQL Server.
Огромное спасибо. Только что статья буквально спасла рабочий день, так как SQL при изменении размера памяти решил сглючить, полностью убив работоспособность.
ОтветитьУдалитьСпасибо большое, очень помогло
ОтветитьУдалить