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

SQL Server 連線失敗常見錯誤完整排查指南:用戶端工具與應用程式雙軌解析

     編輯:關於SqlServer

連線方式兩大類

  1. SQL Server 內建用戶端工具:企業管理器、查詢分析器、分析追蹤器等。
  2. 自行開發應用程式:ASP、VB、.NET 等,透過 ODBC 或 OLE DB 連線。

一、用戶端工具連線失敗三大經典錯誤

錯誤 1:SQL Server 不存在或存取被拒絕

錯誤 1 畫面

可能原因與排查步驟:

  1. 名稱/IP 拼寫錯誤:確認伺服器名稱或 IP 正確。
  2. 網路實體連通性:
    ping <Server IP> 失敗 → 檢查網卡、交換器、路由器、防火牆(如 ISA Server 可能封鎖 ICMP)。
    ping <Server Name> 失敗 → DNS 解析問題,可編輯 C:\WINNT\system32\drivers\etc\hosts 加入對應,或用戶端網路工具設定別名。
  3. TCP 連接埠連通性:
    telnet <Server IP> 1433 成功 → 伺服器監聽正常。
    失敗 → 伺服器服務未啟動、未啟用 TCP/IP 協定、非預設連接埠、防火牆封鎖 1433。
  4. 伺服器端網路設定:
    程式集 → SQL Server → 伺服器網路公用程式 → 確認啟用 Named Pipes 與 TCP/IP。
    TCP/IP 屬性 → 確認連接埠為 1433(或自訂),「隱藏伺服器」僅影響列舉不影響連線。
  5. 用戶端網路設定:
    程式集 → SQL Server → 用戶端網路公用程式 → 同樣啟用 Named Pipes、TCP/IP,連接埠與伺服器一致。
    「別名」頁籤可設定連線別名(如 myserver 對應真實名稱 sql2kcn-02),類似 hosts 檔功能。

錯誤 2:使用者 'sa' 登入失敗,原因:未與信任 SQL Server 連線相關聯

錯誤 2 畫面

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

解決方法:

  1. 企業管理器用 Windows 驗證登入伺服器。
  2. 伺服器右鍵 → 內容 → 安全性頁籤 → 驗證模式選 SQL Server 和 Windows。
  3. 重啟 SQL Server 服務。

若連 Windows 驗證也無法登入(「自己把自己鎖在門外」):

  1. regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode 雙字節值從 1 改為 2(混合模式)。
  2. 重啟 SQL Server 服務。
  3. 企業管理器 → 安全性 → 登入 → 新增 BUILTIN\Administrators 與 <MachineName>\Administrator,角色勾選 System Administrators。

錯誤 3:逾時已過期

錯誤 3 畫面

原因:連線時間超過預設逾時(企業管理器 4 秒、查詢分析器 15 秒),常見於跨網際網路慢速連線或區域網路擁塞。

解決:企業管理器 → 工具 → 選項 → 進階頁籤 → 登入逾時(秒)改大(如 20)。查詢分析器同樣位置調整。

二、應用程式連線失敗對應錯誤與連線字串標準寫法

常見錯誤訊息對應上述三類:
[DBNETLIB][ConnectionOpen] Specified SQL Server not found
Login failed for user 'sa'. Not associated with a trusted connection
Connection timeout expired

連線架構圖解

ODBC vs OLE DB 架構

應用程式 → ADO → OLE DB Provider → (SQLOLEDB / MSDASQL + ODBC Driver) → SQL Server。

標準連線字串範本

提供者驗證方式連線字串
SQLOLEDB (OLE DB for SQL Server) SQL Server 驗證 Provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDB;User Id=User;Password=Pwd
Windows 驗證 Provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=SSPI
MSDASQL (OLE DB for ODBC) - 無 DSN SQL Server 驗證 Driver={SQL Server};Server=MyServer;Database=MyDB;Uid=User;Pwd=Pwd
Windows 驗證 Driver={SQL Server};Server=MyServer;Database=MyDB;Trusted_Connection=yes
MSDASQL - 有系統 DSN SQL Server 驗證 DSN=MySystemDSN;Uid=User;Pwd=Pwd

應用程式常見問題補充

  1. ODBC DSN 設定:設定 DSN 時點選「用戶端設定」可指定網路程式庫、連接埠等。
  2. 連線逾時:Conn.Properties("Connect Timeout") = 15(秒)。
  3. 查詢逾時:rs.Properties("Command Time Out") = 300(秒,0 表無限制)。

三、小結

本文系統梳理用戶端工具與應用程式兩大連線場景的三大經典錯誤成因、排查步驟與解決方案,並提供標準連線字串範本與逾時設定技巧。所有測試環境:Windows 2000 Advanced Server + SQL Server 2000 Enterprise Edition。

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