go-mssqldb-protokolle

Der Treiber go-mssqldb unterstützt mehrere Transportprotokolle für die Verbindung mit SQL Server. Dieser Artikel beschreibt jedes Protokoll und wie man es konfiguriert.

Protokollparameter

Setzen Sie den protocol Verbindungsparameter ein, um den Transport zu spezifizieren:

Value Protocol Beschreibung
tcp TCP/IP Standardprotokoll. Funktioniert auf allen Plattformen.
np Named Pipes Windows-Kommunikation zwischen Prozessen. Funktioniert unter Windows und Linux (mit SMB).
lpc Shared Memory Lokale Verbindungen nur unter Windows.
admin DAC (TCP) Dedizierte Administratorverbindung. Verbindet sich mit dem DAC-Endpunkt.

Wenn du kein protocolSpeifiz angibst, verwendet der Treiber TCP.

TCP/IP

TCP ist das Standard- und gängigste Protokoll. Spezifizieren Sie Host und Port in der Verbindungszeichenfolge:

sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025

Oder explizit:

sqlserver://<user>:<password>@<server>:1433?database=AdventureWorks2025&protocol=tcp

Serverpräfix-Format

Sie können das Protokoll auch als Präfix auf dem Servernamen angeben (ADO/ODBC-Formate):

server=tcp:<server>,1433;user id=<user>;password=<password>;database=AdventureWorks2025

Hinweis

Im ADO-Präfix-Format ist der Port durch ein Komma und nicht durch Doppelpunkt getrennt.

Named Pipes

Benannte Rohre verwenden das Protokoll np . Spezifizieren Sie den Rohrpfad mit dem Parameter pipe :

sqlserver://<user>:<password>@<server>?database=AdventureWorks2025&protocol=np&pipe=\sql\query

Oder verwenden Sie das Serverpräfix-Format:

server=np:<server>\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025

Der Standard-Pipe-Name ist \sql\query für die Standardinstanz.

Benannte Instanz-Pipenamen

Für benannte Instanzen ist der Rohrpfad typischerweise \MSSQL$INSTANCENAME\sql\query. Wenn du den Rohrweg kennst, gib ihn direkt an. Andernfalls solltest du den Parameter pipe weglassen und SQL Server Browser ihn auflösen lassen.

Shared Memory

Gemeinsamer Speicher (lpc) bietet die schnellste Kommunikation für lokale Verbindungen unter Windows. Es funktioniert nur, wenn Client und Server auf derselben Maschine sind:

sqlserver://<user>:<password>@localhost?database=AdventureWorks2025&protocol=lpc

Oder mit dem Server-Präfix:

server=lpc:.\myinstance;user id=<user>;password=<password>;database=AdventureWorks2025

Hinweis

Gemeinsamer Speicher ist weder unter Linux noch macOS verfügbar.

Dedizierte Administratorverbindung (DAC)

Der DAC stellt eine spezielle diagnostische Verbindung zum SQL Server bereit, wenn der Server nicht reagiert. Der DAC hört an einem dedizierten Port (Standard: 1434 für Standardinstanzen):

sqlserver://<user>:<password>@<server>?database=AdventureWorks2025&protocol=admin

Oder mit dem Server-Präfix:

server=admin:<server>;user id=<user>;password=<password>;database=AdventureWorks2025

Warning

SQL Server erlaubt jeweils nur eine DAC-Verbindung. Benutze den DAC nur für Notfalldiagnostik.

SQL Server Browser

Wenn der Treiber sich mit einer benannten Instanz ohne angegebenen Port verbindet, kontaktiert er den SQL Server Browser-Service (auf UDP-Port 1434), um die Instanz auf einen TCP-Port umzuleiten. Stellen Sie sicher, dass der SQL Server Browser-Dienst auf dem Zielrechner läuft.

sqlserver://<user>:<password>@<server>\myinstance?database=AdventureWorks2025

Richtlinien zur Protokollauswahl

Szenario Empfohlenes Protokoll
Fernverbindungen tcp
Lokale Verbindungen unter Windows lpc (schnellste) oder tcp
Plattformübergreifende Anwendungen tcp
Notfalldiagnostik admin
Altanwendungen, die benannte Rohre erfordern np