none
Connection Timeout bei erstem SQL Datenbank Zugriff RRS feed

  • Allgemeine Diskussion

  • Hallo,

     

    wir habe eine Anwendung die als Datenbank einen SQL Server Express 2008 SP1 verwendet. Anwendung und Server werden per Komplettinstaller an Kunden ausgeliefert und auf dem gleichen Rechner installiert.

    Die erste Verbindung zum SQL Server dauert je nach Rechner teilweise extrem lange. Auf schnellen Rechnern 5 Sekunden, auf anderen Testrechnern bis 90 Sekunden.  Solche Wartezeiten können wir Kunden nicht zumuten.

    Das Problem tritt immer auf nach einem Rechnerneustart, nach längerer Pause oder auch wenn man die sqlservr.exe im Taskmanager abschießt. Wenn die Verbindung dann einmal aktiv war funktioniert alles prima.

     

    Im Moment erzeugen wir beim Programmstart in einer Schleife unsichtbar solange Testverbindungen, bis SQLConnection Open() keine Timeout Exception mehr liefert oder bis der Anwender den Programmstart abbricht.

    Der Server Dienst wird noch vor dem Verbindungstest geprüft, gestartet und gewartet bis der Status auf „Running“ steht.  Das funktioniert reibungslos. Einziges aktives Protokoll ist Shared Memory, es sollte also keine Firewall/Port Probleme geben.

     

    Im Taskmanager kann man das Problem an der Speicherbelegung der sqlservr.exe mitverfolgen. Am Beispiel des 90s Testrechner äußert sich das so:

    Sofort nach dem ersten Verbindungsaufbauversuch erscheint die sqlservr.exe als Prozess im Taskmanager und hat eine Speicherauslastung von ~24MB (32bit Server) / ~48MB (64bit Server). Dann passiert lange Zeit nichts. Irgendwann nach 60-80 Sekunden fällt der Speicherbedarf rapide auf 5-6 MB ab und wächst dann wieder langsam an. Kurz darauf ist die Verbindung verfügbar.

     

    Ist so ein Problem bekannt bzw. was können wir versuchen um es zu beheben?

    • Typ geändert Ionut DumaModerator Freitag, 23. August 2013 07:27 Keine Rueckmeldung des Fragenstellender
    Freitag, 16. August 2013 07:13

Alle Antworten

  • Hallo Thomas,

    zunächst: Leute, die den "SQL Server im m Taskmanager abschießen", sollte sich selbst die Kugel geben ;))

    Überprüft wie viel Zeit der SQL Server mit dem Wiederherstellen der Datenbanken verbringt - (provozierte) Abbrüche erzwingen nämlich das Wiederherstellen des Zustandes, was zusätzliche Zeit Anspruch nimmt.

    Im SQL Server Protokoll finden sich dazu die notwendigen Informationen, wie lange es gedauert hat, bis alle Datenbanken online sind.

    Rechner, auf denen eine SQL Server Instanz läuft, sollten immer heruntergefahren werden (auch bei Kleininstallationen) anstatt einfach "den Stecker zu ziehen". Im übrigen auch für andere Rechner ein No Go, was man sich bei MS-DOSe und Windows 9x noch leisten konnte.

    Sollte es sich um SQL Server Express Instanzen handeln: Für Datenbank sollte die Einstellung Automatisch schliessen abgeschaltet sein. Denn dann benötigen die ersten Verbindungen länger, weil zunächst die Datenbank geöffnet und Kataloginformationen eingelesen werden müssen.

    Gruß Elmar

    Freitag, 16. August 2013 08:09
    Beantworter
  • Der Server Dienst wird noch vor dem Verbindungstest geprüft, gestartet und gewartet bis der Status auf „Running“ steht. 

    Hallo Thomas,

    wieso läuft der SQL Server Dienst nicht permanent, wie man es bei Servern üblicherweise so hat?

    Je nach dem kann das starten des SQL Server schon mal etwas länger dauern, z.B. wenn er zuvor sich sauber herunter gefahren wurde, dann werden ggf. Rollbacks/Commits oder Recoveries durchgeführt, suspekte Datenbank vollständig überprüft so weiter und bevor das nicht durchgelaufen ist, nimmt der SQL Server keine Verbindungen an.

    Sieh mal ins ErrorLog in der Startsequenz, dort wirst Du einen Eintrag finden wie:

    2013-08-12 07:46:58.80 Server      SQL Server is now ready for client connections. This is an informational message; no user action is required.

    Wieviel Zeit liegt zwischem dem Dienststart und diesem Log-Eintrag?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Freitag, 16. August 2013 09:26
  • *****************************************************************************************************
    Dieser Thread wurde mangels weiterer Beteiligung des Fragestellenden ohne bestätigte Lösung abgeschlossen.
    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.
    *****************************************************************************************************

    Ionut Duma, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 23. August 2013 07:28
    Moderator