Eine ADO.Net-Anwendung kann nur manchmal eine Verbindung zu einem anderen Server im lokalen Netzwerk herstellen. Es scheint zufällig zu sein, ob ein bestimmter Verbindungsversuch erfolgreich ist oder fehlschlägt. Die Verbindung verwendet eine Verbindungszeichenfolge in der Form:
Server = THESERVER \ TheInstance; Database = TheDatabase; User Id = TheUser; Passwort = ThePassword;
Der zurückgegebene Fehler lautet:
Verbindungszeitlimit abgelaufen. Die Zeitüberschreitung beim Versuch, die Handshake-Bestätigung vor der Anmeldung zu nutzen.
Dies kann daran liegen, dass der Handshake vor der Anmeldung fehlgeschlagen ist oder der Server nicht rechtzeitig antworten konnte.
Die Dauer des Versuchs, eine Verbindung zu diesem Server herzustellen, betrug: [Voranmeldung] Initialisierung = 42030; Handschlag = 0;
Die .NET-Anwendung ist eine kleine Test-App, die den folgenden Code ausführt:
using (SqlConnection conn = new SqlConnection(cs))
using (SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM TheTable", conn))
{
conn.Open();
int rowCount = (int)cmd.ExecuteScalar();
}
TheTable ist klein, nur 78 Zeilen.
Auf demselben Computer , auf dem die .NET-Anwendung diesen Fehler empfängt, kann ich jedoch mithilfe von SSMS und der in der Verbindungszeichenfolge angegebenen Benutzer-ID / des Kennworts eine Verbindung zu THESERVER herstellen.
Warum kann die Verbindung über eine ADO.Net-App fehlschlagen, aber mit identischen Anmeldeinformationen von SSMS erfolgreich sein?
quelle
Antworten:
Es stellte sich heraus, dass TCP / IP für die IPv4-Adresse, jedoch nicht für die IPv6-Adresse von aktiviert war
THESERVER
.Anscheinend haben einige Verbindungsversuche IPv4 und andere IPv6 verwendet.
Durch Aktivieren von TCP / IP für beide IP-Versionen wurde das Problem behoben.
Die Tatsache, dass SSMS funktionierte, stellte sich als zufällig heraus (die ersten Versuche verwendeten vermutlich IPv4). Einige spätere Versuche, eine Verbindung über SSMS herzustellen, führten zu derselben Fehlermeldung.
So aktivieren Sie TCP / IP für zusätzliche IP-Adressen:
quelle
Ich hatte gerade den gleichen Fehler, der verdächtig mit der neuesten Runde der Microsoft-Updates (02.09.2016) übereinstimmte. Ich habe festgestellt, dass SSMS ohne Probleme verbunden ist, während meine ASP.NET-Anwendung den Fehler "Zeitüberschreitung beim Versuch, die Handshake-Bestätigung vor der Anmeldung zu verarbeiten" zurückgegeben hat
Die Lösung für mich bestand darin, der Verbindungszeichenfolge ein Verbindungszeitlimit von 30 Sekunden hinzuzufügen, z.
In meiner Situation war die einzige betroffene Verbindung eine, die integrierte Sicherheit verwendete, und ich gab mich vor dem Herstellen einer Verbindung als Benutzer aus. Andere Verbindungen zu demselben Server mithilfe der SQL-Authentifizierung funktionierten einwandfrei!
2 Testsysteme (separate Clients und SQL Server) waren gleichzeitig betroffen, was mich zu dem Verdacht auf ein Microsoft-Update führte!
quelle
Ich habe das Problem wie Eric gelöst, aber mit einigen anderen Änderungen:
UND
quelle
Ich hatte das gleiche Problem beim Versuch, über Visual Studio eine Verbindung zu einem Server in einem lokalen Netzwerk (über VPN) herzustellen, während ich ein Entitätsdatenmodell einrichtete.
Kann nur durch Einstellen
TransparentNetworkIPResolution=false
der Verbindungszeichenfolge gelöst werden . Im VS Add Connection Wizard finden Sie ihn auf der Registerkarte Erweitert.quelle
Ich hatte das gleiche Handshake-Problem bei der Verbindung zu einem gehosteten Server.
Ich habe mein Netzwerk- und Freigabecenter geöffnet und IPv6 für meine drahtlose Netzwerkverbindung aktiviert.
quelle
Meine ausführbare Datei, die mit .NET Framework 3.5 erstellt wurde, meldete diese Verbindungsprobleme in etwa der Hälfte der Fälle, nachdem kürzlich (Woche vom 7. August 2017) einige Windows-Updates installiert wurden.
Verbindungsfehler wurden durch .NET Framework 4.7 verursacht, das auf dem Zielcomputer installiert wurde (die automatische Installation von Windows Updates war aktiviert) - https://support.microsoft.com/?kbid=3186539
Durch die Deinstallation von .NET Framework 4.7 wurden Verbindungsprobleme behoben.
Anscheinend gibt es eine grundlegende Änderung in .Net Framework 4.6.1 - TransparentNetworkIPResolution Durch das Aktualisieren der Verbindungszeichenfolge gemäß Artikel wurde das Problem ebenfalls behoben, ohne dass die Framework-Version zurückgesetzt werden musste.
quelle
Ich habe diesen Fehler unter Windows Server 2012 und SQL Server 2012 behoben, indem ich IPv6 aktiviert und den eingehenden Port 1433 entsperrt habe.
quelle
In unserem Fall trat ein Problem aufgrund der Verfügbarkeitsclusterkonfiguration auf. Um dieses Problem zu lösen, mussten wir
MultiSubnetFailover
in der Verbindungszeichenfolge True setzen .Weitere Details zu MSDN
quelle
Ich hatte das gleiche Problem, schaffen es durch lösen Öffnen / Aktivieren Sie den Port 1433 und TCP / IP in SQL Server Configuration Manager und dann Neu - Start der Server
quelle
In meinem Fall waren vor allem Optionen schon da.
Es wurde durch Erhöhen des Verbindungszeitlimits = 30 behoben.
quelle
Bevor Sie wie ich mehr Zeit für die Lösung des Problems verlieren, versuchen Sie einfach, Ihren Windows-Computer neu zu starten . Arbeitete für mich, nachdem ich alle anderen Lösungen angewendet hatte.
quelle
Ich hatte dieses Problem, als ich eine Migration von SharePoint 2010 auf 2013 durchführte. Ich vermutete, dass der Datenbankserver, der sich auf der anderen Seite einer Firewall befindet, die IP6 nicht weiterleitet, versuchte, IP6 zu verwenden, und beim Herstellen einer Verbindung zur Datenbank fehlschlug.
Ich denke, das Problem ist jetzt gelöst. Die Fehler scheinen aufgehört zu haben. Ich habe einfach IP6 (durch Deaktivieren) für den Netzwerkadapter auf den SharePoint-Servern deaktiviert.
quelle
Ich hatte das gleiche Problem, stellte jedoch über eine statische IP-Adresse eine Verbindung zu einer Remote-Datenbank her. Keine der oben genannten Lösungen hat mein Problem gelöst.
Ich konnte die richtige Benutzerzuordnung für die von mir verwendete Sicherheitsanmeldung nicht hinzufügen. Daher bestand die Lösung für mich lediglich darin, sicherzustellen, dass die Benutzerzuordnungseinstellung für den Zugriff auf meine Datenbank festgelegt wurde.
quelle
Dieses Problem wurde behoben, indem IP-Adressen blockiert / auf die schwarze Liste gesetzt wurden, die versuchten, Benutzerkonten brutal zu erzwingen. Überprüfen Sie Ihre SQL-Zugriffsprotokolle auf eine große Anzahl fehlgeschlagener Anmeldeversuche (normalerweise für das Konto "sa").
quelle
Für mich stellt sich heraus, dass die Firewall in Windows Server den Port 1433 blockiert hat, der der Standard-SQL Server-Port ist. Das Hinzufügen einer eingehenden Regel zum Akzeptieren dieser Verbindungen war für mich der Trick.
quelle
In meinem Fall verursacht der Parameter
Persist Security Info=true
mit dem Benutzer und dem Kennwort in der Verbindungszeichenfolge das Problem. Entfernen des Parameters oder des Satzes zurfalse
Lösung des Problems.quelle
Versuchen Sie zunächst einen einfachen Neustart von SQL Server, bevor Sie drastische Maßnahmen ergreifen. Könnte es reparieren. Es hat für mich getan
quelle
Leider hatte ich ein Problem mit Local SQL Server, das in Visual Studio installiert war, und hier haben viele Lösungen für mich nicht funktioniert. Alles, was ich tun muss, ist, mein Visual Studio zurückzusetzen, indem ich zu:
Systemsteuerung> Programm & Funktionen> Visual Studio Setup Launcher
Klicken Sie auf die Schaltfläche Mehr und wählen Sie Reparieren
Danach konnte ich auf meinen lokalen SQL Server zugreifen und mit lokalen SQL-Datenbanken arbeiten.
quelle
Ich hatte das gleiche Problem, das nach dem letzten Microsoft Windows-Update automatisch behoben wurde. Hat jemand das gleiche Problem?
quelle
Ich hatte das genaue Problem, versuchte mehrere Soultion funktionierte nicht, startete zuletzt das System neu, es funktionierte gut.
quelle
Stellen Sie Folgendes sicher, um den Fehler "Verbindungszeitlimit abgelaufen" zu verfolgen :
quelle
Hier eine Antwort hinzufügen, trotz zuvor akzeptierter Antwort. Als mein Szenario wurde bestätigt, DNS zu sein. Insbesondere ein DNS-Timeout während des Pre-Login-Handshakes. Durch Ändern von einem DNS-Namen in eine IP-Adresse (oder Verwenden des Hosts-Dateieintrags) umgehen Sie das Problem. Allerdings auf Kosten des Verlusts der automatischen IP-Auflösung.
Selbst wenn der Timeout-Wert eines Verbindungsstrings für eine volle Minute auf 60 gesetzt ist, geschieht dies beispielsweise innerhalb weniger Sekunden nach dem Versuch. Was führt zu der Frage, warum das Zeitlimit vor dem angegebenen Zeitlimit überschritten wird. DNS.
quelle