Aktivieren Sie Remoteverbindungen für SQL Server Express 2012

403

Ich habe gerade SQL Server Express 2012 auf meinem Heimserver installiert. Ich versuche, von meinem Studio-PC aus eine Verbindung zu Visual Studio 2012 herzustellen, und erhalte wiederholt den bekannten Fehler:

Beim Herstellen einer Verbindung zu SQL Server ist ein netzwerkbezogener oder instanzspezifischer Fehler aufgetreten. Der Server wurde nicht gefunden oder war nicht zugänglich. Stellen Sie sicher, dass der Instanzname korrekt ist und dass SQL Server so konfiguriert ist, dass Remoteverbindungen zugelassen werden. (Anbieter: Named Pipes Provider, Fehler: 40 - Verbindung zu SQL Server konnte nicht hergestellt werden)

Was ich getan habe, um dies zu beheben:

  • Führen Sie SQL Server Configuration Manager auf dem Server aus und aktivieren Sie den SQL Server-Browser
  • Fügen Sie auf dem Server eine Windows-Firewall-Ausnahme für TCP, Ports 1433 und 1434 im lokalen Subnetz hinzu.
  • Stellen Sie sicher, dass ich mich bei der SQL Server-Instanz für den Benutzer angemeldet habe, bei dem ich als Desktop angemeldet bin.
  • Stellen Sie sicher, dass ich die Windows-Authentifizierung für die SQL Server-Instanz verwende.
  • Starten Sie SQL Server und den gesamten Dang-Server wiederholt neu.
  • Zieh mir alle Haare aus.

Wie kann ich SQL Server 2012 Express dazu bringen, Remoteverbindungen zuzulassen?

Ryan Lundy
quelle
7
Ich habe das Problem gelöst, indem ich den SQL Server-Browserdienst aktiviert habe: D. Danke, dass du es gepostet hast.
Alansiqueira27
1
Das Entsperren des 1433 UDP-Ports hat mir geholfen!
Michael
1
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 fungiert ...). Wie so: stackoverflow.com/questions/34251382/…
jleach
Wenn Sie sich fragen, wohin SQL Server Configuration Manager in neueren Versionen verschwunden ist,
besuchen

Antworten:

731

Nun, ich bin froh , dass ich gefragt habe . Die Lösung, die ich schließlich entdeckte, war hier:

Wie konfiguriere ich SQL Server Express so, dass Remote-TCP / IP-Verbindungen an Port 1433 zugelassen werden?

  1. Führen Sie SQL Server Configuration Manager aus.
  2. Gehen Sie zu SQL Server-Netzwerkkonfiguration> Protokolle für SQLEXPRESS.
  3. Stellen Sie sicher, dass TCP / IP aktiviert ist.

So weit, so gut und völlig erwartet. Aber dann:

  1. Klicken Sie mit der rechten Maustaste auf TCP / IP und wählen Sie Eigenschaften .
  2. Stellen Sie sicher, dass unter IP2 die IP-Adresse auf die IP-Adresse des Computers im lokalen Subnetz eingestellt ist.
  3. Scrollen Sie nach unten zu IPAll.
  4. Stellen Sie sicher , dass TCP Dynamic Ports ist leer . (Meins wurde auf eine 5-stellige Portnummer eingestellt.)
  5. Stellen Sie sicher, dass der TCP-Port auf 1433 eingestellt ist . (Meins war leer.)

(Wenn Sie diese Schritte ausführen, muss der SQL Server-Browser nicht aktiviert werden, und Sie müssen nur Port 1433 und nicht 1434 zulassen.)

Diese zusätzlichen fünf Schritte sind etwas, an das ich mich nicht erinnern kann, jemals in einer früheren Version von SQL Server, Express oder auf andere Weise ausgeführt worden zu sein. Sie scheinen notwendig gewesen zu sein, weil ich anstelle einer Standardinstanz eine benannte Instanz (myservername \ SQLEXPRESS) auf dem Server verwende. Siehe hier:

Konfigurieren Sie einen Server so, dass er einen bestimmten TCP-Port überwacht (SQL Server Configuration Manager).

