彻底解决asp里用ADO连接数据库的超时问题

来源:互联网 发布:知中 编辑:程序博客网 时间:2024/05/01 12:28

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