| 錯誤訊息 | 典型來源 | 核心原因 |
|---|---|---|
| Timeout expired (0x80040e31) | 應用程式插入/更新 | 資料檔自動增長百分比導致大檔案擴展卡頓 |
| Login timeout / Connection timeout | 企業管理器、查詢分析器、應用連線 | 預設 4s/15s 連線逾時過短 |
| Query timeout | 長跑查詢、大量排序/雜湊 | 統計資訊過舊、缺索引、記憶體不足排隊 |
徵兆: CPU/記憶體低載,事件日志出現 Autogrow cancelled/timed out after 453ms。
根因: FILEGROWTH 設為百分比 (預設 10%),資料檔達 1GB+ 時單次擴展耗時超過指令逾時。
修正: 改為固定 MB 增長:
ALTER DATABASE MyDB MODIFY FILE (NAME=MyDB_Data, FILEGROWTH=256MB);
工具 → 選項 → 進階 → 連線設定 → 登入逾時:改為 30 秒
工具 → 選項 → 連線 → 登入逾時:30,連線逾時:0 (無限)
Conn.ConnectionTimeout = 30 ' 連線逾時秒數
Cmd.CommandTimeout = 300 ' 指令執行逾時秒數,0=無限
UPDATE STATISTICS TableName; 或 sp_updatestatsSELECT *、減少排序、拆分大查詢sp_configure 'show advanced options',1; RECONFIGURE;
sp_configure 'query wait', 2147483647; RECONFIGURE;