Ryan Lundy
quelle
7
Wenn SQL Server Express nicht die einzige Instanz ist, muss möglicherweise Port 1433 für andere Instanzen UNASSIGN. Ich hatte eine 2008 R2-Standardinstanz (MSSQLSERVER). Die einzige Möglichkeit, von außen eine Verbindung zu beiden herzustellen, besteht darin, der 2012-Instanz (siehe oben) Port 1433 zuzuweisen und die Portzuweisungen für die ältere Standardinstanz in TCP Dynamic zu ändern Ports = "0" und TCP Port = "" (leer). Wenn Sie es umgekehrt machen, erhalten Sie nur Zugriff auf die Standardinstanz.
Robert Calhoun
17
Diese IPAllEinstellung war der SAVIOR-Rat! Meins war wie deins ...: D
Leniel Maccaferri
18
Falls es jemand anderem hilft ... das hat geholfen, aber ich konnte immer noch keine Verbindung herstellen, bis ich den SQL Server-Browserdienst gestartet habe. (Hinweis: Ich musste dazu in die Windows-Anwendung "Dienste" gehen, da der Starttyp des SQL Server-Browserdienstes aus irgendeinem Grund "Deaktiviert" war. Der Starttyp wurde in "Automatisch" geändert, der Dienst wurde gestartet und war dann in der Lage zu verbinden.)
mercurial
9
Unter Windows 8 und SQL 2012 Express SP1, die auf der SQLEXPRESS-Instanz installiert waren, musste ich dynamische Ports auf einen anderen Wert als leer setzen (wenn Sie ihn gelöscht haben, auf 0 setzen, wird ein neuer zufälliger Port für Sie neu berechnet) UND BEIDE TCP öffnen Regeln für eingehende Ports 1433 und UDP 1434 in der Systemsteuerung für erweiterte Firewall. Wenn die dynamischen Ports leer waren, blieb der SQL Server beim Start hängen.
Tony Wall
10
Ich wollte nur Danke sagen und positiv stimmen. Du hast mir viel Zeit gespart. Stört es Sie, Ihren Beitrag mit der richtigen Verbindungssyntax zu aktualisieren? Ich muss myserver\sqlexpress,[portnumber]ohne die Klammern verwenden. Beachten Sie, dass es ist ,und nicht:
Marco
105

Der richtige Weg, um eine Verbindung zu Remote-SQL Server herzustellen (ohne den UDP-Port 1434 zu öffnen und den SQL Server-Browser zu aktivieren), besteht darin, IP und Port anstelle der benannten Instanz zu verwenden .

Die Verwendung von IP und Port anstelle einer benannten Instanz ist ebenfalls sicherer, da dadurch die Angriffsfläche verringert wird.

Vielleicht sprechen 2 Bilder 2000 Wörter ...

Diese Methode verwendet den angegebenen Port (das ist, was die meisten Leute wollen, glaube ich).

enter image description here

Für diese Methode müssen der UDP-Port 1434 geöffnet und der SQL Server-Browser ausgeführt werden.

enter image description here

Rosdi Kasim
quelle
Können Sie näher erläutern, was Sie damit meinen, dass dies der "richtige" Weg ist, dies zu tun?
Ryan Lundy
3
@Kyralessa Ha! ... jetzt, da ich nach 4-5 Stunden Haarziehen, das versucht, eine Verbindung zu meiner Remote-Instanz herzustellen, wieder nüchtern bin, sollte ich wahrscheinlich erklären, dass "richtig" hier aus meinem Kontext gelesen werden soll. Es ist 'falsch', eine Verbindung mit dem Instanznamen herzustellen, da ich den SQL Server-Browser nicht aktiviert habe.
Rosdi Kasim
Ich habe meiner Antwort einige Klarstellungen hinzugefügt, um Missverständnisse zu vermeiden.
Rosdi Kasim
1
Danke;) Wenn Sie keinen Zugriff zum Ausführen des Browserdienstes haben, müssen Sie den Port angeben.
Arman McHitarian
3
plus 1, um zu zeigen, dass MS Komma anstelle von Spalten als Trennzeichen für die Portnummer verwendet
Jorj
32

Eine Sache noch...

Kyralessa bietet großartige Informationen, aber ich muss noch etwas hinzufügen, wo ich auch nach diesem Artikel ratlos war.

Klicken Sie unter SQL Server-Netzwerkkonfiguration> Protokolle für Server> TCP / IP aktiviert auf. Klicken Sie mit der rechten Maustaste auf TCP / IP und wählen Sie Eigenschaften. Unter den IP-Adressen müssen Sie für jeden von Ihnen verwendeten Verbindungstyp Aktiviert auf Ja setzen.

enter image description here

Pete
quelle
18

Sie können dies verwenden, um dieses Problem zu lösen:

Gehen Sie zu START> EXECUTE und führen Sie CLICONFG.EXE aus.

Das Named Pipes-Protokoll steht an erster Stelle in der Liste. Beenden Sie es und fördern Sie TCP / IP.

