Программа работает медленно при использовании СУБД Microsoft SQL Server

Вопрос:

Программа медленно работает и запускается в версии 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, по ссылке.