Benutzer mit den meisten Antworten
Timeout bei Verbindung

Frage
-
Hallo Zusammen,
ich habe einen Rechner mit Windows Server 2012, auf dem wiederum 2 Virtuelle Server 2012 laufen.
Einen Web- und einen Datenbankserver. Ich kann vom Web den Datenbankserver anpingen.
Wenn ich aber über die Website (c# und Dotnetframework 4.5) versuche, Daten aus dem Datenbankserver auszulesen bekomme ich die Meldung:Verbindungstimeout abgelaufen. Das Timeout ist aufgetreten, während die Bestätigung des Handshakes vor der Anmeldung verarbeitet wurde. Möglicherweise ist ein Fehler beim Handshake vor der Anmeldung aufgetreten, oder der Server hat nicht rechtzeitig geantwortet. Folgende Verbindungszeiten wurden bei dem Versuch benötigt, eine Verbindung mit diesem Server herzustellen: [Vor Anmeldung] Initialisierung=21434; Handshake=6;
In der Web.config nutze ich folgenden Eintrag:
connectionString="Server=Meinserver; Database=MeineDatabase; User Id=user;Password=Pw;"
Was mache ich da falsch?
Gruß
Markus- Bearbeitet MarkusSchmidt Montag, 20. Juli 2015 14:06 Nachtrag
Antworten
-
Hi Markus,
seit einigen Wochen habe ich Probleme bei der Nutzung virtueller Switches, Hyper-V und aktiviertem IPv6. Nach relativer kurzer Zeit funktioniert manchmal die Namensauflösung im Host nicht mehr, wenn in einer VM ein DC aktiv ist. Nach einem "ipconfig /renew" auf dem Host funktioniert die Namensauflösung wieder einige Zeit. Die Ursachen dafür habe ich aus Zeitgründen noch nicht ermitteln können. Genau so ist es mit bisher nicht gelungen, in den unterschiedlichen Subnetzen den Zugriff auf das Internet über IPv6 zu gewährleisten (analog NAT in IPv4). Also eine Menge ungelöster Probleme bei mir, weshalb ich explizit auch nach IPv6 gefragt habe.Ich vermute, dass Microsoft mit IPv6 noch Probleme bei einer sauberen Implementierung hat und z.Z. über Updates an Veränderungen bastelt.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Mittwoch, 22. Juli 2015 12:53
- Als Antwort markiert MarkusSchmidt Mittwoch, 22. Juli 2015 14:32
Alle Antworten
-
Hi Markus,
das Ping reicht nicht aus. Der Datenbankserver muss auch erreichbar sein. Dazu ist des Konto, mit dem zugegriffen werden soll, im SQL Server zu berechtigen. Für den Fall der Webanwendung ist das üblicherweise im Webserver das Pool-Konto, in welchem die Webanwendung ausgeführt wird. Außerdem muss im SQL Server die Firewall freigeschalten sein.--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks -
-
Hallo Markus,
wie Peter Fleischer schon erwähnt, würde ich mal die Firewall prüfen, ob die nicht eine eingehende Verbindung des Datenbankservers blockiert (sollte normalerweise automatisch eine entsprechende Regel eingestellt worden sein).
Welche Version des SQL-Servers haben Sie denn installiert? Sollten Sie eine SQL-Express-Variante installiert haben, kommt üblicherweise noch der Suffix "SQLEXPRESS" hinten an den Server. In Ihrem Beispiel also:
"Server=Meinserver\SQLEXPRESS; Database=MeineDatabase; User Id=user;Password=Pw;"
Sie können auch schauen, wie die Instanz genau heißt in dem Sie unter den Diensten des Datenbankservers nach folgendem Eintrag schauen:
Der Name in der Klammer zeigt den Namen der Instanz.
-
Hi Markus,
je nach Version hat der Nutzer "sa" u.U. keinen Zugriff. Besser ist es, einen konkreten Nutzer anzulegen, sicherzustellen, dass der Zugriff funktioniert und diesen dann im Programm zu nutzen. Am sichersten ist es, beide Rechner in die Domäne einzubinden und mit Domänenkonto zu arbeiten.Um schnell zu prüfen, ob der Zugriff funktioniert, kann man eine Datei auf dem Desktop anlegen, die die Endung "udl" hat, z.B. "testSQL.udl". Nach dem Doppelklick auf das Icon wird das Fenster "Datenverknüpfungseigenschaften" geöffnet und man kann nach der Eingabe der Parameter mit "Verbindung testen" überprüfen, ob ein Zugriff mit den eingegeben Parametern möglich ist.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks -
Hallo Markus,
das der angegebene Servername falsch ist oder die Firewall den Zugriff blockiert, kann man fast ausschließen, dann würdest Du den generischen Fehler "error: 40 - Verbindung mit SQL Server konnte nicht geöffnet werden" erhalten. Dass der verwendete Login keine Berechtigungen hat, kann man ganz ausschließen, den dann würdest Du sofort eine entsprechende Fehlermeldung erhalten und nicht erst nach einem Timeout.
Ich würde erst mal einen Blick in die ErrorLog Datei vom SQL Server werfen, ob da was entsprechendes steht, sowie ins Windows EventLog vom Datenbankserver.
Olaf Helper
[ Blog] [ Xing] [ MVP] -
Also wir haben jetzt den SQL-Server 2014 installiert, bis dato hatten wir Windows Server 2003 Web Edition als Webserver und Windows Server 2003 Standard mit SQL-Server 2000. Da war alles irgendwie "einfacher".
Ich sehe mir gleich mal die Protokolle an und gebe danach Rückmeldung :)
Gruß
Markus -
So, hab nix verdächtiges in den Protokollen gefunden?!?
Extra nochmal die Firewall kontrolliert, Port explizit freigegeben, trotzdem Timeout.
Hab mir dann 'ne Website in vb.Net (Framework 1.14 oder so) auf dem alten Webserver geschrieben und bekomme Zugriff und Daten zurück geliefert?!?!Noch einer 'ne Idee?
Gruß
Markus -
Hab mir jetzt eine test.udl angelegt, bekomme nach einiger Zeit auch den DB Server angezeigt, gebe dann Benutzer und PW ein und wenn ich dann auf Datenbank klicke bekomme ich nach einiger Zeit ein Timeout.
Da stimmt ja schon am ganzen Konstrukt etwas nicht... scheixxxx
Anpingen kann ich den DB ServerUnser Aufbau sieht wie folgt aus:
Hardwareserver 2012R2, HyperV Server, 3 Lankarten (1 x internes Firmennetz, 1 x direkte Anbindung Internet, 1 x Netzwerk Datenbankserver)
Web Server 2012 R2, virtuell, direkte Verbindung ins Internet über virtuellen Switch 1, Verbindung Datenbank SQL Server 2014 über virtuelles privates Netzwerk
DB Server 2012 R2, virtuell, direkte Verbindung ins Firmennetz über virtuellen Switch 2, Verbindung Webserver s.o., Verbindung Netzwerk Datenbankserver über virtuellen Switch 3
Ich hoffe das ist einigermaßen verständlich :)
Gruß
Markus- Bearbeitet MarkusSchmidt Dienstag, 21. Juli 2015 15:04
-
Hi Markus,
wenn Du schon die NIC's aufführst, dann zeige mal die IPv4- und, falls genutzt, auch die IPv6-Adressen aller NIC's im Web- und DB-Server und die Masken (bei IPv4). Wenn Du mit URL's arbeitest, dann zeig mal das Tracert-Protokoll (vom Web Server zur DB Server).
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Dienstag, 21. Juli 2015 16:05
-
So, die IP's sind
Hauptserver
Lan1 192.168.40.221 (internes Firmennetz), Subnet 255.255.255.0
Lan2 192.168.42.101 (direkt Anschluss Gateway mit fester, externer IP), Subnet 255.255.255.0
Lan3 192.168.11.112 (internes Firmennetz), Subnet 255.255.255.0
Lan1 und 3 sind als virtuelle Switche mit dem DB-Server verbunden, der wiederum hat die IP'sVirtueller Switch 1 192.168.40.222 und virtueller Switch 3 mit 192.168.11.115
Dann noch einen virtuellen Adapter mit der IP 192.168.44.1Der Web-Server hat einen virtuellen Switch mit der IP 192.168.42.110 und einen virtuellen Adapter mit der IP 192.168.44.80
Darüber erfolgt der direkte zugriff auf den SQL-Server.Ich hab jetzt mal im "privaten" virtuellen Netzwerk (zwischen Web- und DB-Server) IPv6 deaktiviert. Danach mal Tracert vom Web zum DB abgerufen und die richtige Meldung (direkter Weg zur DB-Server-IP) bekommen.
Seit dem klappt der Zugriff auch vom neuen Webserver auf den SQL-Server?!? Einer eine Erklärung?
Hauptsache es Funktioniert :):)Gruß
Markus -
Hi Markus,
seit einigen Wochen habe ich Probleme bei der Nutzung virtueller Switches, Hyper-V und aktiviertem IPv6. Nach relativer kurzer Zeit funktioniert manchmal die Namensauflösung im Host nicht mehr, wenn in einer VM ein DC aktiv ist. Nach einem "ipconfig /renew" auf dem Host funktioniert die Namensauflösung wieder einige Zeit. Die Ursachen dafür habe ich aus Zeitgründen noch nicht ermitteln können. Genau so ist es mit bisher nicht gelungen, in den unterschiedlichen Subnetzen den Zugriff auf das Internet über IPv6 zu gewährleisten (analog NAT in IPv4). Also eine Menge ungelöster Probleme bei mir, weshalb ich explizit auch nach IPv6 gefragt habe.Ich vermute, dass Microsoft mit IPv6 noch Probleme bei einer sauberen Implementierung hat und z.Z. über Updates an Veränderungen bastelt.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
- Bearbeitet Peter Fleischer Mittwoch, 22. Juli 2015 12:53
- Als Antwort markiert MarkusSchmidt Mittwoch, 22. Juli 2015 14:32