2009-02-23 11 views
7

J'utilise SQL Express 2008 en tant que backend pour une application web, le problème est que l'application web est utilisée pendant les heures de bureau donc parfois pendant le déjeuner ou la pause quand aucun utilisateur ne se connecte pendant une période de 20 minutes. en mode veille et libérer son cache.Existe-t-il un moyen d'arrêter SQL Express 2008 à partir d'Idling?

Je suis au courant de cela parce qu'il enregistre quelque chose comme: serveur a repris l'exécution après avoir été 9709 ralenti secondes ou Démarrage de la base de données « xxxxxxx » dans le journal des événements

Je voudrais éviter ce comportement ralenti , est-il de toute façon à configurer SQL Express pour arrêter la marche au ralenti ou au moins élargir la fenêtre de temps à plus de 20 minutes. Ou est ma seule option pour écrire un service qui interroge la base de données toutes les 15 minutes pour le garder en attente? Après avoir lu des articles comme this, il ne semble pas prometteur, mais peut-être qu'il existe un paramètre de hack ou de registre que quelqu'un connaît.

Répondre

8

Ce comportement n'est pas configurable.

Vous devez implémenter une méthode pour interroger la base de données de temps en temps. En outre, comme l'article que vous avez lié à dit, définissez la propriété AUTO CLOSE sur false.

1

Écrivez un fil qui fait une requête simple toutes les quelques minutes. Commencez le fil dans votre global_asax Application_Start et vous devriez avoir terminé!

3

Juste une courte requête SQL comme ceci toutes les quelques minutes empêchera SQLserver d'aller au ralenti:

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

Voici une bonne explication: https://blogs.msdn.microsoft.com/sqlexpress/2008/02/22/understanding-sql-express-behavior-idle-time-resource-usage-auto_close-and-user-instances/

Quelle que soit: Je ne sais pas le temps après sql express va au ralenti. Je suggère d'exécuter le script ci-dessous toutes les 10 minutes (peut-être planificateur de tâches). Cela permettra d'éviter SQL Server Express d'aller au repos:

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

Assurez-vous également que toutes les données de la propriété de bases est définie sur AUTO_CLOSE = FALSE

+0

Il est facile d'utiliser un script batch pour que: \ n –