徹底解決asp裏用ADO連接數據庫的超時問題

      我在做一個c++ builder的管理項目,其中的報表系統用到了TWebBrowser控件,在程序中調用ASP文件,顯示統計的報表,實際減輕了做報表的許多麻煩,初期未注意用戶數據量的問題,一直沒有什麼問題,但是隨着用戶的數據量的急劇增大,已達百萬條,特別是在做內聯接的查詢時,ASP執行數據查詢時一直是如下錯誤:

Microsoft VBScript 編譯器錯誤 錯誤 '800a03f6'

缺少 'End'

/iisHelp/common/500-100.asp,行242

Active Server Pages

錯誤 'ASP 0113'

腳本超時

/test/selfcountresult.asp

超過了腳本運行的最長時間。您可以通過指定 Server.ScriptTimeOut 屬性值來修改此限制或用 IIS 管理工具來修改它


        爲了儘量不更改數據結構(如可以用增加表的方法,或是用存儲過程的方法,或是用job的方法先期統計等),所以一直在試驗能不能在ASP中解決,先後嘗試了許多方法,終於試驗成功,我的連接數據庫的公用文件是:

<%
?Dim cnn, StrCnn,rs
?Set cnn = Server.CreateObject("ADODB.Connection")
?cnn.ConnectionTimeout=999999? 'ADO連接超時參數,原來設爲0,一直都不行,按說明,0應該爲無限制時間連接,但改爲大數後,就OK
?Cnn.CommandTimeOut=999999??
?Server.ScriptTimeout=99999? 'IIS腳本超時
?session.timeout=1440??????????? 'Session超時
StrCnn= "Driver={SQL Server};Server=192.168.0.68;UID=sa;PWD=sasa;Database=matq2008"
?err.clear
?cnn.Open StrCnn
?if err.number<>0 then
?? response.write "本地數據庫連接不正確,請檢查數據庫連接和參數設置"
?? response.end
?end if

%> Dim cnn, StrCnn,rs
 Set cnn = Server.CreateObject("ADODB.Connection")
 cnn.ConnectionTimeout=999999 'ADO連接超時設爲無限大,原爲0,不靈
 Cnn.CommandTimeOut=999999 
 Server.ScriptTimeout=99999 
 session.timeout=1440
 StrCnn= "Driver={SQL Server};Server=matq;UID=sa;PWD=sasasa;Database=matq2008"
  err.clear
 cnn.Open StrCnn
 if err.number<>0 then
   response.write "本地數據庫連接不正確,請檢查數據庫連接和參數設置"
   response.end
 end if


        我在我的機器上(iis和數據庫均在一臺機器上)做了多次的試驗,在數據量超過百萬條時,均沒有什麼問題,呵呵,就是統計時機器沒什麼響應了!當然這種辦法可以解決着急的問題,真正的解決問題的方法還是應該優化數據結構比較好一些。

        軟件環境:Windows 2000 Professional + sp4,IIS,.net framework1.1,Sql Server 2000個人版

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章