it-swarm.com.de

Es kann keine Verbindung zu einer benannten SQL Server-Instanz von einem anderen SQL Server hergestellt werden

Ich würde mich über etwas Hilfe freuen, da ich seit 2 Tagen in dieser Ausgabe stecken geblieben bin!

Szenario: Ich kann von meinem Entwicklungscomputer (und einem anderen Kollegen) aus eine Verbindung zu SERVER\INSTANCE herstellen, aber keine Verbindung zu einem anderen SQL Server. Der Fehler, den ich bekomme, ist das generische "... Überprüfen Sie, ob der Instanzname korrekt ist ...". Dinge, die ich gemacht/überprüft habe:

  1. Ich habe die Firewall auf dem Ziel- (und Quell-) Server deaktiviert, um zu sehen, ob es sich um ein Firewall-Problem handelt (dies ist höchstwahrscheinlich der Grund, da ich von meinem Computer aus eine Verbindung herstellen kann, was aber nicht geholfen hat).

  2. Ich habe bestätigt, dass der SQL-Browser funktioniert (was ist, da ich von der Entwicklungsmaschine aus eine Verbindung herstellen kann).

  3. Da beide SQL-Server über mehrere Instanzen und hart codierte Ports verfügen, habe ich sogar darauf geachtet, dass es sich um unterschiedliche Ports handelt, bei denen Konflikte auftraten (dies half nicht).

  4. Ich habe den SQL Server neu gestartet und überprüft, ob Browser-/Instanzdienste ausgeführt werden

  5. Geprüftes Ereignisprotokoll - nichts Besonderes

  6. Interessanterweise, wenn ich keine Verbindung über den Instanznamen herstelle, sondern über den dynamischen Port (z. B. SERVER, PORT) vom zweiten Server aus, funktioniert es einwandfrei - was mir nahe legt, dass der SQL Browser fehlerhaft ist, abgesehen davon, dass er lokal gut funktioniert Server und von meiner Entwicklungsmaschine.

Irgendwelche Ideen und Vorschläge? Vielen Dank.

Bearbeiten: Zur Erläuterung der Kommentare verweise ich auf die Daten-SQL-Server als SQLA und die Nicht-Daten-SQLB.

Bearbeiten # 2: Weitere Testfälle/Informationen hinzufügen:

Info: Die obigen Tests wurden alle über die SSMS-Schnittstelle durchgeführt, um eine Verbindung zur Datenbank herzustellen. Die Datenbanken sind beide 2012.

Neuer Testfall: Ich habe versucht, ein Skript auszuführen, um stattdessen einen Verbindungsserver einzurichten, und fand heraus, dass die Ausführung des Skripts auf einer SQL Server 2005-Box einwandfrei war, das Ausführen des gleichen Skripts auf dem SQL Server 2012-Server (SQLB) jedoch fehlgeschlagen ist Fehler: SQL Server-Netzwerkschnittstellen: Fehler beim Suchen des Servers/der angegebenen Instanz [xFFFFFFFF]. 

Bearbeiten # 3: Das potenzielle Problem eingegrenzt:

PortQry wurde heruntergeladen und ausgeführt, und wenn ich von meiner dev-Box aus laufe, bekomme ich alle Instanzen zurück, die 1434 über UDP abfragen. Ich kann nur denken, dass dies mit der Firewall zusammenhängt, außer dass ich die Firewall auf beiden Maschinen deaktiviert habe

15
user1839820

Ihre Testfälle, in denen Sie keine Verbindung mit "ServerName\Instance" herstellen können, aber über "ServerName, Port" eine Verbindung zum Server herstellen können, geschieht, wenn Sie ein VPN mit Microsoft VPN in ein Netzwerk einbinden. (Ich hatte dieses Problem). Für mein VPN-Problem verwende ich einfach die statischen Portnummern, um dieses Problem zu umgehen.

Dies liegt anscheinend daran, dass VPN keine UDP-Pakete weiterleitet und nur TCP Verbindungen zulässt.

In Ihrem Fall werden Ihre Firewall- oder Sicherheitseinstellungen oder das Antivirus-Programm oder was auch immer UDP blockiert.

Ich würde vorschlagen, dass Sie Ihre Firewall-Einstellung überprüfen, um speziell UDP zuzulassen.

Browser Artical

Beim Start wird der SQL Server-Browser gestartet und beansprucht den UDP-Port 1434. SQL Der Server-Browser liest die Registrierung und identifiziert alle SQL Server-Instanzen auf dem Computer und notiert die verwendeten Ports und Named Pipes . Wenn ein Server über zwei oder mehr Netzwerkkarten verfügt, wird der SQL Server-Browser Alle für SQL Server aktivierten Ports zurückgeben. SQL Server 2005 und SQL Server Browser unterstützt IPv6 und IPv4.

