已成功與服務器建立連接,但是在登錄過程中發生錯誤 (provider: 共享內存提供程序, error: 0 - 管道的另一端上無任何進程。)
客戶端嘗試通過 Shared Memory(共享內存) 或 Named Pipes(命名管道) 協議連接 SQL Server,但服務端對應協議未啟用或服務未正常運行。錯誤「管道另一端無進程」意味著服務端管道監聽器不存在。
MSSQLSERVER → Database EngineSQLEXPRESS → 重新啟動 SQLEXPRESS
Network Library=dbmssocn 強制使用 TCP/IP Sockets,避開本地協議問題。
| 協議 | 適用場景 | 性能 | 配置複雜度 |
|---|---|---|---|
| Shared Memory | 客戶端與 SQL Server 同機器 | 最高(無網絡開銷) | 零配置,默認首選 |
| TCP/IP | 跨機器、跨網段、互聯網、生產環境標準 | 高,穩定可控 | 需開放端口、配置防火牆 |
| Named Pipes | 同一局域網、舊應用兼容、域環境 Kerberos | 中等,依賴 SMB | 需啟用 File and Printer Sharing |
| VIA | 高性能集群、專用硬體 | 極高 | 需專用硬體、已棄用 |
生產環境建議:僅啟用 TCP/IP,禁用其他協議,減少攻擊面。
# 服務端驗證端口監聽
netstat -an | findstr 1433
# 應見 0.0.0.0:1433 LISTENING
# 客戶端測試連接
telnet sql_server_ip 1433
# 或 PowerShell
Test-NetConnection -ComputerName sql_server_ip -Port 1433
# 連接字符串測試
sqlcmd -S tcp:sql_server_ip,1433 -U sa -P *** -Q "SELECT @@VERSION"
「管道另一端無進程」本質是服務端 Named Pipes/Shared Memory 協議未啟用或服務未運行。標準修復:SQL Server 配置管理器啟用 Named Pipes 和 TCP/IP → 重啟 SQL Server 服務。生產環境建議僅保留 TCP/IP 協議,客戶端連接字符串強制指定 Network Library=dbmssocn,徹底規避本地協議問題。