Протоколы GO-MSSQLDB

go-mssqldb Драйвер поддерживает несколько транспортных протоколов для подключения к SQL Server. В этой статье описывается каждый протокол и способы его настройки.

Параметр протокола

Задайте protocol параметр соединения так, чтобы задать транспорт:

Ценность Протокол Description
tcp TCP/IP Стандартный протокол. Работает на всех платформах.
np Именованные каналы Windows межпроцессная коммуникация. Работает на Windows и Linux (с SMB).
lpc Общая память Локальные подключения доступны только на Windows.
admin DAC (TCP) Выделенное подключение администратора. Подключается к конечной точке ЦАП.

Если не указать protocol, драйвер использует TCP.

TCP/IP

TCP — это стандартный и самый распространённый протокол. Укажите хост и порт в строка подключения:

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

Или явно:

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

Формат префикса сервера

Вы также можете указать протокол в качестве префикса на имени сервера (форматы ADO/ODBC):

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

Замечание

В формате префикса ADO порт разделён запятой, а не двоеточием.

Именованные каналы

Именованные трубы используют этот np протокол. Закажите путь к трубе с pipe помощью параметра:

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

Или используйте формат префикса сервера:

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

Имя трубы по умолчанию относится \sql\query к стандартному экземпляру.

Текущие версии драйверов поддерживают именованные соединения по трубам в Windows для Arm64, а также в Windows и Linux для сред x86-64, которые открывают трубу через SMB.

Названные имена инстансов

Для именованных экземпляров путь трубы обычно \MSSQL$INSTANCENAME\sql\queryравен . Если вы знаете путь трубы, указывайте его напрямую. В противном случае опустите pipe параметр и пусть браузер SQL Server решит проблему.

Общая память

Общая память (lpc) обеспечивает самую быструю связь для локальных соединений на Windows. Это работает только тогда, когда клиент и сервер находятся на одном компьютере:

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

Или с префиксом сервера:

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

Замечание

Общая память недоступна на Linux или macOS.

Выделенное подключение администратора (DAC)

ЦАП обеспечивает специальное диагностическое соединение с SQL Server, когда сервер не отвечает. ЦАП прослушивается на выделенном порте (по умолчанию: 1434 для стандартных экземпляров):

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

Или с префиксом сервера:

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

Предупреждение

SQL Server поддерживает только одно подключение к DAC одновременно. Используйте ЦАП только для экстренной диагностики.

браузер SQL Server

Когда драйвер подключается к именованому экземпляру без указанного порта, он связывается с сервисом SQL Server Browser (на UDP порте 1434), чтобы разрешить экземпляр с TCP-портом. Убедитесь, что сервис SQL Server Browser работает на целевой машине.

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

Рекомендации по выбору протокола

Сценарий Рекомендуемый протокол
Удалённые соединения tcp
Локальные подключения на Windows lpc (самый быстрый) или tcp
Кроссплатформенные приложения tcp
Экстренная диагностика admin
Устаревшие приложения, требующие именованных труб np