異地部署機房收費系統時,遠程連接 SQL Server 常報「無法連接到服務器」。90% 以上案例集中在三個配置層:**服務器網絡協議、Windows 防火牆、SQL Server 服務狀態**。本文提供標準化排查清單與圖文操作指引。
客戶端報錯:「建立到服務器的連接時發生錯誤... 默認設置 SQL Server 不允許遠程連接」(錯誤碼常見 40、53、10060)。
即使協議啟用,防火牆攔截 1433 端口會導致連接超時(而非拒絕)。
IP\實例名 連接,必須運行;若用 IP,1433 直連,可禁用以降低攻擊面。# 客戶端機器執行(PowerShell / CMD) Test-NetConnection -ComputerName-Port 1433 # 或 telnet 1433
顯示 TcpTestSucceeded : True 即網絡通;再用 SSMS / 應用連接字符串測試認證。
| 現象 | 深層原因 | 修正動作 |
|---|---|---|
| 本機能連,遠程超時 | 防火牆入站規則缺失 / 綁定 IP 錯誤 | 補 1433 入站規則;TCP/IP 屬性綁定 0.0.0.0 或具體 LAN IP |
| 遠程拒絕連接 (10061) | TCP/IP 協議未啟用 / 服務未啟動 / 端口被佔用 | 配置管理器啟用 TCP/IP 並重啟服務;netstat -ano 核對 1433 佔用進程 |
| 登錄失敗 18456 | 認證模式未改混合 / sa 禁用 / 密碼錯 | SSMS→屬性→安全性→混合模式;sa 屬性→狀態→授予+啟用 |
| 命名實例連不上 | Browser 服務停用 / UDP 1434 被攔截 | 啟用 Browser 並放行 UDP 1434;或改用 IP,端口直連 |
| 加密/憑證錯誤 | 客戶端驅動老舊 / 強制加密 | 連接串加 TrustServerCertificate=True;升級 ODBC/OLEDB/ADO.NET 驅動 |
# 1. 檢查 SQL 服務狀態
Get-Service MSSQLSERVER, SQLBrowser | Select Name, Status, StartType
# 2. 檢查 1433 端口監聽
netstat -ano | findstr :1433
# 3. 檢查防火牆入站規則
Get-NetFirewallRule -DisplayName "*SQL*" -Direction Inbound | Select DisplayName, Enabled, Action, LocalPort
# 4. 檢查 TCP/IP 協議啟用狀態(需 WMI 權限)
# 參考:Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement10" -Class ServerNetworkProtocol | Where {$_.ProtocolName -eq 'Tcp'} | Select ProtocolName, Enabled
按清單逐項核對,遠程連接問題通常在 15 分鐘內解決。記得:協議啟用必重啟服務,防火牆規則即時生效。