set cn = new adodb.connection
cn.open "provider=..............."
set rs = new adodb.recordsetprivate sub timer1_timer()
sql="update........................"
rs.Open sql, cn, 1
sql="update........................"
rs.Open sql, cn, 1
...
...
...sql="update........................"
rs.Open sql, cn, 1
end sub哪里没有释放么?

解决方案 »

  1.   

    为什么不用Command或Connection对象执行sql呢?
      

  2.   

    更新例子1
    sql = "update table1 set "
    i = 1
    While (i < 49)
    sql = sql + "Tag" + Format(i, "000") + "=" + Text1(i) + ", "
    i = i + 1
    Wend
    sql = sql + "tag049 = " + Text1(49) + " where id = 3"
    rs.Open sql, cn, 1更新例子2
    sql = "update table1 set "
    i = 1
    Dim d_x
    While (i < 25)
    temp(i) = Str(Format(Val(Text2(i)), "0000.00"))
    sql = sql + "Tag" + Format(i, "000") + "=" + temp(i) + ", "
    i = i + 1
    Wend
    temp(25) = Str(Format(Val(Text2(25)), "0000.00"))
    sql = sql + "tag025 = " + temp(25) + " where id = 6"
    rs.Open sql, cn, 1执行2的时候就会导致上面结果,难道和Sql语句有关?
    ps:程序我放在另一台机器上了,不是导致sql server内存上升的原因
      

  3.   

    给你的sql server打补丁sp3试试。
      

  4.   

    同意cbzdream(迷茫) 的说法。对这个偶有血的教训。这是MicroSoft的Bug。你的数据服务器肯定同时做了网络服务器了,才出现的这个Bug。根本的解决办法是将数据服务器与网络服务器分开。
      

  5.   

    但是情况同samwzhang()说的一样
    数据服务器同时做了网络服务器
    而且暂时没办法分开
      

  6.   

    不能分开就做三层结构(如Com+),不要直接访问数据库。
      

  7.   

    换系统吧,XP是不会有这个问题的。还有数据库不要用长连,读写结束就断掉,下次操作前再连接也能缓和这个问题。还有在cn.open "provider=..............."前加上cn.CursorLocation = adUseClient
      

  8.   

    如果纯粹用来执行update的sql的话,的确用Command或Connection的效率高点。还有,你完全可以用事务处理来做啊。一下commit是不是效率会好点呢?set cn = new adodb.connection
    cn.open "provider=..............."
    set rs = new adodb.recordsetprivate sub timer1_timer()
    On Error GoTo ErrHandle
    cn.BeginTrans
    sql="update........................"
    cn.execute(sql)
    sql="update........................"
    cn.execute(sql)
    ...
    ...
    ...sql="update........................"
    cn.execute(sql)
    cn.CommitTrans
    Exit Sub
    ErrHandle:
        cn.RollbackTrans
        Resume Next
    end sub
      

  9.   

    什么东西要在timer1_timer
    里不停的做?
      

  10.   

    private sub timer1_timer()
    sql="update........................"
    rs.Open sql, cn, 1
    rs.close
    sql="update........................"
    rs.Open sql, cn, 1
    rs.close
    执行完就应关闭
      

  11.   

    结果是update nvarchar类型的没加引号引起的,大家注意吧
    谢谢大家帮忙