首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 連線架構深度解析:API、OLE DB、ADO.NET、Net-Library 與共享記憶體

     編輯:關於SqlServer

連線堆疊總覽


應用程式
    │
    ▼
API / 物件庫層 (ODBC, DB-Library, OLE DB, ADO, ADO.NET)
    │
    ▼
用戶端 Net-Library (DBMSSOCN, DBNMPNTW, DBMSSPXN ...)
    │
    ▼
網路協定 (TCP/IP, Named Pipes, VIA, Shared Memory)
    │
    ▼
SQL Server 伺服器端 Net-Library → TDS 封包處理 → 引擎

主流存取介面

介面特性典型提供者字串關鍵字
OLE DB (SQLOLEDB)COM 元件、MDAC 內建、ADO 底層、支援連線池、分散式交易Provider=SQLOLEDB
ADO (Classic)封裝 OLE DB、Script/VB6/ASP 常用、晚期繫結同 SQLOLEDB
ODBCC API、跨平台、查詢分析器/企業管理員仍使用Driver={SQL Server}
ADO.NET (SqlClient)Managed Code、原生 TDS 協定、效能最佳、非同步、連線池、MARSSystem.Data.SqlClient / Microsoft.Data.SqlClient
ADO.NET (OleDb)透過 OLE DB Provider、相容舊系統Provider=SQLOLEDB
ADO.NET (Odbc)透過 ODBC 驅動程式Driver={SQL Server}

ADO.NET SqlClient 核心類別

  • SqlConnection:連線物件、連線字串、連線池控制。
  • SqlCommand:T-SQL/預存程序執行、參數化、`CommandType`。
  • SqlDataReader:前向唯讀資料流、低記憶體、高效能。
  • SqlDataAdapter:斷層資料集填充、`Fill`/`Update`、配合 `DataSet`/`DataTable`。
  • SqlParameter:強型別參數、防注入、輸出/雙向參數。

用戶端 Net-Library 詳解

位於 `C:\Windows\System32`(64 位)或 `SysWOW64`(32 位),常見:

可用 用戶端網路公用程式 (cliconfg.exe) 設定預設/別名/啟用順序。

共享記憶體 Net-Library:本機連線極速之道

  • 僅限用戶端與伺服器同機。
  • 繞過完整網路堆疊,直接讀寫記憶體對應檔案(Memory-Mapped File)。
  • 同步靠 Kernel 物件,延遲極低(微秒級),吞吐極高。
  • 連線字串指定 `lpc:` 前綴或本機 `(local)` 自動協商優先使用。

疑難排解實用技巧

  1. 確認實際使用的提供者/協定:`SELECT net_transport, protocol_type FROM sys.dm_exec_connections WHERE session_id = @@SPID`
  2. 強制指定協定:連線字串 `Network Library=dbmssocn` (TCP) / `dbnmpntw` (NP) / `lpc` (Shared Memory)。
  3. 檢查連線池:`Pooling=true; Min Pool Size=5; Max Pool Size=100`,洩露常因未 `Close`/`Dispose`。
  4. 啟用追蹤:`Trace=True; LogFile=sql_client.log` (OLE DB) / `SqlClient` 事件追蹤。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
檔案名協定用途
dbmssocn.dllTCP/IP預設、跨網路、效能佳
dbnmpntw.dllNamed Pipes本機/內網、SMB 依賴、穿透防火牆較易
dbmsvinn.dllVIA高效能叢集、需專用硬體
dbmsrpcn.dllMultiprotocol (RPC)舊版相容、已棄用