Ich hatte das gleiche Problem mit SQL Server 2014 lokal installierter named Instance. Die Verbindung über FQDN\Instanzname
scheiterte, während die Verbindung über nur meinen hostname\Instanzname
funktionierte. Zum Beispiel funktionierte die Verbindung über meincomputername\sql2014
, aber über meincomputername.mydomain.org\sql2014
nicht. DNS wurde richtig aufgelöst, TCP/IP war im SQL-Konfigurations-Manager aktiviert, Windows Firewall-Regeln wurden hinzugefügt (und dann die Firewall zum Testen ausgeschaltet, um sicherzustellen, dass sie nichts blockiert), aber keines davon hat das Problem behoben.
Schließlich musste ich den "SQL Server Browser" Dienst auf dem SQL Server starten, und das hat das Konnektivitätsproblem behoben.
Ich hatte nie realisiert, dass der SQL Server Browser Dienst tatsächlich dem SQL Server bei Verbindungen hilft; ich war der Meinung, dass er einfach nur die Dropdowns beim Klicken auf "Nach weiteren Servern suchen" füllte, aber tatsächlich hilft er, Client-Anfragen mit der korrekten Portnummer abzugleichen, die verwendet werden soll, wenn die Portnummer nicht explizit zugewiesen ist (ähnlich wie Bindungen von Websites das gleiche Problem auf einem IIS-Webserver lösen, der mehrere Websites hostet).
Dieser Verbindungspunkt hat mir den Hinweis zum SQL Server Browser Dienst gegeben: https://connect.microsoft.com/SQLServer/feedback/details/589901/unable-to-connect-on-localhost-using-fqdn-machine-name
- Wenn Sie wstst05\sqlexpress als Servernamen verwenden, trennt der Client-Code den Computernamen vom Instanznamen und der wstst05 wird mit dem NetBIOS-Namen verglichen. Ich sehe kein Problem, dass sie übereinstimmen und die Verbindung als lokal betrachtet wird. Von dort aus wird die erforderliche Information abgerufen OHNE SQL Browser zu kontaktieren und es wird eine Verbindung zur SQL-Instanz über Shared Memory hergestellt, ohne Probleme zu haben.
- Wenn Sie wstst05.capatest.local\sqlexpress verwenden, schlägt der Client-Code den Vergleich des Namens (wstst05.capatest.local) mit dem NetBIOS-Namen (wstst05) fehl und betrachtet die Verbindung als "remote". Das ist so vorgesehen und wir werden auf jeden Fall daran arbeiten, dies in Zukunft zu verbessern. Wie auch immer, aufgrund der Betrachtung der Verbindung als remote und der Tatsache, dass es sich um eine named Instanz handelt, entscheidet der Client, dass er den SQLBrowser zur Namensauflösung verwenden muss. Er versucht, den SQL Browser auf wstst05.capatest.local (UDP-Port 1434) zu kontaktieren, und offensichtlich scheitert dieser Teil. Daher der Fehler, den Sie erhalten.
Der Grund für den "SQL Server Browser" Dienst von TechNet (von mir hervorgehoben): https://technet.microsoft.com/de-de/library/ms181087(v=sql.120).aspx
Aus dem Abschnitt "Verwenden des SQL Server Browsers":
Wenn der SQL Server Browser Dienst nicht läuft, können Sie immer noch eine Verbindung zum SQL Server herstellen, wenn Sie die richtige Portnummer oder Named Pipe angeben. Sie können sich beispielsweise mit der Standardinstanz von SQL Server mit TCP/IP verbinden, wenn sie auf Port 1433 läuft. Wenn der SQL Server Browser Dienst jedoch nicht läuft, funktionieren die folgenden Verbindungen nicht:
- Jedes Element, das versucht, sich mit einer named Instanz zu verbinden, ohne alle Parameter vollständig anzugeben (wie den TCP/IP-Port oder named Pipe).
- Jedes Element, das Server\Instanz-Informationen generiert oder übergibt, die später von anderen Komponenten verwendet werden können, um erneut eine Verbindung herzustellen.
- Verbinden mit einer named Instanz, ohne die Portnummer anzugeben oder Pipe.
- DAC mit einer named Instanz oder der Standardinstanz, wenn nicht der TCP/IP-Port 1433 verwendet wird.
- Der OLAP-Umleitungs-Dienst.
- Auflisten von Servern in SQL Server Management Studio, Enterprise Manager oder Query Analyzer.
Wenn Sie SQL Server in einem Client-Server-Szenario verwenden (zum Beispiel, wenn Ihre Anwendung auf SQL Server über ein Netzwerk zugreift), wenn Sie den SQL Server Browser Dienst anhalten oder deaktivieren, müssen Sie jeder Instanz eine bestimmte Portnummer zuweisen und Ihren Client- Anwendungscode schreiben, um immer diese Portnummer zu verwenden. Dieser Ansatz hat folgende Probleme:
- Sie müssen den Client-Anwendungscode aktualisieren und warten, um sicherzustellen, dass er mit dem richtigen Port verbunden ist.
- Der Port, den Sie für jede Instanz auswählen, kann von einem anderen Dienst oder einer anderen Anwendung auf dem Server verwendet werden, was dazu führt, dass die Instanz von SQL Server nicht verfügbar ist.
Und weitere Informationen aus demselben Artikel aus dem Abschnitt "Wie SQL Server Browser funktioniert":
Weil nur eine Instanz von SQL Server einen Port oder eine Pipe verwenden kann, werden unterschiedliche Portnummern und Pipe-Namen für named Instanzen zugewiesen, einschließlich SQL Server Express. Standardmäßig, wenn aktiviert, sind benannte Instanzen und SQL Server Express so konfiguriert, dynamische Ports zu verwenden, d.h. ein verfügbarer Port wird zugewiesen, wenn SQL Server startet. Wenn gewünscht, kann einer Instanz von SQL Server ein spezifischer Port zugewiesen werden. Beim Verbinden können Clients einen spezifischen Port angeben; aber wenn der Port dynamisch zugewiesen wird, kann sich die Portnummer jederzeit ändern, wenn SQL Server neu gestartet wird, sodass die richtige Portnummer dem Client unbekannt ist. ... Wenn SQL Server-Clients auf SQL Server-Ressourcen zugreifen, sendet die Client-Netzwerkbibliothek eine UDP-Nachricht an den Server über Port 1434. Der SQL Server Browser antwortet mit dem TCP/IP-Port oder der Named Pipe der angeforderten Instanz. Die Netzwerkbibliothek der Client-Anwendung schließt dann die Verbindung ab, indem sie eine Anforderung an den Server sendet über den Port oder die Named Pipe der gewünschten Instanz
7 Stimmen
Ich löste das Problem, indem ich den SQL Server Browser-Dienst aktiviert habe :D. Danke fürs Posten.
1 Stimmen
Das Entsperren des 1433 UDP-Ports hat mir geholfen!
1 Stimmen
Und wenn Sie eine Azure-VM verwenden, vergessen Sie nicht, den Port auch über das Azure-Verwaltungsportal zu öffnen (das als äußere Firewall für die eigene Firewall der VM dient...). Wie folgt: stackoverflow.com/questions/34251382/…
0 Stimmen
Für diejenigen, die sich fragen, wo der Sql Server Configuration Manager in neueren Versionen hingekommen ist, gehe hierhin