数据库200万记录,在数据库建立连接时已经设置了ConnectionTimeout=0,但在执行存储过程时,由于处理记录量很大,在一个存储过程未执行完时,大概20分至30分,还是出现超时错误,能解决吗?

解决方案 »

  1.   

    运行 sp_configure @configname='remote query timeout',@configvalue=1200,表示系统可以等待命令执行20分钟,可以根据需要适当设置@configvalue的值,就不会出现超时错误了。
      

  2.   

    dim db As New ADODB.Connection
    dim rs As New ADODB.Recordset
    dim condb As String
    dim conrs As Stringcondb = "Provider=SQLOLEDB.1;Persist Security Info=True;Initial Catalog=db;
            User ID=sa;Password=;Data Source=server
    conrs = "select sum(amt) as amt1 from table where 多个复杂条件" '表记录200万,统计的记录50万
    db.CursorLocation = adUseClient
    db.ConnectionTimeout = 0
    db.Open condb
    rs.open conrs,db,1,3结果在运行 rs.open conrs,db,1,3 语句30分钟后出现超时,除了运行存储过程,上面的语句能解决普通查询吗?
      

  3.   

    用set rs = db.Execute conrs的方法试试,毕竟你的数据量是大一点了!你用静态表的方法速度是慢的。还有最好加根内存在你的机器上!
      

  4.   

    因为数据量比较大,硬件上已经做了最大的升级,现在就是想在软件上作优化;有人建议不用ADO改用ODBC方式连接,会有效果吗?我用存储过程处理了,由于需要时间比较长,已经出现超时。
      

  5.   

    直接用ADO,改用ODBC只是增加一层而已,只会有更多开销。用db.Execute+存储过程,如果了解ADO的话,应该知道这样是最快取数据的方法,如果还不行,你拆表吧。把表拆成10多个表。另外你这个是在客户端运行程序吧。试试在服务器上挂个dll上去,让服务器处理看看行不行!