Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Timeouteinstellungen im JDBC-Treiber können verwendet werden, um die Reaktionsfähigkeit der Anwendung zu priorisieren. Standardmäßig priorisieren die meisten Timeouts des Treibers das Warten auf ein Ergebnis, um die Datenkonsistenz sicherzustellen. Stellen Sie sicher, dass Sie Timeouts auswählen, die den Anforderungen Ihrer Anwendung entsprechen.
Für die erste Verbindung wird loginTimeout verwendet:
-
loginTimeoutist die Anzahl der Sekunden, die der Treiber wartet, um eine Verbindung zum Server herzustellen. Wenn diese Zeit vergeht, gibt der Treiber eine Fehlermeldung zurück und stellt keine Verbindung her. Ein Wert von null setzt den Timeout auf den Standard-System-Timeout, der in JDBC-Treiber 11.2 und neueren Versionen 30 Sekunden beträgt. In JDBC-Treiber 10.2 und früheren Versionen beträgt die Standard-Timeout 15 Sekunden. Jeder Wert ungleich null legt die Anzahl der Sekunden fest, die der Treiber wartet, bevor für eine fehlgeschlagene Verbindung ein Timeout ausgelöst wird. Wenn Sie ständig Schwierigkeiten haben, eine Verbindung mit dem JDBC-Treiber herzustellen, müssen Sie diese Zeitzeit möglicherweise auf 90 oder sogar 120 Sekunden erhöhen.loginTimeoutbegrenzt auch die Verbindungsversuche des Treibers, nicht nur einen einzigen Versuch, was wichtig ist, wenn man sich mit einer automatisch angehaltenen serverlosen Azure SQL-Datenbank verbindet. Weitere Informationen finden Sie unter Verbinden mit einer automatisch pausierten serverlosen Datenbank.
Sobald die Verbindung hergestellt wurde, werden queryTimeout, cancelQueryTimeout und lockTimeout während der Anweisungsausführungen verwendet.
socketTimeout wird für jegliche Treiberkommunikation mit dem Server verwendet.
-
queryTimeoutist die Zeit in Sekunden, die der Treiber wartet, nachdem er einen Ausführungsbefehl an den Server gesendet hat, um eine Antwort vom Server mit Daten zu erhalten. Wenn diese Zeit überschritten wird, wird der Befehl abgebrochen. Das Überschreiten dieses Timeouts schließt die Verbindung nicht. Der Standardwert lautet „-1“, d. h. ein unendliches Timeout. -
cancelQueryTimeoutist die Zeit in Sekunden, die der Treiber auf eine Bestätigung desqueryTimeout-Abbruchs vom Server wartet, bevor er die Verbindung gewaltsam beendet/schließt. Das heißt, der Treiber wartet insgesamtcancelQueryTimeoutplusqueryTimeoutSekunden, bevor die Verbindung geschlossen wird. Durch Festlegen dieses Timeouts auf einen Wert ungleich 0 wird sichergestellt, dass Anwendungen reaktionsfähig bleiben können, wenn ein Netzwerk- oder Kommunikationsfehler mit dem Server auftritt und ein Timeout für eine Abfrage aufgetreten ist. Der Standardwert für diese Eigenschaft ist -1, was einer unendlichen Wartezeit entspricht. -
lockTimeoutist die Zeitspanne, die auf die Freigabe einer Sperre gewartet wird, wenn eine Sperre die Ausführung einer Anweisung blockiert. Das Überschreiten dieses Timeouts führt nicht zu einer geschlossenen Verbindung. Der Standardwert für diese Eigenschaft ist -1, was einer unendlichen Wartezeit entspricht. -
socketTimeoutgilt für die gesamte Socketkommunikation mit dem Server. Wenn der Server die Kommunikation mit dem Treiber beendet, indem er Daten nicht bestätigt oder antwortet, wartet der Treiber auf den Wert vonsocketTimeout, bevor er die Verbindung schließt. Durch Festlegen dieses Timeouts auf einen Wert ungleich 0 wird sichergestellt, dass Anwendungen reagieren können, wenn ein Netzwerk- oder Kommunikationsfehler mit dem Server auftritt. Der Standardwert ist 0, d. h. ein unendliches Timeout. Stellen Sie sicher, dasssocketTimeoutgrößer alsqueryTimeoutist, um Socket-Timeoutausnahmen während des ZeitfenstersqueryTimeoutzu vermeiden. Ebenso müssen Sie sicherstellen, dasssocketTimeoutgrößer alscancelQueryTimeoutist, um Socket-Timeout-Ausnahmen während descancelQueryTimeout-Fensters zu vermeiden.
Angemessene Timeoutwerte für Ihre Anwendung hängen von den Prioritäten der Anwendung ab. Das Festlegen niedrigerer Werte für Timeouts priorisiert die Reaktionsfähigkeit der Anwendung gegenüber der Datenkonsistenz. Wenn Timeouts erreicht werden, müssen Anwendungen entscheiden, welche Vorgehensweise am besten ist. Diese Entscheidung basiert auf der ausgeführten Datenbankaktion. Zum Beispiel könnte bei einer SELECT-Anweisung entschieden werden, dem Benutzer einen Fehler anzuzeigen, oder die Verbindung wiederherzustellen und den Vorgang zu wiederholen. Für INSERT oder UPDATE Aussagen könnte diese Entscheidung anders ausfallen.
Für eine reaktionsfähige Anwendung sollten loginTimeout und queryTimeout auf relativ niedrige Werte festgelegt werden. Ebenso sollte auch cancelQueryTimeout auf einen niedrigen Wert festgelegt werden, um sicherzustellen, dass der Treiber nicht zu lange wartet, bis der Server den Abbruch der Abfrage bestätigt, wenn ein queryTimeout überschritten wird. Schließlich sollte socketTimeout so festgelegt werden, dass der Treiber während eines Szenarios, in dem die Verbindung mit dem Server unterbrochen ist (Netzwerkunterbrechung, Serverabsturz usw.), nicht zu lange wartet.
Eigenschaftenzusammenfassung
| Eigenschaft | BESCHREIBUNG | Standard | Verbindungsergebnis |
|---|---|---|---|
loginTimeout |
Die Wartezeit in Sekunden, bevor der Treiber bei einem Verbindungsfehler ein Timeout meldet. | 30 Sekunden [11.2+], andernfalls 15 Sekunden |
Geschlossene Verbindung |
queryTimeout |
Die Anzahl der Sekunden, die gewartet wird, bevor eine Abfrage abgebrochen wird. | -1 [unendliches Timeout] | Offene Verbindung |
cancelQueryTimeout |
Die Wartezeit in Sekunden, die auf eine Bestätigung des QueryTimeout-Abbruchs gewartet werden soll. | -1 [unendliches Timeout] | Geschlossene Verbindung |
lockTimeout |
Die Wartezeit in Millisekunden, bevor die Datenbank einen Sperrtimeoutfehler zurückgibt. | -1 [unendliches Timeout] | Offene Verbindung |
socketTimeout |
Die Wartezeit in Millisekunden auf einen Lese- oder Schreibvorgang am Socket. | Null [unendliches Timeout] | Geschlossene Verbindung |