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

SQL Server 連線錯誤完整排查指南:從「找不到伺服器」到「登入失敗」

     編輯:關於SqlServer

錯誤一:「SQL Server 不存在或存取被拒絕」

最常見、原因最複雜的連線錯誤,請依序排查:

第一層:實體網路連通性

ping <伺服器IP>        # 失敗 → 檢查網卡、交換器、路由、防火牆
ping <伺服器名稱>     # IP 通但名稱不通 → DNS/Hosts 檔案問題
  • 暫時關閉雙端防火牆(含 Windows 防火牆、ISA Server、第三方安全軟體)測試。
  • 跨網段/VPN 環境,在用戶端 `C:\Windows\System32\drivers\etc\hosts` 加入 `IP 伺服器名稱` 映射。

第二層:SQL Server 服務與連接埠存活

telnet <伺服器IP> 1433
# 閃爍游標 = 連接埠開放;"無法開啟連線" = 服務未啟動/未啟用 TCP/連接埠非 1433

第三層:伺服器端網路設定

  1. 執行「SQL Server 設定管理員」→「SQL Server 網路設定」→「MSSQLSERVER 的通訊協定」。
  2. 確保 Named Pipes 與 TCP/IP 狀態為「已啟用」。
  3. TCP/IP 屬性 → 「IP Addresses」分頁,確認 `TCP Port` 為 1433(或自訂連接埠),`IPAll` 區段同步設定。
  4. 若勾選「隱藏伺服器」,用戶端無法透過瀏覽清單發現,但不影響指定名稱連線。

第四層:用戶端網路設定

  1. 用戶端同樣啟用「Named Pipes」與「TCP/IP」。
  2. TCP/IP 屬性 → 「預設連接埠」必須與伺服器一致。
  3. 「別名」分頁可建立易記名稱對應真實伺服器(類似 Hosts 但專供 SQL Client 使用)。

錯誤二:「無法連接到伺服器,使用者 'xxx' 登入失敗」

原因:伺服器設為「僅 Windows 驗證模式」,拒絕 SQL Server 驗證(如 `sa`)。

解決方案(需以 Windows 管理員身分登入伺服器)

  1. SSMS → 以「Windows 驗證」連入伺服器。
  2. 右鍵伺服器節點 → 「屬性」→「安全性」→「伺服器驗證」選 SQL Server 和 Windows 驗證模式。
  3. 重啟 SQL Server 服務(MSSQLSERVER)。

若無法以 Windows 登入(注冊表強制切換)

regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode
將值從 1 (Windows only) 改為 2 (Mixed Mode)
重啟 SQL Server 服務
切換後,內建 `BUILTIN\Administrators` 與 `機器名\Administrator` 登入可能遺失,需於 SSMS「安全性/登入」手動新增並授予 `sysadmin` 角色。

錯誤三:連線逾時

網路通、驗證對,但連線建立耗時超過預設閾值(企業管理員 4 秒、查詢分析器 15 秒)。常見於跨網段/VPN/低頻寬環境。

調整用戶端逾時設定

  • 企業管理員:工具 → 選項 → 進階 → 「登入逾時(秒)」調大(如 30)。
  • 查詢分析器/SSMS:工具 → 選項 → 連線 → 「登入逾時」調大。
  • 連接字串:`Connection Timeout=30`(ADO.NET)、`Connect Timeout=30`(ODBC/OLE DB)。

快速驗證清單(依序執行)

  1. Ping IP 通
  2. `telnet IP 1433` 成功(游標閃爍)
  3. SSMS 以 IP 連線,SQL 驗證,輸入 `sa`/密碼
  4. 仍失敗 → 伺服器端「SQL Server 設定管理員」啟用 TCP/IP、確認連接埠
  5. 仍失敗 → 用戶端「SQL Server 設定管理員」別名頁建立 TCP/IP 別名指向伺服器 IP
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved