2009-02-23 3 views
7

Ich benutze SQL Express 2008 als Backend für eine Webanwendung, das Problem ist, dass die Webanwendung während der Geschäftszeiten verwendet wird, also manchmal während der Mittagspause oder Pause, wenn keine Benutzer für 20 Minuten eingeloggt sind in den Leerlaufmodus und den Cache freigeben.Gibt es eine Möglichkeit, SQL Express 2008 vom Leerlauf zu stoppen?

Ich bin dafür bekannt, weil es so etwas wie protokolliert: Server wieder aufgenommen Ausführung nach oder Leerlauf 9.709 Sekunden seines Starten Datenbank ‚xxxxxxx‘ im Ereignisprotokoll

Ich mag dieses Leerlaufverhalten vermeiden , ist es sowieso, SQL Express zu konfigurieren, um den Leerlauf zu stoppen oder das Zeitfenster auf mindestens 20 Minuten zu erweitern. Oder ist meine einzige Option, einen Dienst zu schreiben, der alle 15 Minuten die Datenbank abfragt, um sie aufzuspulen?

Nach dem Lesen von Artikeln wie this sieht es nicht vielversprechend aus, aber vielleicht gibt es eine Hack- oder Registrierungseinstellung, die jemand kennt.

Antwort

8

Dieses Verhalten ist nicht konfigurierbar.

Sie müssen eine Methode implementieren, um die Datenbank ab und zu abzufragen. Legen Sie außerdem die AUTO CLOSE-Eigenschaft auf false fest, wie in dem Artikel, mit dem Sie verlinkt haben.

1

Schreiben Sie einen Thread, der alle paar Minuten eine einfache Abfrage durchführt. Starten Sie den Thread in Ihrem global.asax Application_Start und Sie sollten fertig sein!

3

Nur eine kurze SQL-Abfrage wie diese alle paar Minuten wird SQLserver aus gehen Leerlauf vermeiden:

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

Hier ist eine gute Erklärung: https://blogs.msdn.microsoft.com/sqlexpress/2008/02/22/understanding-sql-express-behavior-idle-time-resource-usage-auto_close-and-user-instances/

Wie auch immer: Ich weiß nicht die Zeit, nach sql express geht leer. Ich schlage vor, das Skript alle 10 Minuten auszuführen (vielleicht Taskplaner). Dies verhindert, dass SQL Server Express aus gehen Leerlauf:

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

auch sicherstellen, dass alle Datenbanken Eigenschaft auf AUTO_CLOSE = FALSE gesetzt

+0

Es ist leicht, eine Batch-Skript für das verwenden: \ n –

Verwandte Themen