Ich hatte das gleiche Problem mit der lokal installierten benannten Instanz von SQL Server 2014. Das Verbinden mit dem FQDN\InstanceName
würde fehlschlagen, während das Verbinden nur mit meinem hostname\InstanceName
funktioniert. Zum Beispiel: Verbinden mit mycomputername\sql2014
funktioniert, aber mitmycomputername.mydomain.org\sql2014
nicht. DNS wurde korrekt aufgelöst, TCP / IP wurde in SQL Configuration Manager aktiviert, Windows-Firewall-Regeln hinzugefügt (und dann die Firewall zum Testen deaktiviert, um sicherzustellen, dass nichts blockiert wurde), aber keines davon hat das Problem behoben.
Schließlich musste ich den Dienst " SQL Server Browser " auf dem SQL Server starten , wodurch das Konnektivitätsproblem behoben wurde.
Ich hatte nie bemerkt, dass der SQL Server-Browserdienst den SQL Server tatsächlich beim Herstellen von Verbindungen unterstützt. Ich hatte den Eindruck, dass es einfach geholfen hat, die Dropdowns zu füllen, wenn Sie auf "Nach weiteren Servern suchen" geklickt haben, um eine Verbindung herzustellen, aber es hilft tatsächlich, Client-Anforderungen an der richtigen zu verwendenden Portnummer auszurichten, wenn die Portnummer nicht explizit zugewiesen ist (ähnlich) Informationen darüber, wie Website-Bindungen dazu beitragen, dasselbe Problem auf einem IIS-Webserver zu beheben, auf dem mehrere Websites gehostet werden.
Dieses Verbindungselement gab mir den Hinweis auf den SQL Server-Browserdienst: 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 Clientcode den Computernamen vom Instanznamen und wstst05 wird mit dem NetBIOS-Namen verglichen. Ich sehe kein Problem für sie und die Verbindung wird als lokal angesehen. Von dort rufen wir die benötigten Informationen ab rufen SQL-Browser zu kontaktieren, und stellen problemlos über Shared Memory eine Verbindung zur SQL-Instanz her.
- Wenn Sie wstst05.capatest.local \ sqlexpress verwenden, schlägt der Clientcode beim Vergleich des Namens (wstst05.capatest.local) mit dem NetBIOS-Namen (wstst05) fehl und betrachtet die Verbindung als "remote". Dies ist beabsichtigt und wir werden definitiv in Betracht ziehen, dies in Zukunft zu verbessern. Aufgrund der Berücksichtigung der Remote-Verbindung und der Tatsache, dass es sich um eine benannte Instanz handelt, entscheidet der Client, dass SQLBrowser für die Namensauflösung verwendet werden muss. Es wird versucht, den SQL-Browser unter wstst05.capatest.local (UDP-Port 1434) zu kontaktieren, und anscheinend schlägt dieser Teil fehl. Daher der Fehler, den Sie erhalten.
Der Grund für den "SQL Server Browser" -Dienst von TechNet (Hervorhebung von mir hinzugefügt): https://technet.microsoft.com/en-us/library/ms181087(v=sql.120).aspx
Aus dem Abschnitt "Verwenden des SQL Server-Browsers":
Wenn der SQL Server-Browserdienst nicht ausgeführt wird, können Sie weiterhin eine Verbindung zu SQL Server herstellen, wenn Sie die richtige Portnummer oder Named Pipe angeben. Sie können beispielsweise mit TCP / IP eine Verbindung zur Standardinstanz von SQL Server herstellen, wenn dieser auf Port 1433 ausgeführt wird. Wenn der SQL Server-Browserdienst jedoch nicht ausgeführt wird, funktionieren die folgenden Verbindungen nicht :
- Jede Komponente, die versucht, eine Verbindung zu einer benannten Instanz herzustellen, ohne alle Parameter vollständig anzugeben (z. B. den TCP / IP-Port oder die Named Pipe) .
- Jede Komponente, die Server- / Instanzinformationen generiert oder weitergibt, die später von anderen Komponenten zum erneuten Verbinden verwendet werden könnten.
- Herstellen einer Verbindung zu einer benannten Instanz ohne Angabe der Portnummer oder Pipe.
- DAC zu einer benannten Instanz oder zur Standardinstanz, wenn der TCP / IP-Port 1433 nicht verwendet wird.
- Der OLAP-Redirector-Dienst.
- Auflisten von Servern in SQL Server Management Studio, Enterprise Manager oder Query Analyzer.
Wenn Sie SQL Server in einem Client-Server-Szenario verwenden (z. B. wenn Ihre Anwendung über ein Netzwerk auf SQL Server zugreift), wenn Sie den SQL Server-Browserdienst beenden oder deaktivieren, müssen Sie jeder Instanz und eine bestimmte Portnummer zuweisen Schreiben Sie Ihren Client-Anwendungscode, um immer diese Portnummer zu verwenden. Dieser Ansatz weist die folgenden Probleme auf :
- Sie müssen den Clientanwendungscode aktualisieren und verwalten, um sicherzustellen, dass eine Verbindung zum richtigen Port hergestellt wird.
- Der Port, den Sie für jede Instanz auswählen, kann von einem anderen Dienst oder einer anderen Anwendung auf dem Server verwendet werden, wodurch die Instanz von SQL Server nicht verfügbar ist.
Weitere Informationen aus demselben Artikel finden Sie im Abschnitt "Funktionsweise des SQL Server-Browsers":
weil nur eine Instanz von SQL Server einen Port oder eine Pipe verwenden kannFür benannte Instanzen, einschließlich SQL Server Express, werden unterschiedliche Portnummern und Pipe-Namen zugewiesen. Wenn diese Option aktiviert ist, werden standardmäßig sowohl benannte Instanzen als auch SQL Server Express für die Verwendung dynamischer Ports konfiguriert, dh, ein verfügbarer Port wird beim Start von SQL Server zugewiesen. Wenn Sie möchten, kann einer Instanz von SQL Server ein bestimmter Port zugewiesen werden. Bei der Verbindung können Clients einen bestimmten Port angeben. Wenn der Port jedoch dynamisch zugewiesen wird, kann sich die Portnummer bei jedem Neustart von SQL Server ändern, sodass dem Client die richtige Portnummer unbekannt ist. ... Wenn SQL Server-Clients SQL Server-Ressourcen anfordern, sendet die Client-Netzwerkbibliothek über Port 1434 eine UDP-Nachricht an den Server. Der SQL Server-Browser antwortet mit dem TCP / IP-Port oder der Named Pipe der angeforderten Instanz.