本文提供了驱动程序接受 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指定时encrypt和trueencrypt省略。 当encrypt=strict时,将被忽略。 不建议用于生产。 |
multisubnetfailover |
- | 为AlwaysOn可用性组启用多子网故障切换。 |
应用程序意向
| 参数 | 价值观 | Description |
|---|---|---|
ApplicationIntent |
ReadOnly、ReadWrite |
声明应用程序是只读连接还是读写操作。 用于AlwaysOn只读路由。 |
工作站与SPN
| 参数 | 违约 | Description |
|---|---|---|
Workstation ID |
- | 登录记录中发送了工作站名称。 |
ServerSPN |
- | SQL Server 的服务主体名称。 仅在非默认的SPN配置中要求。 |
Protocol
| 参数 | 价值观 | Description |
|---|---|---|
protocol |
tcp、np、lpc、admin |
传输协议。 参见 协议。 |
pipe |
- | 命名管道路径。 仅在 protocol=np时适用。 |
始终加密 (Always Encrypted)
| 参数 | 违约 | Description |
|---|---|---|
columnencryption |
None | 设置为 true 启用始终加密。 参见 “始终加密”。 |
加密与TLS
| 参数 | 违约 | Description |
|---|---|---|
encrypt |
参见 常见参数 |
strict(TDS 8.0), true/mandatory,/falseoptional , . disable |
TrustServerCertificate |
取决于 encrypt |
当 true时跳过证书验证。 默认情况下是false指定时encrypt和trueencrypt省略。 当encrypt=strict时,将被忽略。 |
certificate |
None | 通往PEM或DER证书文件的路径,用于证书链验证。 |
serverCertificate |
None | 路径指向PEM或DER证书文件,用于字节级比较(v1.5.0及更高版本)。 |
hostnameincertificate |
None | 覆盖TLS证书验证中使用的主机名称。 |
tlsmin |
None | 最低TLS版本:1.0, 1.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 语句在每次新连接建立后立即运行,连接返回调用者之前。