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

SQL Server 連線四大常見錯誤完整排查指南:不存在/拒絕、登入失敗、逾時、協定選擇

     編輯:關於SqlServer

錯誤一:「SQL Server 不存在或存取被拒絕」 (最複雜)

系統性排查步驟

  1. 物理連通:ping <ServerIP> 成功 → 網卡/交換器/路由正常。
     ping <ServerName> 失敗 → DNS/Hosts 名稱解析問題。
  2. 連接埠通暢:telnet <ServerIP> 1433 顯示閃爍游標 → TCP 1433 通。
     「無法開啟連線」 → SQL 服務未啟動、TCP/IP 未啟用、非預設連接埠、防火牆攔截。
  3. 伺服器網路組態:SQL Server Configuration Manager → 通訊協定 → 啟用 Named Pipes、TCP/IP。
     TCP/IP 屬性 → 確認連接埠 1433、「隱藏伺服器」未勾選 (或知情連線)。
  4. 用戶端網路組態:同樣啟用 Named Pipes、TCP/IP,連接埠一致。
     「別名」頁籤可建立連線別名 (類似 Hosts),指定伺服器/連接埠/協定。
  5. 防火牆/安全軟體:暫時關閉測試,確認後再精細開放規則 (TCP 1433, UDP 1434)。

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

原因

伺服器設定為 「僅 Windows 驗證」,拒絕 SQL Server 驗證帳號 (如 sa)。

解決

  1. 企業管理員 → 伺服器右鍵 → 內容 → 安全性 → 驗證模式 → 選 「SQL Server 和 Windows」 (混合模式) → 確定 → 重啟 SQL 服務。
  2. 若無法用 Windows 登入管理員:
     註冊表 HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode 值改為 2 (混合) → 重啟服務。
  3. 補充:混合模式下,BUILTIN\Administrators 與 <MachineName>\Administrator 兩個 Windows 登入常被誤刪,需手動加回並授 sysadmin。

錯誤三:連線逾時

原因

網路延遲大 (跨網段/VPN/Internet)、伺服器負載高、鎖定阻塞、預設逾時過短 (企業管理員 4 秒、查詢分析器 15 秒)。

調整

  • 企業管理員:工具 → 選項 → 進階 → 登入逾時 (秒) → 改 20-30。
  • 查詢分析器:工具 → 選項 → 連線 → 登入逾時 → 改 30-60。
  • 連線字串:Connection Timeout=30 (ADO.NET) / Connect Timeout=30 (ODBC/OLEDB)。

錯誤四:協定選擇困惑 (TCP/IP vs Named Pipes)

背景

Windows 2000+ 為安全預設啟用 TCP/IP 作為預設協定。用戶端嘗試順序由註冊表決定:


Client:  HKLM\SOFTWARE\Microsoft\MSSQLServer\Client\SuperSocketNetLib\ProtocolOrder
Server:  HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\SuperSocketNetLib\ProtocolOrder

值為十六進位字串陣列,74 00 63 00 70 00 = "tcp"。

程式中指定協定

  • 連線字串:Network Library=dbmssocn (TCP/IP)、Network Library=dbnmpntw (Named Pipes)。
  • ODBC DSN 設定「網路程式庫」下拉選單選擇。
  • SQL Server Configuration Manager → 用戶端通訊協定 → 調整順序 (上移優先)。

最佳實務

  • 區域網路:TCP/IP 優先 (效能佳、跨子網、標準)。
  • 本機高效能:Shared Memory (自動、無網路開銷)。
  • 舊版相容/特殊環境:Named Pipes。
  • 不要在程式碼硬編碼協定,交由用戶端組態/連線字串決定,利於部署遷移。

總結檢查清單

錯誤首要檢查關鍵指令/工具
不存在/拒絕ping → telnet 1433 → 伺服器/用戶端協定啟用ping, telnet, SQL Configuration Manager
登入失敗驗證模式 (混合模式)企業管理員/註冊表 LoginMode
逾時網路延遲/伺服器負載/逾時設定Connection Timeout, 企業管理員選項
協定TCP/IP 優先,用戶端組態決定連線字串 Network Library, Configuration Manager

結語

SQL Server 連線問題 90% 集中於:網路通訊、驗證模式、逾時設定、協定優先序。建立標準化排查 SOP (ping → telnet → 協定 → 驗證 → 逾時),可將平均解決時間從小時級壓縮至分鐘級。

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