Timeout-Einstellungen bei Microsoft SQL Server – Verbindungs- & Abfragezeitlimits optimal konfigurieren

Wenn Anwendungen plötzlich mit einem Timeout-Fehler beim Zugriff auf den SQL Server reagieren, ist meist nicht der SQL Engine selbst der Schuldige — sondern eine falsch konfigurierte Timeout-Einstellung für Verbindungen oder Abfragen. In diesem Beitrag erfährst du, welche Zeitlimits es gibt, wie du sie einstellst und worauf du im Betrieb achten solltest.

Verbindungs-Timeout vs. Abfrage-Timeout – was ist der Unterschied?

  • Connection Timeout: Gibt an, wie viele Sekunden ein Versuch dauern darf, eine Verbindung zum SQL-Server aufzubauen. Wird dieses Intervall überschritten, bricht der Client den Versuch ab. Standard sind meist 30 Sekunden. (Quelle: Stackoverflow)
  • Command Timeout: Regelt die maximale Laufzeit einer einzelnen SQL-Abfrage bzw. eines Befehls auf der Datenbank. Wird sie überschritten, resultiert meist ein Fehler wie „Timeout expired“.
  • Remote Query Timeout: Legt im SQL-Server fest, wie lange eine über einen Linked Server initiierte Anfrage maximal laufen darf. Standardwert ist hier z. B. 600 Sekunden. Microsoft Learn
  • Remote Login Timeout: Zeitspanne, die das System bei einem fehlgeschlagenen Login-Versuch zu einem Remote-Server wartet. Standard z. B. 20 Sekunden. Microsoft Learn

Timeout-Einstellungen ändern – praktische Vorgehensweise

1. Connection Timeout über Client/Anwendung
In der Verbindungszeichenfolge (Connection String) z. B. in einer C#-Anwendung:

"Data Source=myServer;Initial Catalog=myDB;User Id=...;Password=...;Connect Timeout=15;"

Hier beträgt die Wartezeit beim Verbindungsaufbau 15 Sekunden.

Hinweis: Der Parameter heißt Connect Timeout oder Connection Timeout — ein falscher Name wird von vielen Clients ignoriert. Stack Overflow

2. Command Timeout in Anwendung setzen

SqlCommand cmd = new SqlCommand(yourQuery, connection);
cmd.CommandTimeout = 60;  // 60 Sekunden Laufzeit erlauben

Damit kontrollierst du Explizit eine einzelne Abfrage-Laufzeit.

3. Remote Query Timeout im SQL Server konfigurieren
Im SQL Server Management Studio unter:
„Server > Eigenschaften > Verbindungen“ → Remote Query Timeout (Sekunden)


Alternativ via T-SQL:

EXEC sp_configure 'remote query timeout', 300;
RECONFIGURE;

Der neue Wert gilt sofort. Microsoft Learn

4. Remote Login Timeout konfigurieren
Analog über SSIStudio oder T-SQL:

EXEC sp_configure 'remote login timeout', 30;
RECONFIGURE;

Heißt: Bei Remote-Login wird nach 30 Sekunden abgebrochen. Microsoft Learn

Best Practices & Fehlerquellen

  • Setze Connection Timeout nicht auf 0 (kein Limit): Der Client könnte endlos warten.
  • Für spektakulär lange Ausführungen gilt: Statt Timeout aufzulösen besser den Abfrageplan optimieren, Indizes prüfen oder Datenmenge reduzieren.
  • Bei großen Datenmengen oder OLAP-Abfragen kann Command Timeout sinnvoll höher gesetzt werden – z. B. 300 Sekunden.

Fazit

Time-outs sind wichtige Schutzmechanismen – doch sie müssen in richtiger Kombination gesetzt werden: Connection Timeout für Aufbau, Command/Query Timeout für Laufzeit. Wird einer unterschätzt oder falsch konfiguriert, entstehen lästige Wartezeiten oder Fehler beim Zugriff auf den SQL Server.