我在做一個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個人版