Wie kann eine Verbindung zu einer lokalen SQL Server-Instanz über die IP-Adresse in SQL Server Management Studio hergestellt werden? [Duplikat]
Ich schreibe einen Testcode, der erforderlich ist, um eine Verbindung zu einer lokalen SQL Server-Instanz (SQL Server 2017 - Developer Edition) über die IP-Adresse herzustellen. Ich habe die SQL Server-Instanz auf meinem Computer eingerichtet, kann jedoch nicht den richtigen IP + -Port ermitteln, der für die Servereigenschaft meiner Verbindungszeichenfolge verwendet werden soll.
Als Ausgangspunkt versuche ich, mit SQL Server Management Studio (über die IP-Adresse) zumindest manuell eine Verbindung zu meiner Serverinstanz herzustellen, aber ich kann es anscheinend nicht herausfinden.
- Wie finde ich die IP-Adresse und den Port meiner lokalen SQL Server-Instanz?
- Was ist das richtige Format, in das ich die IP-Adresse und den Port in das Feld Servername von SSMS eingeben sollte (und entspricht es dem Format einer Server-Eigenschaft für Verbindungszeichenfolgen)?
Ich habe versucht, die IP-Adresse zu finden, auf der der folgende SQL-Code ausgeführt wird:
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
Die Felder local_net_address und local_tcp_port sind jedoch NULL und die client_net_address ist auf Folgendes festgelegt <local machine>
:

Ich habe auch versucht, in den SQL Server-Konfigurations-Manager im Abschnitt SQL Server-Netzwerkkonfiguration zu wechseln und TCP / IP zu aktivieren. Dann habe ich versucht, eine Mischung aus IP4- und IP6-Adressen mit Port 1433 zu verwenden (der in den TCP / IP-Eigenschaften standardmäßig leer ist, aber ich habe versucht, ihn leer zu lassen und auf 1433 zu setzen), und das hat nicht funktioniert.

Beim Versuch, eine Verbindung über SSMS für die verschiedenen Kombinationen der IP4-Adresse mit und ohne angegebenem Port herzustellen, sind folgende Fehler aufgetreten:
Kein Port angegeben:

Port angegeben mit Doppelpunkt:

Port angegeben mit Komma:

Ich habe auch versucht, über 127.0.0.1 mit den gleichen Kombinationen von Port 1433 oben eine Verbindung herzustellen, ohne Erfolg. (Ich erhalte ähnliche Fehler mit Ausnahme der folgenden Kombinationen.)
127.0.0.1 ohne Port:

127.0.0.1 mit Port über Komma:

Antworten
Sie können versuchen, Enabled für alle einzelnen IP-Adressen auf "no" zu setzen und ganz unten den gewünschten Port anzugeben. Ich benutze im Allgemeinen den gleichen Port für alle IPs, also fange ich sie alle mit nur einer Konfiguration ab. Wenn für nichts anderes, als Maßnahme zur Fehlerbehebung.

Die Abfrage, die Sie in einer Verbindung zu Ihrer lokalen Serverinstanz ausführen, gibt die aktuellen Verbindungsinformationen wieder.
Eingang
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
Ausgabe
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| net_transport | protocol_type | auth_scheme | local_net_address | local_tcp_port | client_net_address |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| Shared memory | TSQL | NTLM | NULL | NULL | <local machine> |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
Wenn Sie das SSMS-Anmeldefeld öffnen und Ihre Anmeldeinformationen eingeben, stellen Sie eine Verbindung über die Shared-Memory-Verbindung her, ohne den TCP / IP-Stack des Computers zu durchlaufen.
Bestimmen Sie die IP und den Port Ihrer Instanz
Führen Sie den folgenden Befehl in einer Eingabeaufforderung mit erhöhten Rechten aus, um die Prozesse, ausführbaren Dateien und Prozess-IDs der ausgeführten Prozesse abzurufen:
Eingang
C:\> netstat -abon
Ausgabe
TCP 127.0.0.1:50644 0.0.0.0:0 ABHÖREN 6964
[sqlservr.exe]
Möglicherweise finden Sie mehrere Einträge für Ihren sqlservr.exe-Prozess. Stellen Sie sicher, dass die Nummer am Ende identisch ist (hier: 6964). Dies ist die Prozess-ID Ihres SQL Server-Dienstes. Öffnen Sie den Task-Manager und überprüfen Sie die Prozess-ID des Prozesses sqlservr.exe für diese Instanz mit der Ausgabe des nestat -abon
Befehls. Sie können mehrere Einträge für dieselbe Prozess-ID haben.
Mögliche Einträge
...
TCP 127.0.0.1:50644 0.0.0.0:0 ABH™REN 6964
[sqlservr.exe]
TCP [::1]:50644 [::]:0 ABH™REN 6964
[sqlservr.exe]
TCP 0.0.0.0:53481 0.0.0.0:0 ABH™REN 6964
[sqlservr.exe]
Anhand der obigen Informationen kann ich feststellen, dass eine meiner lokalen SQL Server-Instanzen so konfiguriert ist, dass sie IPv4 und IPv6 überwacht und die TCP-Ports 50644 und 53481 verwendet.
Wenn Sie in Ihrem SQL Server-Konfigurationsmanager nach unten scrollen, finden Sie den dynamischen TCP-Port, der von Ihrer lokalen Instanz verwendet wird.

