Есть ли способ отключить SQL Express 2008 от холостого хода?

Я использую SQL Express 2008 в качестве серверной части для веб-приложения, проблема в том, что веб-приложение используется в рабочее время, поэтому иногда во время обеда или перерыва, когда в течение 20 минут нет пользователей, вошедших в систему, SQL Express перейдет в режим ожидания mode и освободите его кеш.

Я знаю об этом, потому что он регистрирует что-то вроде:

Сервер возобновил выполнение после простоя 9709 секунд

или

Запуск базы данных xxxxxxx в журнале событий

Я бы хотел избежать этого бездействия. Есть ли способ настроить SQL Express, чтобы он останавливался на холостом ходу или, по крайней мере, расширял временное окно до более чем 20 минут? Или мой единственный вариант написать сервис, который опрашивает БД каждые 15 минут, чтобы поддерживать его в буфере?

После прочтения подобных статей это не выглядит многообещающим, но, возможно, кто-то знает о взломе или настройке реестра.

Ответов (4)

Решение

Такое поведение нельзя настроить.

Вам действительно нужно реализовать метод для частого опроса базы данных. Кроме того, как и в статье, на которую вы ссылаетесь, установите для свойства AUTO CLOSE значение false.

Просто короткий SQL-запрос, подобный этому, каждые несколько минут предотвратит простоя SQLserver:

SELECT TOP 0 NULL
  FROM [master].[dbo].[MSreplication_options]
GO

Вот хорошее объяснение: https://blogs.msdn.microsoft.com/sqlexpress/2008/02/22/understanding-sql-express-behavior-idle-time-resource-usage-auto_close-and-user-instances/

Как бы то ни было: я не знаю, сколько времени после того, как sql экспресс простаивает. Я предлагаю запускать приведенный ниже сценарий каждые 10 минут (возможно, планировщик задач). Это предотвратит SQL бездействие Server Express:

SELECT TOP 0 NULL FROM [master].[dbo].[MSreplication_options] GO

Также убедитесь, что для свойства всех баз данных установлено значение AUTO_CLOSE = FALSE

Напишите поток, который выполняет простой запрос каждые несколько минут. Запустите поток в вашем global.asax Application_Start, и все готово!