客戶端網絡庫是應用程序與 SQL Server 通信的「翻譯官」,負責 TDS (Tabular Data Stream) 封包在網絡協議上的封裝、解封、壓縮、加密。SQL Server 2005 提供共享內存、TCP/IP、命名管道、VIA四大協議,正確選型與配置直接決定連接性能、穩定性與安全性。
| 協議 | 適用場景 | 性能特徵 | 配置複雜度 | 默認端口/管道 |
|---|---|---|---|---|
| 共享內存 | 本地連接 (App + SQL 同機) | 最高 (內存拷貝、無網絡棧、無序列化) | 零配置 | 內部管道 `\\.\pipe\sql\query` |
| TCP/IP | LAN/WAN/跨子網/互聯網/容器/雲 | 優 (標準協議、路由友好、可加密、負載均衡) | 低 (IP/端口/防火牆) | 1433 (可變更) |
| 命名管道 | 高速 LAN、域環境、Kerberos 雙跳友好 | 良 (LAN 內可比 TCP/IP、SMB 簽名/加密) | 中 (管道名、SMB 配置) | `\\pipe\sql\query` (可變更) |
| VIA (Virtual Interface Adapter) | 高性能集群、專用網絡、RDMA 硬件 | 極致 (用戶態直通、內存映射、繞過 OS 核心棧) | 高 (專用硬件、驅動、VIP 管理) | 1433 (可變更,需 VIA NIC) |
路徑:SQL Server Configuration Manager → SQL Native Client Configuration → Client Protocols 操作:右鍵協議 → 啟用/禁用 → 順序調整 → 屬性 (默認端口/管道/加密/強制加密)
路徑:SQL Server Network Configuration → Protocols for MSSQLSERVER (或具名實例) 操作:啟用協議 → IP Addresses 標籤配置 IPAll/具體 IP 的 TCP Port / TCP Dynamic Ports
| 協議 | 前綴語法 | 示例 |
|---|---|---|
| TCP/IP | `tcp:` | `Server=tcp:192.168.1.100,1433;Database=Test;...` |
| 命名管道 | `np:` | `Server=np:\\MyServer\pipe\sql\query;Database=Test;...` |
| 共享內存 | `lpc:` | `Server=lpc:(local);Database=Test;...` |
| VIA | `via:` | `Server=via:192.168.1.100,1433;Database=Test;...` |
最佳實踐:生產連接字符串**顯式指定 `tcp:`**,避免協議降級嘗試導致連接延遲 (特別是命名管道 SMB 協商超時)。
客戶端網絡庫非「配置一次永不管」,而是架構演進隨行調整的關鍵基礎設施。原則:**本地共享內存優先、遠程 TCP/IP 獨大、命名管道特定場景備選、VIA 極致性能專用、顯式指定協議前綴、最小化啟用協議面、連接池消除握手、加密保護傳輸**。將此納入基礎設施即代碼 (IaC) 腳本,實現環境一致性與合規自動化。