SQL Server wird gestartet, hat jedoch keinen Port abgehört

9

Ich habe SQL Server 2012 neu installiert. Es wurde noch keine Datenbank erstellt. Und ich kann das Management Studio mit sa / password öffnen. Die Binn \ sqlservr.exe wird als Dienst gestartet und ich kann sehen, dass sie in der Dienstliste gestartet wurde. Es hat jedoch nicht den 1433-Port abgehört oder sogar standardmäßig keinen Port abgehört, wie ich unten überprüft habe:

tasklist|find /I "sql"

Ich habe:

sqlservr.exe                  5668 Services                   0     40,112 K

in dem 5668 denke ich ist die PID. Und um dann PID = "5668" zu erhalten, hört man auf welchen Port:

netstat -ano | find /I "5668"

aber ich habe nichts außer leer. Andererseits habe ich nach der Suche nach Beiträgen auf dieser Site die Konfiguration meines SQL Servers noch einmal überprüft: Start-> Alle Programme -> Microsoft SQL Server 2012 -> Konfigurationstools -> SQL Server-Konfigurationsmanager-> SQL Server SQL Native Client 11.0 Konfiguration -> Client-Protokolle -> TCP / IP -> Standardport 1433. Es gibt drei Dienste: SQL Server (MyInstanceName), SQL Server-Agent (MyInstanceName) und SQL Server-Browser. Die letzten beiden werden gestoppt.

SQL Server Configuration Manager-> SQL Server-Netzwerkkonfiguration-> Protokolle für MyInstanceName -> TCP / IP ist standardmäßig deaktiviert, nachdem ich es aktiviert und den Dienst neu gestartet und den netstat -ano | wiederholt habe find / I "newPIDNum" Befehl Ich habe den gefunden

TCP    0.0.0.0:52395          0.0.0.0:0              LISTENING  5668(newPIDNum)   

Warum 52395 statt 1433? Und ich konnte den DSN nicht mit dem Windows ODBC-Datenquellenadministrator erstellen, was mir einen Fehler zurückgibt: Der angegebene SQL Server wurde nicht gefunden. Irgendeine Hilfe für mich? Vielen Dank.


quelle
Standard-SQL Server-Netzwerkkonfiguration (für 2008 kann ich die Version 2012 nicht finden, aber ich denke nicht, dass es anders ist)
Damien_The_Unbeliever
Vielen Dank. Eine wirklich gute Hilfe für mich. Noch mehr Kommentare zu meiner DSN-Kiste?
Es sieht so aus, als würden Sie eine benannte Instanz verwenden (soweit ich weiß, lauscht nur die Standardinstanz auf 1433). Geben Sie den Instanznamen an, wenn Sie versuchen, den DSN zu erstellen?
Damien_The_Unbeliever
Ja, bei der Installation habe ich einen Namen für die Instanz eingegeben. Beim Erstellen des DSN wurde ich aufgefordert, einen DSN-Namen (ich habe einen beliebigen Namen eingegeben) und einen SQL-Server einzugeben, zu dem eine Verbindung hergestellt werden soll (dies ist ein Dropdown-Auswahlfeld, und ich habe zwei Auswahlmöglichkeiten versucht, beide schlagen fehl, eine ist (lokal), eine andere ist <.MyInstanceName>),
Ich habe noch keinen anderen Ort gesehen, an dem der MyInstanceName eingefügt werden könnte. Über die nächste Schaltfläche erhalte ich eine Authentifizierung sowie eine <Client-Konfiguration>, mit der ich den <Serveralias>, <Servername> festlegen und <Port dynamisch bestimmen> aktivieren kann.

Antworten:

13

Warum 52395 statt 1433

