環境: OS: window2000 server
Database: Sql Server 2000 中文企業版 +sp4
客戶和服務均在一臺機上運行。
客戶的管理系統在正常運行近一個月後出現“[ODBC SQL server dirvier] 超時已過期”錯誤,甚至無法再次登陸數據庫。由於系統曾正常運行過一段時間,因此我認爲由代碼引發此錯誤的機率比較小,而 MS SQL Server相關係統出錯可能性比較高。
於是我嘗試取消了下圖中,sql server配置屬性-》連接中得超時限制。
結果沒有任何效果。[ODBD sql server dirver]超時已過期的問題依然出現。
不過我發現,只要重新註冊 ODBC 一次,又能正常登陸了,只是此後該問題依然會頻繁出現,治標而不治本。爲了儘快解決這個問題,沒有辦法,只有重新安裝了 SQL server 企業版+ SP4 ,可是令人氣結的是問題依然存在。:(
實在沒有辦法只好上google和baidu查找前人經驗,也許是該問題產生的原因比較多而複雜吧,根據它他人的經驗竟然沒有一個能解決我係統出現的問題。此時我的心都快崩潰了。
如果這個問題再不解決,就只有整個系統重裝,而這是我最不願意看到的。
然而“山窮水盡疑無路,柳暗花明又一村”,微軟網站上一篇文章引起我注意。Article ID:300420 “Connnection to SQL server Database Using IP address is unusually slow”。文章說, MDAC2.6 存在一個 bug, 如果用 IP 地址連接數據庫會很慢。這使我想起在註冊 ODBC Driver 的時候,爲了避免 DNS 解析,我採用的正是 IP 地址,會不會這就是問題所在呢。於是我進行了如下操作
- ODBC 採用主機名註冊
- 在系統的 hosts 文件中增加 IP 與機名映射關係。(這個可能多此一舉)
- 升級 MDAC 到 2.7 版本。由於不知道如何查看當前 MDAC 的版本,就直接從微軟網站下載的 2.7 。
時間已經過去快3天了,客戶沒有報告此錯誤出現。我想,大概我找到了它的解決辦法。 於是記下來,防備忘記。 :)