本文提供驅動程式所接受 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 |
ReadOnly、ReadWrite |
宣告應用程式是進行唯讀或讀寫操作連接。 用於 AlwaysOn 唯讀路由。 |
工作站與 SPN
| 參數 | 預設 | Description |
|---|---|---|
Workstation ID |
- | 登入記錄中傳送工作站名稱。 |
ServerSPN |
- | 服務主體名稱,代表 SQL Server。 僅在非預設 SPN 配置中必須。 |
Protocol
| 參數 | 價值 | Description |
|---|---|---|
protocol |
tcp、np、lpc、admin |
傳輸通訊協定。 詳見 議定書。 |
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.0, 1.1, 1.2, 1.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 陳述式在每次建立新連線後立即執行,連線還沒回傳給呼叫者之前。