首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

資料庫連接字串完全指南:關鍵字解析、驗證模式與 ADO.NET 實戰範例

     編輯:MySQL 資料庫相關知識

連接字串參數迷霧:一篇講透關鍵字語意

連接字串看似簡單,卻藏著許多同義詞、預設值陷阱與安全隱患。本文系統梳理核心關鍵字、驗證模式選擇、ADO.NET 實戰範例,助你寫出正確、安全、可維護的連接字串。

核心關鍵字對照表

關鍵字 (別名)說明備註
Data Source / Server / Address / Addr / Network Address伺服器位址:IP、主機名、實例名 (如 `localhost\SQLEXPRESS`)、`(local)`必填
Initial Catalog / Database預設資料庫名兩者完全等價,擇一使用
User ID / UIDSQL 認證帳號搭配 Password 使用
Password / PWDSQL 認證密碼含特殊字元需逸出
Integrated Security / Trusted_ConnectionWindows 整合驗證:`true/yes/SSPI` 啟用,`false/no` 關閉強烈建議 SSPI,啟用時忽略 UID/PWD
Persist Security Info是否在連接開啟後允許透過屬性取得密碼預設 `false` (安全),勿改 `true`
Connect Timeout / Connection Timeout連線逾時秒數預設 15 秒,網路不穩可調大
Encrypt強制 TLS 加密傳輸`true` 需伺服器有效憑證
TrustServerCertificate信任伺服器憑證 (跳過驗證)開發/測試環境配合 Encrypt=true 使用
Application Name應用程式名稱,顯示於 `sys.dm_exec_sessions`利於 DBA 追蹤與資源管控
MultipleActiveResultSets (MARS)單一連接支援多個作用中結果集預設 `false`,Entity Framework 常需 `true`
Pooling連接池啟用預設 `true`,極少關閉
Min Pool Size / Max Pool Size連接池上下限高併發可調大 Max (預設 100)

驗證模式深度解析

1. Windows 整合驗證 (Trusted_Connection / Integrated Security=SSPI)

Server=(local);Database=Northwind;Integrated Security=SSPI;
  • 使用當前執行緒/進程的 Windows 身分連線。
  • 優點: 無密碼洩漏風險、受 Kerberos/NTLM 保護、支援委派。
  • 前提: SQL Server 啟用混合模式或僅 Windows 驗證、網路支援 Kerberos/SPN 正確。
  • 適用: 內網應用、服務帳號執行的 Windows Service/IIS AppPool。

2. SQL Server 驗證 (User ID + Password)

Server=192.168.0.1;Database=MyDB;User ID=sa;Password=Str0ngP@ss;Persist Security Info=False;
  • 跨網域、雲端、非 Windows 環境 (Linux 容器) 必選。
  • 必須設定 `Persist Security Info=False` 防止記憶體/日誌洩漏密碼。
  • 生產環境強制啟用 `Encrypt=True`,並部署有效 TLS 憑證。

ADO.NET 實戰連接字串範例集

// 1. 本地預設實例 + 整合驗證
"Server=(local);Integrated Security=SSPI;Database=Pubs;"

// 2. 本地命名實例 + 整合驗證
"Server=(local)\NetSDK;Database=pubs;Integrated Security=SSPI;"

// 3. 完整參數 + 應用名稱 + 連接池調整
"Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;Application Name=MyApp;Min Pool Size=5;Max Pool Size=200;"

// 4. 遠端 IP + SQL 驗證 + 逾時 + 加密
"Data Source=127.0.0.1;Initial Catalog=pubs;User ID=sa;Password=passwords;Connect Timeout=30;Encrypt=True;TrustServerCertificate=False;"

// 5. 具名管道 (本機高效能)
"Server=np:\\.\pipe\MSSQL$SQLEXPRESS\sql\query;Integrated Security=SSPI;Database=Northwind;"

常見坑與避雷指南

  • Initial Catalog vs Database:完全同義,專案統一用 `Initial Catalog` (官方標準術語),避免混淆。
  • Integrated Security=SSPI vs `true`:功能相同,慣用 SSPI 明確表達使用 Security Support Provider Interface。
  • 密碼含特殊字元:分號 `;`、單引號 `'`、等號 `=` 需用雙引號包裹值:`Password="p@ss;word"`。
  • 連接池洩漏:務必 `using (var conn = new SqlConnection(...)) { conn.Open(); ... }` 確保釋放。
  • 不要硬編碼連接字串:放入 `appsettings.json` / `web.config` / Key Vault / 環境變數,部署時注入。

診斷工具

  • UDL 檔案測試: 建立 `test.udl`,雙擊用 GUI 設定並測試連線,最後用記事本開啟複製字串。
  • SqlConnectionStringBuilder: 程式碼中強型別建構,避免拼接錯誤。
    var builder = new SqlConnectionStringBuilder
    {
        DataSource = "localhost",
        InitialCatalog = "MyDB",
        IntegratedSecurity = true,
        ApplicationName = "MyApp",
        Encrypt = true
    };
    string connStr = builder.ConnectionString;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved