Есть ли способ остановить SQL Express 2008 от холостого хода? - PullRequest
7 голосов
/ 24 февраля 2009

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

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

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

или

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

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

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

Ответы [ 4 ]

8 голосов
/ 24 февраля 2009

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

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

3 голосов
/ 25 февраля 2015

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

SELECT TOP 0 NULL
  FROM [master].[dbo].[MSreplication_options]
GO
2 голосов
/ 24 февраля 2009

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

0 голосов
/ 26 июля 2016

Вот хорошее объяснение: 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

...