連接字串是 ADO.NET 應用與 SQL Server 溝通的鑰匙。本文整理最常見的 6 類連接模式、關鍵參數深度解析、SqlConnectionStringBuilder 強型別建構法、Visual Studio 設計工具生成法,並附上完整可執行範例。
| 場景 | 連接字串範例 | 說明 |
|---|---|---|
| 標準 SQL 驗證 | Data Source=myServer;Initial Catalog=myDB;User Id=usr;Password=pwd; | 最通用,跨網域、容器皆適用 |
| 指定埠號與網路庫 | Data Source=192.168.1.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDB;User ID=usr;Password=pwd; | 強制 TCP/IP,繞過命名管道 |
| 簡寫別名 | Server=myServer;Database=myDB;User ID=usr;Password=pwd;Trusted_Connection=False; | Server=Data Source,Database=Initial Catalog |
| Windows 整合驗證 | Server=myServer;Database=myDB;Trusted_Connection=True; | 當前 Windows 身分登入,無需帳密 |
| 具名實例 + 整合驗證 | Server=myServer\\Instance;Database=myDB;Trusted_Connection=True; | 雙反斜線或 @\"Server\\Instance\" |
| SSPI (推薦整合驗證寫法) | Data Source=myServer;Initial Catalog=myDB;Integrated Security=SSPI; | SSPI 等同 True,相容性最佳 |
True / SSPI:啟用 Windows 整合驗證,**忽略** 字串中的 User ID/Password。False(預設):使用 SQL Server 驗證,**必須** 提供 User ID/Password。Integrated Security=SSPI,避免大小寫/拼字差異。指定預設資料庫名稱,等同 Database。連接後可用 USE [OtherDB] 切換。
Connection Timeout=30:連線逾時秒數(預設 15)。Max Pool Size=100:連線池上限,高併發調大。Encrypt=True;TrustServerCertificate=False;:強制 TLS 加密(Azure SQL 必須)。Application Name=MyApp:SQL Profiler / DMV 易於識別來源。避免字串拼接錯誤、智慧提示完整、自動處理逸出字元:
var scsb = new SqlConnectionStringBuilder {
DataSource = @"(local)\\SQLEXPRESS",
InitialCatalog = "Northwind",
IntegratedSecurity = true, // 或 SSPI
// UserID = "usr", Password = "pwd", // SQL 驗證時啟用
ConnectTimeout = 30,
ApplicationName = "OrderSystem"
};
using (var conn = new SqlConnection(scsb.ConnectionString)) {
conn.Open();
// ...
}
ConnectionString 型別設定。(local)\\SQLEXPRESS)、驗證方式、資料庫名 → 測試連接 → 確定。app.config/web.config 內 <connectionStrings> 區段。ConfigurationManager.ConnectionStrings["MyConn"].ConnectionStringusing System;
using System.Data;
using System.Data.SqlClient;
namespace ConnectDB {
class Program {
static void Main() {
const string connStr = "Data Source=ServerName;Initial Catalog=DatabaseName;Integrated Security=SSPI";
using (var sqlCon = new SqlConnection(connStr))
using (var cmd = new SqlCommand("SELECT TOP 5 * FROM Customers", sqlCon))
using (var adapter = new SqlDataAdapter(cmd)) {
sqlCon.Open();
var ds = new DataSet();
adapter.Fill(ds);
Console.WriteLine(ds.GetXml()); // 輸出 XML 驗證
}
Console.ReadKey();
}
}
}
; 或 = 的密碼未加雙引號 → 解析錯誤。Integrated Security=True 仍保留 User ID → 被忽略,易誤以為權限不足。SqlConnectionStringBuilder 或設計工具生成。Encrypt=True。掌握這些模板與工具,連接字串不再是 Bug 溫床,而是穩定高效的資料通道。