Go-MSSQLDB 连接选项

本文提供了驱动程序接受 go-mssqldb 的所有连接参数的完整参考资料。 关于连接字符串格式语法,请参见连接字符串

通用参数

参数 Aliases 违约 Description
user id user - SQL Server 登录名。
password - - SQL Server登录密码。
database - - 目标数据库。
connection timeout - 0 登录超时只需几秒钟。 0 无限期等待。 更倾向于使用 Go 上下文进行连接和查询超时。
dial timeout - 15 x protocol count 网络拨号超时只需几秒钟。 0 无限期等待。 驱动程序默认每个注册协议为15秒。
encrypt - false 加密模式。 Azure SQL 总是需要服务器端加密。 参见 加密与证书
app name - - 登录记录中发送的应用名称。
authenticator - - 由外部包注册的自定义认证器,如 azuread

服务器与端口

在ADO和ODBC格式中,服务器和端口是独立的参数:

参数 违约 Description
server localhost SQL Server主机名,可选地包含 \instance
port 1433 TCP端口号。

在 URL 格式中,直接在 URL 中指定主机和端口: sqlserver://host:port

故障转移

参数 违约 Description
failoverpartner - 故障切换合作伙伴服务器主机名。
failoverpartnerspn - 故障切换合作伙伴的服务主体名称(SPN)。
failoverport 1433 备援合作伙伴的TCP端口。

当主服务器无法访问时,驱动程序会尝试自动连接到故障切换伙伴。

网络与性能

参数 违约 Description
packet size 4096 TDS数据包大小(字节单位)。 有效范围:512-32767。
keepAlive 30 保持生命的间隔在几秒内。 0 使用操作系统默认设置。
TrustServerCertificate 取决于 encrypt true时,跳过服务器证书验证。 默认情况下是false指定时encrypttrueencrypt省略。 当encrypt=strict时,将被忽略。 不建议用于生产。
multisubnetfailover - 为AlwaysOn可用性组启用多子网故障切换。

应用程序意向

参数 价值观 Description
ApplicationIntent ReadOnlyReadWrite 声明应用程序是只读连接还是读写操作。 用于AlwaysOn只读路由。

工作站与SPN

参数 违约 Description
Workstation ID - 登录记录中发送了工作站名称。
ServerSPN - SQL Server 的服务主体名称。 仅在非默认的SPN配置中要求。

Protocol

参数 价值观 Description
protocol tcpnplpcadmin 传输协议。 参见 协议
pipe - 命名管道路径。 仅在 protocol=np时适用。

始终加密 (Always Encrypted)

参数 违约 Description
columnencryption None 设置为 true 启用始终加密。 参见 “始终加密”。

加密与TLS

参数 违约 Description
encrypt 参见 常见参数 strict(TDS 8.0), true/mandatory,/falseoptional , . disable
TrustServerCertificate 取决于 encrypt true时跳过证书验证。 默认情况下是false指定时encrypttrueencrypt省略。 当encrypt=strict时,将被忽略。
certificate None 通往PEM或DER证书文件的路径,用于证书链验证。
serverCertificate None 路径指向PEM或DER证书文件,用于字节级比较(v1.5.0及更高版本)。
hostnameincertificate None 覆盖TLS证书验证中使用的主机名称。
tlsmin None 最低TLS版本:1.01.1, , 1.21.3, 。

有关详细的加密指导,请参见 “加密与证书”。

日志标志

用参数 log 来控制诊断输出。 值是位掩码标志,你可以通过将整数值加起来:

Value Description
1 日志错误
2 日志消息
4 原木排
8 记录 SQL 语句
16 日志参数
32 日志事务
64 日志调试信息
128 日志重试

示例:要记录错误和SQL语句,设置 log=9 (1 + 8)。

更多信息请参见 日志与诊断

唯一标识符列

驱动程序默认将 uniqueidentifier 列读取为原始字节数组。 要获得标准的GUID格式字符串,请用扫描 进入 mssql.UniqueIdentifier 代替 string[]byte。 驱动不支持通过连接参数自动转换GUID。

SessionInitSQL

SessionInitSQL不是 连接字符串 参数。 通过 NewConnectorConfig API设置:

import (
    "database/sql"
    "github.com/microsoft/go-mssqldb"
    "github.com/microsoft/go-mssqldb/msdsn"
)

config := msdsn.Config{
    Host:     "<server>",
    Port:     1433,
    Database: "AdventureWorks2025",
}

connector := mssql.NewConnectorConfig(config)
connector.SessionInitSQL = "SET ANSI_NULLS ON"
db := sql.OpenDB(connector)

SQL 语句在每次新连接建立后立即运行,连接返回调用者之前。