ADO.NET 連線字串關鍵字繁多且同義詞多,本文整理核心關鍵字對照表,對比 Windows 整合驗證與 SQL Server 驗證的寫法與優劣,提供安全、效能、維護三大面向的最佳實務建議,助你寫出正確、穩健的連線字串。
| 功能 | 常用關鍵字 (同義詞) | 說明 |
|---|---|---|
| 伺服器位址 | Data Source, Server, Addr, Address, Network Address | 支援 IP、主機名、具名執行個體 (Server\Instance)、(local)、. |
| 資料庫名稱 | Initial Catalog, Database, DB | 連線後預設資料庫 |
| Windows 整合驗證 | Integrated Security, Trusted_Connection | 值:True/Yes/SSPI (等效) |
| SQL Server 驗證 | User ID, UID, Password, PWD | 需啟用混合模式驗證 |
| 連線逾時 | Connect Timeout, Connection Timeout | 預設 15 秒,單位:秒 |
| 應用程式名稱 | Application Name, App | 顯示於 sys.dm_exec_sessions.program_name,利於監控辨識 |
| 加密連線 | Encrypt, TrustServerCertificate | 強制 TLS 加密,防竊聽 |
// 標準寫法
string connStr = "Server=localhost;Database=Northwind;User ID=sa;Password=P@ssw0rd;";
// 簡寫 (同義詞)
string connStr = "Data Source=.;Initial Catalog=Northwind;UID=sa;PWD=P@ssw0rd;";
缺點:密碼明文出現在程式碼/設定檔,需額外加密保護 (如 web.config aspnet_regiis -pe 或 Azure Key Vault)。
// 寫法一:Integrated Security
string connStr = "Server=localhost;Database=Northwind;Integrated Security=SSPI;";
// 寫法二:Trusted_Connection
string connStr = "Server=localhost;Database=Northwind;Trusted_Connection=Yes;";
// 寫法三:明確指定 True
string connStr = "Server=localhost;Database=Northwind;Integrated Security=True;";
三者等效,SSPI 為標準值,相容性最佳。
SESSION_USER / ORIGINAL_LOGIN() 直接對應真實人員,非共用 sa。| 項目 | 建議 | 理由 |
|---|---|---|
| 驗證模式 | 優先 Windows 整合驗證 | 安全性、可維護性、效能綜合最優 |
| 伺服器指定 | 用 NetBIOS 名稱或 FQDN,避免 IP | 支援叢集容錯移轉、DNS 解析彈性 |
| 具名執行個體 | Server=HostName\InstanceName | Browser 服務解析埠號,免硬編碼 |
| 連線逾時 | Connect Timeout=30 (視網路延遲調整) | 避免短暫網路抖動導致誤判 |
| 應用程式名稱 | Application Name=MyApp_Module | DMV/Profiler/Extended Events 輕鬆篩選 |
| 加密 | Encrypt=True;TrustServerCertificate=False (生產環境) | 強制 TLS 1.2+,防中間人攻擊 |
| 密碼保護 | 若必須用 SQL 驗證,設定檔加密 + Key Vault 管理 | 合規要求、防止原始碼洩漏 |
| 連線池 | 預設啟用,Pooling=True;Min Pool Size=5;Max Pool Size=100 | 高併發下顯著降低建立連線開銷 |
Keyword not supported: 'xxx' → 關鍵字拼寫錯誤 (如 DataSource 缺空格)。Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON' → 雙躍點問題,需設定 Kerberos 委派或改用 SQL 驗證。SSL Provider: The target principal name is incorrect → TrustServerCertificate=True 或部署有效憑證。正確的連線字串是應用程式與資料庫穩定溝通的基石,遵循「Windows 驗證優先、關鍵字標準化、設定檔加密、監控可觀測」四原則,能省去 90% 的連線相關故障。