Protocolos Go-MSSQLDB

O go-mssqldb driver suporta múltiplos protocolos de transporte para ligação ao SQL Server. Este artigo descreve cada protocolo e como o configurar.

Parâmetro do protocolo

Defina o protocol parâmetro de ligação para especificar o transporte:

Value Protocolo Description
tcp TCP/IP Protocolo padrão. Funciona em todas as plataformas.
np Canalizações nomeadas Comunicação entre processos do Windows. Funciona no Windows e Linux (com SMB).
lpc Memória partilhada Ligações locais apenas no Windows.
admin DAC (TCP) Ligação Dedicada ao Administrador. Liga-se ao endpoint do DAC.

Se não especificar um protocol, o driver usa TCP.

TCP/IP

O TCP é o protocolo padrão e mais comum. Especifique o host e a porta na cadeia de ligação:

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

Ou explicitamente:

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

Formato do prefixo do servidor

Também pode especificar o protocolo como prefixo no nome do servidor (formatos ADO/ODBC):

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

Note

No formato de prefixo ADO, a porta é separada por uma vírgula, não por dois pontos.

Canalizações nomeadas

Os canos nomeados usam o np protocolo. Especifique o caminho do tubo com o pipe parâmetro:

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

Ou usar o formato do prefixo do servidor:

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

O nome padrão do pipe corresponde \sql\query à instância padrão.

As versões atuais dos drivers suportam ligações de pipe nomeadas no Windows para Arm64, além de Windows e Linux para ambientes x86-64 que expõem o pipeline via SMB.

Nomes de pipes de instância nomeados

Para instâncias nomeadas, o caminho do tubo é tipicamente \MSSQL$INSTANCENAME\sql\query. Se souberes o caminho do tubo, especifica-o diretamente. Caso contrário, omita o pipe parâmetro e deixa o SQL Server Browser resolvê-lo.

Memória partilhada

A memória partilhada (lpc) fornece a comunicação mais rápida para ligações locais no Windows. Funciona apenas quando o cliente e o servidor estão na mesma máquina:

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

Ou com o prefixo do servidor:

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

Note

A memória partilhada não está disponível no Linux ou macOS.

Ligação Dedicada ao Administrador (DAC)

O DAC fornece uma ligação de diagnóstico especial ao SQL Server quando o servidor não responde. O DAC ouve numa porta dedicada (padrão: 1434 para instâncias por defeito):

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

Ou com o prefixo do servidor:

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

Warning

O SQL Server permite apenas uma ligação DAC de cada vez. Usa o DAC apenas para diagnósticos de emergência.

Navegador do SQL Server

Quando o driver se liga a uma instância nomeada sem uma porta especificada, contacta o serviço SQL Server Browser (na porta UDP 1434) para resolver a instância para uma porta TCP. Certifique-se de que o serviço SQL Server Browser está a correr na máquina de destino.

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

Orientação para seleção de protocolo

Scenario Protocolo recomendado
Ligações remotas tcp
Ligações locais no Windows lpc (mais rápido) ou tcp
Aplicações multiplataforma tcp
Diagnóstico de emergência admin
Aplicações legadas que requerem pipelines nomeados np