Testen Sie die Anwendung gründlich.

Ich hoffe diese Hilfe.

Ageu
quelle
Wow, was für ein Juwel ... danke. Ich wusste nie, dass es das überhaupt gibt.
Louis van Tonder
1
Dadurch wird der CLIENT für die Verwendung von TCP / IP konfiguriert , nicht für den Server.
mcr
OMG, es funktioniert !! Ich habe mich gerade angemeldet, um für diese Antwort zu stimmen. danke
Aki
15

Sie können auch einstellen

Hören Sie alle auf NEIN

im Protokolldialog dann in der IP-Adresse IP1 (sagen wir)

Set aktiviert auf Ja,

Definieren Sie Ihre IP-Adresse.

Setzen Sie TCP Dynamic auf Blank und

TCP-Port auf 1433 (oder was auch immer)

Johnroster
quelle
Dies unter Windows 8.1 mit installiertem SQL 2012 Express SP1 zu tun, führte dazu, dass SQL beim Start hängen blieb :(
Zhaph - Ben Duguid
Ich habe alle IP-Einträge 1, 2, ... auf aktiviert + aktiv, gelöschter dynamischer, gelöschter Port und IPAll-Port auf 1433 gesetzt und musste dann Regeln hinzufügen, um TCP 1433 und UPD 1434 in der Firewall (1434) zu öffnen ist nicht erforderlich, wenn kein Name verwendet wird, sondern nur die Portnummer).
Mordachai
11

Dieser Artikel hat mir geholfen ...

So aktivieren Sie Remoteverbindungen in SQL Server

Alles in SQL Server wurde konfiguriert. Mein Problem war, dass die Firewall Port 1433 blockierte

JGilmartin
quelle
Jeder kennt die Konfiguration der zulässigen Azure-Ports oder stößt leicht darauf. Mir ist nicht in den Sinn gekommen, dass der Port möglicherweise von der WINDOWS VM-Firewall blockiert wird. Vielen Dank. + 1
2b77bee6-5445-4c77-b1eb-4df3e5
11

Ich hatte dieses Problem vor kurzem. 2015 Aug.

Gelöst durch Öffnen von SQL Server Configuration Manager

  • SQL Server-Netzwerkkonfiguration -> Protokolle für SQLEXPRESS
  • Eigenschaften auf der Registerkarte TCP / IP -> IP-Adressen
  • Alles bleibt Standard, setzen Sie nur IPALL: TCP Port auf 1433

Kann mit SQL Server Manager eine Verbindung zum Computer herstellen: [Hostadresse], 1433

Beispiel:

Geben Sie hier die Bildbeschreibung ein

DDan
quelle
6

Bei meiner Installation von SQL Server 2012 Developer Edition, die mit Standardeinstellungen installiert wurde, musste ich nur den SQL Server-Konfigurationsmanager -> SQL Server-Netzwerkkonfiguration -> Protokolle für MSSQLSERVER laden und TCP / IP von Deaktiviert in Aktiviert ändern.

Phil
quelle
1
Kurzer Hinweis: Für mich hat das nicht funktioniert. Aus irgendeinem Grund war die falsche IP vorhanden. Kyralessas Schritte haben jedoch den Trick getan, da sie die Aktualisierung der IP betrafen.
Brian MacKay
Dies funktioniert für einen meiner Server, aber nicht für den anderen.
Cheny
5

Ich musste eine Firewall-Eingangsportregel hinzufügen, um den UDP-Port 1434 zu öffnen. Dies ist diejenige, die der SQL Server-Browser abhört.

Tom Redfern
quelle
3

Ich bevorzuge die Art von "Rosdi Kasim", da dies keine Detailkonfiguration auf der IP erfordert.

Ich werde es auf jeden Fall wieder vergessen, wenn ich erneut versuche, einen anderen Server hochzufahren.

Halten Sie es einfach dumm (KISS), indem Sie einfach den SQL Server-Browserdienst aktivieren und dann die \ SQLEXPRESS hinter der IP hinzufügen, wenn Sie den Server verbinden.

Die direkte Verwendung von IP ohne "\ SQLEXPRESS" war mein Fehlerpunkt, da der Standardport nicht verwendet wird.

Vielen Dank.

Außerirdischer
quelle
3

Ich hatte das gleiche Problem mit der lokal installierten benannten Instanz von SQL Server 2014. Das Verbinden mit dem FQDN\InstanceNamewürde fehlschlagen, während das Verbinden nur mit meinem hostname\InstanceNamefunktioniert. Zum Beispiel: Verbinden mit mycomputername\sql2014funktioniert, 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.