Wenn SQL Server 2000- und SQL Server 2005-Clients SQL Server anfordern Ressourcen sendet die Client-Netzwerkbibliothek eine UDP-Nachricht an die Server, der Port 1434 verwendet. Der SQL Server-Browser antwortet mit TCP/IP Port oder Named Pipe der angeforderten Instanz. Die Netzwerkbibliothek auf Die Clientanwendung stellt dann die Verbindung her, indem sie eine .__ sendet. Anforderung an den Server über den Port oder die Named Pipe des gewünschten Beispiel.

Verwenden einer Firewall

Um mit dem SQL Server-Browserdienst auf einem Server hinter einer Firewall zu kommunizieren, öffnen Sie den UDP-Port 1434 zusätzlich zu dem von SQL Server verwendeten Port TCP (z. B. 1433). 

15
DarrenMB

Ich bin nicht sicher, ob dies die Antwort ist, nach der Sie gesucht haben, aber es hat für mich funktioniert. Nachdem ich meine Laufräder in der Windows-Firewall gedreht hatte, ging ich zurück in SQL Server Configuration Manager, überprüfte die SQL Server-Netzwerkkonfiguration und prüfte die Protokolle für die Instanz, mit der ich arbeitete, unter TCP/IP. In der Standardeinstellung scheint es, dass für meine eine Deaktivierung festgelegt wurde. Dies erlaubte zum Beispiel Verbindungen auf dem lokalen Computer, jedoch nicht, dass SSMS auf einem anderen Computer verwendet wurde. Die Aktivierung von TCP/IP hat den Trick für mich erledigt.

http://technet.Microsoft.com/de-de/library/hh231672.aspx

6

