我在程序登录的时候就打开数据库链接conn,在程序的任何界面都没有做链接关闭“conn.close" 或 set conn=nothing,这样会不会影响数据库的运行效率?我是不是应该在每次用到链接的时候才打开,用闭之后立即关闭?怎么做效率最高?
我现在的sqlserver服务器内存占用很大,cpu几乎100%,程序终端运行效率特别低,快疯了!

解决方案 »

  1.   

    谢谢!!
    那么我的服务器出现的cpu占用量100%可能是什么原因造成的呢?
      

  2.   

    不一定是你程序引起,你可以关闭自己程序后再看CPU占用情况,不排除病毒影响
      

  3.   

    我用sqlserver的事件探查器跟踪了,sql语句占用的资源确实很大,基本可以判定程序的因素相当大!
      

  4.   

    存取数据的时候Connection和Recordset要用到的时候才打开,用完之后立即关闭(close]),并且释放(set *=nothing),要用付值的方式,不要使用绑定。这样每个连接操作在极短的时间内完成,不会占用更多的资源
      

  5.   

    即使一直使用conn和Recordset,也不会影响的
    我这有几十个客户端,也没发生任何问题
    你的估计是某处代码的问题
      

  6.   

    也可以观察程序是运行哪些窗体或执行哪些具体操作时CPU占用量大,确定范围后再仔细看代码是否需要优化---比如多打开了一个很大数据的表等、timer事件
      

  7.   


    要用付值的方式,不要使用绑定,是什么意思?
    我现在用的都是:
    strQuery="select * from table"
    rs.Open strQuery, conn
    Set MS1.Recordset = rs这样写有问题吗?应该怎样写?
      

  8.   

    保持一些连接不会占用太多的资源.
    除非你做的是一个很大的C/S程序,有很多很多的客户端,这时才有必要关闭连接.
    记录集的操作可以考虑用必后即关掉.记录集不关,只会占用服务器内存,也不会使服务器端CPU占用变成100%.只有在你的查询语句写得不好数据量又很大的情况下才会出现这样的情况.
    因此,如果你的数据库程序设计没问题的话,你看到的情况不应该是由SQLSERVER所引起的.
      

  9.   

    数据库中数据量大吗?数据库操作中:
    每次用到链接的时候才打开,用闭之后立即关闭,释放资源;
    数据库表要规范,建立视图、索引等优化数据库结构;
    查询所用SQL要尽量优化