診斷步驟:
ping <Server_IP> 失敗 → 檢查網卡、交換器、路由器、防火牆 (關閉或開放 1433/1434/UDP 1434)。ping <Server_Name> 失敗 → DNS/Hosts 檔案解析問題。telnet <Server_IP> 1433 失敗 → 伺服器未啟動 SQL Server 服務、未啟用 TCP/IP、埠號非 1433、防火牆封鎖。MyAlias 對應 RealServerName、Named Pipes),解決跨網段名稱解析。原因:伺服器設為「僅 Windows 驗證」,拒絕 SQL Server 驗證帳號 (sa)。
解決:
HKLM\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\LoginMode : 1 (Windows) → 2 (混合) → 重啟服務。BUILTIN\Administrators、<MachineName>\Administrator → 角色 sysadmin。原因:連線建立時間超過用戶端設定的逾時值 (企業管理員預設 4 秒、查詢分析器 15 秒)。常見於跨 Internet 連線、慢速 VPN、網路擁塞。
解決:
Connection Timeout=30 (ADO/OLE DB) 或 Connect Timeout=30 (SqlClient)。| 提供者 | 驗證方式 | 連線字串範本 |
|---|---|---|
| SQLOLEDB (OLE DB) | SQL 驗證 | Provider=sqloledb;Data Source=Server;Initial Catalog=DB;User Id=uid;Password=pwd; |
| SQLOLEDB | Windows 驗證 | Provider=sqloledb;Data Source=Server;Initial Catalog=DB;Integrated Security=SSPI; |
| MSDASQL (ODBC) | SQL 驗證 | Driver={SQL Server};Server=Server;Database=DB;Uid=uid;Pwd=pwd; |
| MSDASQL | Windows 驗證 | Driver={SQL Server};Server=Server;Database=DB;Trusted_Connection=yes; |
| System.Data.SqlClient (ADO.NET) | SQL 驗證 | Server=Server;Database=DB;User Id=uid;Password=pwd; |
| SqlClient | Windows 驗證 | Server=Server;Database=DB;Integrated Security=true; |
控制台 → 系統管理工具 → 資料來源 (ODBC) → 系統 DSN → 設定 → 「用戶端設定」 → 可指定網路程式庫 (TCP/IP/Named Pipes)、埠號、鎖定頁面等。
連線失敗 90% 屬於網路/通訊協定/埠號/防火牆 (錯誤一)、驗證模式不符 (錯誤二)、逾時設定過小 (錯誤三)。依序排查,多數可在分鐘內解決。