Ich habe endlich das Problem hier gefunden. Obwohl die Firewall an beiden Standorten deaktiviert war, stellten wir fest, dass ein Router im SQLB-Rechenzentrum UDP 1434 aktiv blockierte. Dies konnte ich durch die Installation des Tools PorQry von Microsoft ( http://www.Microsoft) feststellen .com/de-ca/download/details.aspx? id = 17148 ) und Ausführen einer Abfrage für den UDP-Port. Dann installierte ich WireShark ( http://www.wireshark.org/ ), um die tatsächlichen Verbindungsdetails anzuzeigen, und fand den fraglichen Router, der die Anfrage nicht weiterleiten wollte. Da dieser Router nur SQLB betroffen hat, erklärt dies, warum jede andere Verbindung gut funktioniert hat.

Vielen Dank an alle für Ihre Vorschläge und Unterstützung!

4
user1839820

Sie haben viel versucht. Und ich fühle für dich ... Hier ist eine Idee. Ich habe alles verfolgt, was Sie ausprobiert haben ... Die gedankliche Anmerkung, die ich in meinem Kopf habe, lautet wie folgt: "Wenn sich der SQL-Server nicht verbindet, wenn Sie alles versucht haben, verbinden Sie Ihre Firewall-Regeln mit dem Programm, nicht der Hafen"

Ich weiß, Sie sagten, Sie hätten die Firewall deaktiviert ... Aber etwas sagt mir, dass Sie es trotzdem versuchen sollten.

Ich denke, Sie müssen die Firewall "per Programm" öffnen und nicht per Port.

http://technet.Microsoft.com/de-de/library/cc646023.aspx

To add a program exception to the firewall using the Windows Firewall item in Control Panel.


On the Exceptions tab of the Windows Firewall item in Control Panel, click Add a program.


Browse to the location of the instance of SQL Server that you want to allow through the firewall, for example C:\Program Files\Microsoft SQL Server\MSSQL11.<instance_name>\MSSQL\Binn, select sqlservr.exe, and then click Open.


 Click OK.

BEARBEITEN..........

http://msdn.Microsoft.com/de-de/library/ms190479.aspx

Ich bin ein wenig trübe, bei welchem ​​"Programm" Sie versuchen, SQLB zu verwenden?

Ist es SSMS auf SQLB? Oder ein Client-Programm auf SQLB?

BEARBEITEN...........

Keine Ahnung, ob das helfen wird ... Aber ich benutze es, um "Ports" zu pingen ... und etwas, das außerhalb der SSMS-Welt liegt.

http://www.Microsoft.com/de-de/download/details.aspx?id=24009

3
granadaCoder

Haben Sie auf Ihrer Entwicklungsmaschine irgendwelche Client-Aliase definiert? Wenn ja, dann definieren Sie sie auch auf SQLB. Ich vermute insbesondere, dass Sie Client-Aliase im InstanceName-Format haben, die die Ports definieren, wodurch die tatsächlichen Instanznamen und die Notwendigkeit eines SQL-Browsers (teilweise) umgangen werden. Es gibt jedoch auch andere Möglichkeiten mit Client-Aliases. Stellen Sie also sicher, dass sie gleich sind.

Verwenden Sie den SQL Server-Konfigurations-Manager (im Microsoft SQLServer-Menü Start des Programms), um nach SQL-Client-Aliases zu suchen. Dort gehen Sie zur Client-Konfiguration und dann zu "Aliases".


Andere Dinge zu überprüfen:

  1. Diese SQLA und SQLB befinden sich entweder in derselben Domäne oder es gibt keine Vertrauensprobleme zwischen ihnen.

  2. Stellen Sie sicher, dass in SQLB TCP/IP als Clientprotokoll aktiviert ist (dies gilt auch für SQL Configuration Manager).


Bei einigen Ihrer Antworten denke ich, dass Sie vielleicht den Punkt meiner Aussagen über Domains und Trusts verpasst haben. Sie können keine Verbindung zu einer SQL " Server\Instance " herstellen, es sei denn, es besteht eine ausreichende Vertrauensstellung zwischen Client und Server. Dies liegt daran, dass das gesamte Instanzbenennungsschema, das SQL Sevrer verwendet, für die Erkennung, den Speicherort und die Autorisierung von SPNs (Service Principal Names) abhängig ist und SPNs im AD gespeichert werden. Wenn sich der Client nicht in derselben Box befindet, muss die Instanz ihren SPN registrieren können, und der Client muss in der Lage sein, in der AD-Gesamtstruktur zu suchen, in der die Serverinstanz seinen SPN registriert hat. 

Wenn Sie dies nicht tun können, funktionieren Instanzennamen nicht effektiv, und Sie müssen stattdessen die Portnummer (oder den Pipe-Namen) verwenden. Das ist, was ich jetzt verdächtige.

2
RBarryYoung
  1. Ich musste einen Port im SQL-Konfigurationsmanager> TCP/IP angeben
  2. Öffnen Sie den Port Ihrer Firewall
  3. Stellen Sie dann eine Remote-Verbindung her mit: "Servername\andere Datenbankinstanz (Portnummer)"
  4. In Verbindung gebracht!
2
Armand G.

nachdem ich etwa 10 Tage lang versucht hatte, dieses Problem zu lösen, habe ich es heute endlich herausgefunden und beschlossen, die Lösung zu veröffentlichen

geben Sie im Startmenü den Befehl RUN ein, öffnen Sie es

stellen Sie sicher, dass diese beiden Dienste gestartet sind SQL Server (MSSQLSERVER) SQL Server Vss-Writer

1
PEN SOLUTIONS

Um dieses Problem zu lösen, müssen Sie sicherstellen, dass auf dem Computer, auf dem SQL Server gehostet wird, Folgendes gilt:.

  1. Stellen Sie sicher, dass der Server Browser-Dienst ausgeführt wird 
  2. Stellen Sie sicher, dass die TCP/IP-Kommunikation für jede Instanz aktiviert ist, mit der Sie über das Netzwerk kommunizieren möchten . enter image description here
  3. Wenn Sie mehrere Instanzen ausführen, stellen Sie sicher, dass jede Instanz einen anderen Port verwendet, und dass der Port wird nicht verwendet . z. B. für zwei Instanz 1433 (Standardport für die Standardinstanz, 1435 für eine benannte Instanz . enter image description here
  4. Stellen Sie sicher, dass die Firewall über einen Eintrag verfügt, der die Kommunikation mit dem SQL Server-Browser an Port 1434 über das Protokoll UDP zulässt. 
  5. Stellen Sie sicher, dass die Firewall über einen Eintrag verfügt, der die Kommunikation mit SQL Server-Instanzen an den ihnen in Schritt 3 zugewiesenen Ports über das Protokoll TCP ermöglicht enter image description here
0
Mick

Ich muss zwei Dinge tun, um mich mit dem Instanznamen zu verbinden

1. Enable SQL Server Browser (in SQL server config manager)
2. Enable UDP, port 1434 trong file wall (if you using Amazon EC2 or other service you need open port in their setting too)

Starten Sie SQL neu und fertig

0
Grey Wolf