
可能原因與排查步驟:
ping <Server IP> 失敗 → 檢查網卡、交換器、路由器、防火牆(如 ISA Server 可能封鎖 ICMP)。ping <Server Name> 失敗 → DNS 解析問題,可編輯 C:\WINNT\system32\drivers\etc\hosts 加入對應,或用戶端網路工具設定別名。telnet <Server IP> 1433 成功 → 伺服器監聽正常。myserver 對應真實名稱 sql2kcn-02),類似 hosts 檔功能。
原因:伺服器設為「僅 Windows 驗證」,拒絕 SQL Server 驗證帳號(如 sa)。
解決方法:
若連 Windows 驗證也無法登入(「自己把自己鎖在門外」):
regedit → HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode 雙字節值從 1 改為 2(混合模式)。BUILTIN\Administrators 與 <MachineName>\Administrator,角色勾選 System Administrators。
原因:連線時間超過預設逾時(企業管理器 4 秒、查詢分析器 15 秒),常見於跨網際網路慢速連線或區域網路擁塞。
解決:企業管理器 → 工具 → 選項 → 進階頁籤 → 登入逾時(秒)改大(如 20)。查詢分析器同樣位置調整。
常見錯誤訊息對應上述三類:
[DBNETLIB][ConnectionOpen] Specified SQL Server not found
Login failed for user 'sa'. Not associated with a trusted connection
Connection timeout expired

應用程式 → 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 |
Conn.Properties("Connect Timeout") = 15(秒)。rs.Properties("Command Time Out") = 300(秒,0 表無限制)。本文系統梳理用戶端工具與應用程式兩大連線場景的三大經典錯誤成因、排查步驟與解決方案,並提供標準連線字串範本與逾時設定技巧。所有測試環境:Windows 2000 Advanced Server + SQL Server 2000 Enterprise Edition。