Mit diesen Informationen kann ich versuchen, über das SSMS-Anmeldefeld eine Verbindung herzustellen und das richtige Protokoll festzulegen.
Anmelden bei der SQL Server-Instanz mit SSMS
Öffnen Sie SSMS und geben Sie die IP-Adresse Ihres lokalen Laptops (oder die Adresse 169.254.xxx.xxx aus der TCP / IP SQL Server-Konfiguration) und den dynamischen Port wie folgt ein:

Und du bist dabei!
Überprüfen mit Ihrem Skript
Eingang
SELECT
CONNECTIONPROPERTY('net_transport') AS net_transport,
CONNECTIONPROPERTY('protocol_type') AS protocol_type,
CONNECTIONPROPERTY('auth_scheme') AS auth_scheme,
CONNECTIONPROPERTY('local_net_address') AS local_net_address,
CONNECTIONPROPERTY('local_tcp_port') AS local_tcp_port,
CONNECTIONPROPERTY('client_net_address') AS client_net_address
Ausgabe
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| net_transport | protocol_type | auth_scheme | local_net_address | local_tcp_port | client_net_address |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
| TCP | TSQL | SQL | 161.78.198.140 | -12055 | 161.78.198.140 |
+---------------+---------------+-------------+-------------------+----------------+--------------------+
Erläuterung
In 127.0.0.1:50644
meiner netstat -abon
Ausgabe ist die IPv4-Adresse angegeben, die für die Admin-Verbindung verwendet wird, wenn die TCP / IP-Konfiguration einer lokalen Instanz für die Verwendung dynamischer Ports konfiguriert ist. In meinem Beispiel 127.0.0.1,50644
würde das nicht funktionieren.
Dies [::1]:50644
gilt auch für IPv6.
In 0.0.0.0:53481
dieser Zeile wird erläutert, dass der sqlservr.exe
(32) -Prozess alle IP-Adressen am Port 53481
auf eine TCP-Verbindung zur SQL Server-Instanz überwacht.
Alternativen
Sehen ERRORLOG
Sie sich während des Startvorgangs die aktuelle Datei Ihrer Instanz an, um festzustellen, was verwendet werden soll:
...
2020-11-19 15:52:04.29 spid11s A self-generated certificate was successfully loaded for encryption.
2020-11-19 15:52:04.29 spid11s Server is listening on [ 'any' <ipv6> 53481].
2020-11-19 15:52:04.29 spid11s Server is listening on [ 'any' <ipv4> 53481]. <<== HERE!!
2020-11-19 15:52:04.29 spid11s Server local connection provider is ready to accept connection on [ \\.\pipe\SQLLocal\SQL2016CI ].
2020-11-19 15:52:04.29 spid11s Server local connection provider is ready to accept connection on [ \\.\pipe\MSSQL$SQL2016CI\sql\query ].
2020-11-19 15:52:04.30 Server Server is listening on [ ::1 <ipv6> 50644].
2020-11-19 15:52:04.30 Server Server is listening on [ 127.0.0.1 <ipv4> 50644].
2020-11-19 15:52:04.30 Server Dedicated admin connection support was established for listening locally on port 50644. <<== HERE!!
...
Viel Glück.
Mein Referenzbeitrag Was sind gültige Verbindungszeichenfolgen für das SSMS-Anmeldefeld? Bei Setups mit mehreren Instanzen, mit denen TCP / IP-Einstellungen auf einem einzelnen Computer ausgeführt werden können, finden Sie weitere Informationen dazu, was Sie bei Konfigurationen mit mehreren Instanzen auf einem Server / Laptop erwarten können.