GO-MSSQLDB 协议

go-mssqldb驱动程序支持多种传输协议以连接 SQL Server。 本文介绍了每种协议及其配置方法。

协议参数

设置 protocol 连接参数以指定传输方式:

Value Protocol Description
tcp TCP/IP 默认协议。 适用于所有平台。
np 命名管道 Windows进程间通信。 支持Windows和Linux(使用SMB)。
lpc 共享内存 仅限Windows本地连接。
admin DAC(TCP) 专用管理员连接。 连接到DAC端点。

如果你不指定 , 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 上通过 SMB 暴露管道的 x86-64 环境。

命名实例管道名称

对于命名实例,管道路径通常 \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)

当服务器无响应时,DAC会提供与SQL Server的特殊诊断连接。 DAC监听专用端口(默认实例为1434):

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

或者用服务器前缀:

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

Warning

SQL Server 一次只允许一个 DAC 连接。 DAC只用于紧急诊断。

SQL Server 浏览器

当驱动程序连接到未指定端口的命名实例时,它会联系 SQL Server 浏览器服务(UDP 端口 1434)以解析该实例为 TCP 端口。 确保目标机器上运行着SQL Server浏览器服务。

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

协议选择指南

情景 推荐方案
远程连接 tcp
Windows 上的本地连接 lpc (最快)或 tcp
跨平台应用 tcp
紧急诊断 admin
需要命名管道的遗留应用 np