Go-MSSQLDB 連線選項

本文提供驅動程式所接受 go-mssqldb 的所有連接參數的完整參考資料。 關於 連接字串 格式語法,請參見 Connection strings

常見參數

參數 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 ReadOnlyReadWrite 宣告應用程式是進行唯讀或讀寫操作連接。 用於 AlwaysOn 唯讀路由。

工作站與 SPN

參數 預設 Description
Workstation ID - 登入記錄中傳送工作站名稱。
ServerSPN - 服務主體名稱,代表 SQL Server。 僅在非預設 SPN 配置中必須。

Protocol

參數 價值 Description
protocol tcpnplpcadmin 傳輸通訊協定。 詳見 議定書
pipe - 命名的管道路徑。 僅在 protocol=np時適用。

永遠加密

參數 預設 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.01.11.21.3, 。

如需詳細的加密指引,請參見 「加密與憑證」。

對數旗標

使用參數 log 來控制診斷輸出。 這些值是位元遮罩旗標,你可以透過將整數值加起來:

價值觀 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 陳述式在每次建立新連線後立即執行,連線還沒回傳給呼叫者之前。