Benannte Instanzen überwachen dynamische Ports. Ist die Aufgabe des SQL Server Browser Service , die Clients über den tatsächlichen Port zu informieren. Der SQL-Browser hört UDP 1434 ab und beantwortet Fragen der Form "Was ist der Listening-Port der Instanz" foo "?". Der SQL Server-Browserdienst ist sowohl für TCP- als auch für Named Pipes-Protokolle erforderlich. Clients verwenden den SQL Server-Browser transparent, ohne dass eine spezielle Konfiguration erforderlich ist. Durch einfaches Angeben eines Instanznamens in der Verbindungszeichenfolge (oder im ODBC-DSN) weiß die Clientbibliothek, dass sie sich zuerst an den SQL Server-Browserdienst wenden muss.

Es gibt 3 Dienste: SQL Server (MyInstanceName), SQL Server Agent (MyInstanceName) und SQL Server Browser. Die letzten beiden werden gestoppt

Damit der SQL Server-Browser seine Aufgabe erfüllen kann, muss er gestartet werden. Starten Sie es und ändern Sie den Starttyp in "Automatisch".

Nebenbei bemerkt, eine häufig verwendete alternative Konfiguration besteht darin, statische Ports für die benannte Instanz zu verwenden und den Port in der Verbindungszeichenfolge ( tcp:<hostname>:<port>) anzugeben . Es hat den Vorteil, dass der SQL Server-Browser aus der Gleichung herausgenommen wird, erfordert jedoch eine sorgfältige Wartung der Clients. Das Ändern des Überwachungsports erfordert orchestrierte Änderungen auf allen Clients, allen Computern und an allen Standorten, was normalerweise sehr schmerzhaft ist. Ich empfehle stattdessen die Abhängigkeit vom SQL Server-Browser.

Remus Rusanu
quelle
13

Was meinen SQL Server dazu brachte, auf TCPVerbindungen an Port 1433 zu warten, war Folgendes ...

  1. Konfigurationstools / SQL Server Configuration Manager
  2. Klicken Sie in der SQL Server-Netzwerkkonfiguration auf den Instanznamen
  3. TCPKommunikation aktivieren
  4. Klicken Sie mit der rechten Maustaste auf den TCPKommunikationseintrag und wählen SieProperties
  5. Klicken Sie auf die Registerkarte IP-Adressen
  6. Aktivieren Sie alle Nicht-VMnet-IP-Adressen und geben Sie 1433 in den PortEintrag für " IPAll " ein.
  7. Starten Sie den SQL Server auf der Registerkarte SQL Server-Dienste neu
  8. Überprüfen Sie Ihre Konfiguration mit netstat -an:

    C:\>netstat -an | find "1433"
      TCP    0.0.0.0:1433           0.0.0.0:0              LISTENING
      TCP    [::]:1433              [::]:0                 LISTENING
Aal ghEEz
quelle
1
Dies ist nur eine Lösung, die für mich funktioniert. Alle anderen Handbücher sagen nicht einmal etwas über den IPAII-Anschluss aus. Danke Mann, du hast meinen Tag gemacht
QkiZ
1

Firewalls - 3 davon

Personen, die mit neueren Windows-Versionen nicht vertraut sind (ich bin mit keiner nach XP vertraut und habe versucht, SQL Server unter Windows 10 zu installieren):

  • Ihre Firewall muss an 3 verschiedenen Stellen ausgeschaltet werden (dh für 3 verschiedene Profile).

Wenn Sie dies nur für das erste tun, das Sie sehen (Domänenprofil), werden Sie sich immer noch fragen, warum Sie eine Verbindung zu Port 80 (IIS), nicht jedoch zu 1433 (SQL Server) herstellen können.

Geben Sie hier die Bildbeschreibung ein

Sridhar Sarnobat
quelle
1

Ich kann noch keinen Kommentar abgeben (Ruf niedrig, da nicht sehr aktiv): Das Deaktivieren der Windows-Firewall, wie oben erwähnt, ist jedoch die schlechteste Antwort. Richtig wäre: Erstellen Sie Firewall-Regeln in "Inbound", um die Kommunikation mit Port 1433 auf den lokalen IPs (oder allen) zu ermöglichen, die Sie benötigen. Außerdem empfehle ich festzulegen, welche Remote-IPs eine Verbindung zu diesem SQL Server herstellen dürfen.

JouMxyzptlk
quelle