Вопрос:
Программа медленно работает и запускается в версии 6.0 и выше при использовании СУБД Microsoft SQL Server. Во время работы наблюдаются повторы операций с текстом сообщения: «Сервер SQL занят или не отвечает». В тексте сообщения может присутствовать код (11;-2), (-2) или др.
Как можно решить данную проблему?
Ответ:
Причина данного поведения программы заключается в нехватке оперативной памяти для приложения Microsoft SQL Server на ПК в условиях высокого потребления памяти другими приложениями. Чаще ошибка наблюдается именно на ПК. На серверах ее возникновение маловероятно.
Чтобы решить данную проблему, нужно поменять минимальный объем памяти у SQL Server. По умолчанию данное значение равно 0. Необходимо задать объем >= 700 МБ. Для выполнения данной операции понадобятся права администратора SQL сервера. Ниже приведена пошаговая инструкция по тому, как это можно сделать:
1. Запустите приложение SQL Server Management Studio (SSMS) на ПК, где наблюдается проблема и подключитесь к экземпляру SQL Server:
2. Нажмите правой кнопкой мыши по экземпляру сервера в обозревателе объектов (Object Explorer) и выберите «Свойства» (Properties):
3. В открывшемся окне перейдите на вкладку «Память» (Memory);
4. Найдите опцию «Минимальное значение памяти в МБ» (Minimum server memory (in MB)) и поменяйте значение на 700:
5. Примените изменения нажав на «ОК».
Примечание: если на данном ПК не установлено приложение SSMS, то значение минимального размера памяти можно изменить воспользовавшись командной строкой:
1. Запустите командную строку;
2. Воспользуйтесь следующей командой, чтобы посмотреть текущее значение минимального размера памяти сервера в МБ. Для корректного выполнения команды требуется указать свое значение во фрагменте «ИМЯ_СЕРВЕРА» (напр. SERVER1 или SERVER2\SQLEXPRESS):
sqlcmd -E -S ИМЯ_СЕРВЕРА -Y 25 -Q "SELECT [name], [value], [value_in_use] FROM sys.configurations WHERE [name] like '%server memory%';"
3. Измените значение минимального размера памяти на 700 воспользовавшись командой ниже. Для корректного выполнения команды требуется указать свое значение во фрагменте «ИМЯ_СЕРВЕРА» (напр. SERVER1 или SERVER2\SQLEXPRESS):
sqlcmd -E -S ИМЯ_СЕРВЕРА -Q "sp_configure 'show advanced options', 1;" sqlcmd -E -S ИМЯ_СЕРВЕРА -Q "RECONFIGURE" sqlcmd -E -S ИМЯ_СЕРВЕРА -Q "sp_configure 'min server memory', 700;" sqlcmd -E -S ИМЯ_СЕРВЕРА -Q "RECONFIGURE"
Внимание! Более подробную информацию по этой теме можно найти на официальном сайте Microsoft, по ссылке.