最近用ASP和MSSQL做了一個數據庫應用, 開始一切順利,但隨著數據量的增加, 先后幾次查詢時出現timeout的問題. 參考Option Pack文檔及社區內的文章, 現在問題都已解決(至少沒又發現新的).
現把解決方法總結一下:
影響服務器產生超時的設置大致有: 1. Server.ScriptTimeout, 2. Connection對象的CommandTimeOut屬性, 3. Command對象的CommandTimeOut屬性, 4. IE瀏覽器的設置.
Server.ScriptTimeout,默認值是90秒. 要增大它,在你的asp文件中加一句,如下: Server.ScriptTimeout=999, 將頁面超時設為999秒.
最初我只設置Server.ScriptTimeout, 但仍會出現timeout錯誤,無論它的值設成都多大. 后在社區里看到一帖子,提到commandTimeout屬性, 于是查看Option Pack文檔,果然還有其他的timeout.
Connection對象和Command對象都有個CommandTimeOut屬性, 默認是30秒,如果你有一個耗時的查詢或數據處理, 很容易就超時了.要增大它,也很容易,創建對象后, 設置它的屬性,如下: con.CommandTimeOut = 999, 設為999秒,其中con是一Connection對象. 如設為零,將無限等待,沒有這一timeout限制.
Command對象不會繼承Connection的這一屬性, 所以對可能超時的Command也要單獨設置CommandTimeout屬性.
最后IE也有個超時設置,5分鐘從服務器得不到數據,也超時. 這種情況可能很少碰到, 但當我把一10多萬查詢的結果保存為mdb文件時, 就遇到了.(至于保存的方法,請參看精華區中的一篇帖子.) 解決方法:(原文請參照微軟KB中的Q181050) 1. IE要4.01 sp1以上版本. 2. 在注冊表中HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersionInternet Settings中 加一DWORD類型ReceiveTimeout,值設為比如8個9. 3. restart computer.
|