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

SQL Server 遠程連接失敗排查清單:協議、防火牆、端口三步鎖定

     編輯:關於SqlServer

異地部署機房收費系統時,遠程連接 SQL Server 常報「無法連接到服務器」。90% 以上案例集中在三個配置層:**服務器網絡協議、Windows 防火牆、SQL Server 服務狀態**。本文提供標準化排查清單與圖文操作指引。

現象確認

客戶端報錯:「建立到服務器的連接時發生錯誤... 默認設置 SQL Server 不允許遠程連接」(錯誤碼常見 40、53、10060)。

排查三部曲

第一層:SQL Server 服務端配置(SSMS 內操作)

  1. 允許遠程連接:
    • SSMS 登錄(Windows 驗證或 sa) → 右鍵服務器 → 「屬性」→ 「連接」→ 勾選 「允許遠程連接到此服務器」。
  2. 啟用 TCP/IP 協議(關鍵):
    • 開始 → SQL Server 配置管理器 → 「SQL Server 網絡配置」→ 選對應實例 → 右鍵 TCP/IP → 「啟用」→ 重啟 SQL Server 服務。
    • 雙擊 TCP/IP → 「IP 地址」標籤 → 目標 IP 行(或 IPAll) → TCP 端口填 1433,清空「TCP 動態端口」 → 確定 → 重啟服務。

第二層:Windows 防火牆(最常見遺漏)

即使協議啟用,防火牆攔截 1433 端口會導致連接超時(而非拒絕)。

  1. 控制面板 → Windows 防火牆 → 「高級設置」→ 「入站規則」→ 「新建規則」。
  2. 規則類型:**端口** → TCP → 特定本地端口:**1433** → 下一步。
  3. 操作:**允許連接** → 下一步。
  4. 配置文件:**域、專用、公用** 全勾選(生產環境建議僅勾選專用/域)。
  5. 命名:**Allow SQL Server 1433 Inbound** → 完成。
  6. 補充:若使用命名實例 + Browser 服務,需額外放行 UDP 1434。

第三層:服務狀態與瀏覽器

  • SQL Server (MSSQLSERVER) 服務:運行中,啟動類型「自動」。
  • SQL Server Browser 服務:若用 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 驅動

一鍵檢查腳本(管理員 PowerShell 運行)

# 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 分鐘內解決。記得:協議啟用必重啟服務,防火牆規則即時生效。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved