Verbindungen entfernen
Der Verbindungspooler entfernt eine Verbindung aus dem Pool, nachdem er längere Zeit inaktiv war oder wenn der Pooler feststellt, dass die Verbindung zum Server getrennt wurde.
Beachten Sie, dass eine unterbrochene Verbindung erst erkannt werden kann, nachdem versucht wurde, mit dem Server zu kommunizieren. Wenn eine Verbindung gefunden wird, die nicht mehr mit dem Server verbunden ist, wird sie als ungültig markiert.
Ungültige Verbindungen werden nur dann aus dem Verbindungspool entfernt, wenn sie geschlossen oder zurückgefordert werden.
Wenn eine Verbindung zu einem verschwundenen Server besteht, kann diese Verbindung aus dem Pool gezogen werden, auch wenn der Verbindungspooler die getrennte Verbindung nicht erkannt und als ungültig markiert hat.
Dies ist der Fall, weil der Aufwand für die Überprüfung, ob die Verbindung noch gültig ist, die Vorteile eines Poolers eliminieren würde, da ein weiterer Roundtrip zum Server stattfinden würde.
In diesem Fall erkennt der erste Versuch, die Verbindung zu verwenden, dass die Verbindung getrennt wurde, und es wird eine Ausnahme ausgelöst.
Grundsätzlich sehen Sie diese Ausnahme im letzten Satz.
Eine Verbindung wird aus dem Verbindungspool entnommen. Die Anwendung weiß nicht, dass die physische Verbindung unterbrochen wurde. Der Versuch, sie zu verwenden, wird unter der Annahme durchgeführt, dass die physische Verbindung noch vorhanden ist.
Und du bekommst deine Ausnahme.
Dafür gibt es einige häufige Gründe.
- Der Server wurde neu gestartet, wodurch die vorhandenen Verbindungen geschlossen werden.
In diesem Fall sehen Sie sich das SQL Server-Protokoll an, das normalerweise unter C: \ Programme \ Microsoft SQL Server \\ MSSQL \ LOG zu finden ist
Wenn der Zeitstempel für den Start sehr aktuell ist, können wir vermuten, dass dies den Fehler verursacht hat. Versuchen Sie, diesen Zeitstempel mit dem Zeitpunkt der Ausnahme zu korrelieren.
2009-04-16 11: 32: 15.62 Server Protokollierung von SQL Server-Nachrichten in der Datei 'C: \ Programme \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ LOG \ ERRORLOG'.
- Jemand oder etwas hat die verwendete SPID getötet.
Schauen Sie sich noch einmal das SQL Server-Protokoll an. Wenn Sie einen Kill finden, versuchen Sie, diesen Zeitstempel mit dem Zeitpunkt der Ausnahme zu korrelieren.
2009-04-16 11: 34: 09.57 spidXX Die Prozess-ID XX wurde durch den Hostnamen xxxxx und die Host-Prozess-ID XXXX beendet.
- Es gibt erneut ein Failover (z. B. in einem Spiegel-Setup). Sehen Sie sich das SQL Server-Protokoll an.
Wenn ein Failover vorliegt, versuchen Sie, diesen Zeitstempel mit dem Zeitpunkt der Ausnahme zu korrelieren.
2009-04-16 11: 35: 12.93 spidXX Die gespiegelte Datenbank "" ändert aufgrund eines Failovers die Rollen von "PRINCIPAL" in "MIRROR".