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