BateTech
quelle
2

Ich musste den Port über Configuration Manager hinzufügen und die Portnummer in meiner SQL-Verbindung [Host] \ [Name der Datenbankinstanz ] 1433 hinzufügen

Beachten Sie das Komma zwischen Instanzname und Port

dynamiclynk
quelle
1

Ich hatte ein anderes Problem als alle bisher erwähnten Antworten!

Ich sollte zunächst sagen, dass ich es in Visual Studio hatte und nicht in SQL Server Express, aber die Lösung sollte genau dieselbe sein.

Nun, Gott, es ist eigentlich ganz einfach und vielleicht ein bisschen dumm. Als ich versuchte, eine Datenbank zu erstellen, schlug Visual Studio den Namen des SQL Servers vor und gab mir meinen Windows-Benutzernamen. Da es sich tatsächlich um den Namen des Servers handelt, habe ich mich dafür entschieden.

In Wirklichkeit war es tatsächlich mein Windows-Benutzername + \SQLEXPRESS. Wenn Sie keine Einstellungen geändert haben, gehört dies wahrscheinlich auch Ihnen. Wenn es funktioniert, hören Sie auf zu lesen. Das ist meine Antwort. Wenn es nicht funktioniert, ist der Name vielleicht anders.

Wenn Sie wie ich nur dieses Problem in Visual Studio hatten, um zu überprüfen, was Ihnen gehört, gehen Sie folgendermaßen vor:

  1. Öffnen Sie das SQL Server Management Studio- Symbol .
  2. Wenn Sie Ihren Server nicht sehen (standardmäßig links angedockt), drücken Sie F8oder gehen Sie zu Ansicht -> Objekt-Explorer .
  3. Klicken Sie mit der rechten Maustaste auf den Namen des Servers und wählen Sie Eigenschaften (Das letzte Element).
  4. Unten links sehen Sie den tatsächlichen Namen Ihres Servers unter " Server " (nicht Verbindung, sondern darüber).

Dies ist der Name des Servers und dies ist, was Sie versuchen sollten, eine Verbindung herzustellen! nicht das, was Visual Studio vorschlägt!

MasterMastic
quelle
1

In meinem Fall wurde die Datenbank auf einem nicht standardmäßigen Port ausgeführt. Überprüfen Sie, ob der Port, den Sie verbinden, mit dem Port übereinstimmt, auf dem die Datenbank ausgeführt wird. Wenn mehr Instanzen von SQL Server vorhanden sind, überprüfen Sie die richtige.

Tomas Kubes
quelle
0

Sie müssen lediglich den entsprechenden Port in der Firewall des Servers öffnen.

user1968210
quelle
6
Leider ist das nicht "alles was Sie tun müssen". Es müssen noch einige weitere Schritte unternommen werden, wie in der oben akzeptierten Antwort beschrieben.
Saluce
2
In meinem Fall war dies eigentlich alles, was ich tun musste, also zu Unrecht notierte und tatsächlich nützliche Eingaben.
MagicalArmchair
1
Das Hinzufügen einer Regel zum Öffnen von Port 1433 hat das Problem für mich behoben.
GiddyUpHorsey
Ich denke, es ist fair zu sagen, "viele Dinge müssen in Einklang gebracht werden, welche zusätzlichen Schritte für Sie notwendig sind, wird variieren"
Mordachai
Ich musste alles von Kyralessa und Pete und auch dieses machen, bevor ich Windows 10 für SQL bekommen konnte.
Alfadog67
0

Haben Sie Probleme beim Herstellen einer Verbindung zu SQL Server?

Versuchen Sie, die Firewall zu trennen.

Wenn Sie eine Verbindung mit getrennter Firewall herstellen können und möglicherweise einige Eingaberegeln wie "SQL Service Broker" übersehen, fügen Sie diese Eingaberegeln Ihrer Firewall hinzu:

"SQL ADMIN CONNECTION" TCP PORT 1434

UDP-PORT 1434 "SQL ADMIN CONNECTION"

"SQL ANALYSIS SERVICE" TCP PORT 2383

"SQL BROWSE ANALYSIS SERVICE" TCP PORT 2382

"SQL DEBUGGER / RPC" TCP PORT 135

"SQL SERVER" TCP PORT 1433 und andere, wenn Sie über Dinamic-Ports verfügen

"SQL SERVICE BROKER" TCP PORT 4022

Pau Dominguez
quelle