理解用戶端如何連接 SQL Server,是排查連線效能、驗證失敗、協議錯誤的基礎。本文自上而下剖析:物件庫 (ADO/OLE DB, ADO.NET) → Net-Library (網路協議抽象層) → 共享記憶體優化 → UMS 排程器連線綁定機制。
| 技術 | 類型 | 描述 | 現代地位 |
|---|---|---|---|
| ODBC | C API | 開放資料庫連接標準介面 | 傳統、效能基準、SSMS/舊版應用仍在用 |
| DB-Library | C API | 早期 SQL Server 專用 API | 已淘汰 |
| OLE DB (SQLOLEDB) | COM 組件 | Microsoft 通用資料存取介面,MDAC 核心 | 成熟、ADO 底層依賴 |
| ADO (ActiveX Data Objects) | COM 自動化 | Script/VB6/ASP 經典封裝,內部呼叫 OLE DB | 經典 ASP/舊系統主力 |
| ADO.NET (SqlClient) | .NET Managed Provider | 原生 .NET 資料提供者,直接使用 TDS 協議 | 現代 .NET 應用首選 |
Provider=SQLOLEDB; Data Source=...; Initial Catalog=...; Integrated Security=SSPIData Source=...; Initial Catalog=...; Integrated Security=True (無 Provider 關鍵字,直接使用 System.Data.SqlClient)。MSDASQL (OLE DB Provider for ODBC) 使用 DSN 連接。位於物件庫與網路傳輸協議之間,透明轉換請求/回應封包。SQL Server 提供所有主流協議的 Net-Library:
(local) 或 . 作為伺服器名稱。lpc: (Local Procedure Call) → lpc:MyServer\Instance。場景:雙 CPU 伺服器,應用建立 4 條連線
排程器 0 (CPU 0) ← 連線 1, 3
排程器 1 (CPU 1) ← 連線 2, 4
問題:業務邏輯 90% 走連線 1, 3 → CPU 0 100% 滿載,CPU 1 閒置
Shared Memory 或 Named Pipes,跨機器強制 TCP/IP。SQL Server 錯誤記錄、Windows 事件檢視器、Ring Buffer (連線環狀緩衝)。