Verbindungsstabilität (JDBC)

JDBC-Treiber herunterladen

Aufgrund der Verbindungsstabilität kann eine unterbrochene Leerlaufverbindung mit Einschränkungen wiederhergestellt werden. Wenn die erste Verbindung fehlschlägt, kann der Treiber aufgrund der Verbindungsstabilität auch automatisch versuchen, die Verbindung wiederherzustellen. Nur SQL Server 2014 und höher und Azure SQL-Datenbank unterstützen die Wiederherstellung einer unterbrochenen Leerlaufverbindung. Dieses Feature ist ab dem Microsoft JDBC-Treiber 10.2.0 für SQL Server verfügbar.

Wiederholen des Herstellens einer Verbindung

Die Verbindungsstabilität hat zwei Aspekte. Der erste besteht in der Möglichkeit, eine erste Datenbankverbindung transparent wiederherzustellen. Der zweite besteht darin, eine vorhandene Leerlaufverbindung transparent wiederherzustellen. Eine typische Leerlaufverbindung kann eine Verbindung sein, die sich in einem Verbindungspool befindet. Als „Leerlaufverbindung“ gilt im Allgemeinen eine Verbindung, die mindestens 30 Sekunden im Leerlauf war. Diese Verbindungen können häufig vom Server oder von Netzwerkgeräten zwischen dem Client und dem Server getrennt werden.

Der JDBC-Treiber verfügt über zwei Verbindungsoptionen, die die Verbindungsstabilität steuern. Diese Optionen können der Verbindungszeichenfolge hinzugefügt oder über Datenquelleneigenschaften festgelegt werden.

Schlüsselwort Werte Standard Beschreibung
connectRetryCount Ganze Zahl von 0 bis 255 1 Die maximale Anzahl der Versuche, eine Verbindung herzustellen oder wiederherzustellen, bevor diese aufgegeben werden. Standardmäßig wird ein einzelner Verbindungsversuch unternommen. Der Wert 0 bedeutet, dass kein Verbindungsversuch unternommen wird.
connectRetryInterval Ganze Zahl von 1 bis 60 10 Die Zeit in Sekunden zwischen Verbindungsversuchen. Der Treiber versucht sofort nach dem Erfassen einer unterbrochenen Leerlaufverbindung, diese wiederherzustellen, und wartet dann die mit connectRetryInterval angegebene Anzahl von Sekunden, bevor er es erneut versucht. Das Schlüsselwort wird ignoriert, wenn connectRetryCount 0 beträgt.

Wenn das Ergebnis der Multiplikation des connectRetryCount mit connectRetryInterval größer als der loginTimeout ist, versucht der Treiber nicht mehr, eine Verbindung herzustellen, sobald der loginTimeout erreicht ist. Andernfalls wird weiterhin versucht, die Verbindung wiederherzustellen, bis der connectRetryCount erreicht ist.

Wiederherstellen einer Verbindung

Um unterbrochene Leerlaufverbindungen zu ermitteln, verwendet der Treiber TCP-Keepalive-Pakete auf Socketebene. Unter Linux und Java 11 und höher aktiviert der Treiber automatisch Keepalive-Pakete in einem 30-Sekunden-Intervall (KeepAliveTime), wobei eine Verzögerung von einer Sekunde zwischen den Verbindungsversuchen besteht, wenn ein Fehler auftritt (KeepAliveInterval).

Wichtig

Unter Windows und macOS oder Java 8 müssen Keepalives manuell im Betriebssystem konfiguriert werden, um die Wiederherstellung unterbrochener Leerlaufverbindungen zu durchzuführen. Weitere Informationen zum Konfigurieren von Keepalives finden Sie unter Verbindung mit Azure SQL-Datenbank.

Einschränkungen

Unterbrochene Leerlaufverbindungen können nicht wiederhergestellt werden, wenn Folgendes zutrifft:

  • Es gibt ein offenes Resultset, das nicht vollständig analysiert oder gepuffert wurde.
  • Es werden Datenbanken in Azure SQL gewechselt.
  • Es gibt eine geöffnete Transaktion.

Weitere Informationen

Herstellen einer Verbindung mit einer Azure SQL-Datenbank
Technischer Artikel: Resilienz bei Leerlaufverbindungen
Übersicht über den JDBC-Treiber