我的程序中要用ado连接sqlserver2000,在一个vb6编写程序的窗体中,创建两个到sql2000的连接对象,都可以正常连接到sql server2000,我进到企业管理器中,在管理-->当前活动-->进程信息 中可以看到有两个连接进程已经连接到sql server2000数据库了,然后我在vb6的代码中关闭其中一个连接,然后测一下ado的连接状态,确实为0,已经断开了,可是我到企业管理器的进程信息中一看,发现那两个连接进程都在呀,我再通过vb6的程序,关了另一个连接对象,再测一下ado的连接状态,也确实为0,说明已经断开了,我到企业管理器的进程信息中一看,这回确实两上连接进程都没了.可是我不解,为何只有当我把所有连接全断了以后,企业管理器中的连接进程信息也会消失呢?只断开其中的一个为何就不行呢?我接着做测试,在两个连接对象都已正常连接的情况下,我还是在vb6程序中只关闭一个连接对象,到企业管理器中看,两个连接信息进程都在,并没有减少一个,我就等着.过一会刷新一次,也就是每过30秒我刷新一次,我发现一直到3分钟时,这个连接进程才消失,为何会出现这种情况呢?
再总结一下我的测试结果,如果在vb6程序中与sqlserver2000只有一个ado连接,那么我关闭这个ado连接后,在企业管理器中连接进程信息会立即消失,可是只要有两个及以上的ado对象连接着数据库,那么断开每一个ado连接对象后,企业管理器中的连接进程并不会立即消失,还要等一会才会消失,时间约为3分钟或更长,不知这是什么原因造成的.我在多台机器试过,都是这样,而且我自信我的代码也不会有问题,请大家指教.

解决方案 »

  1.   

    关闭连接之后把ado对象设置为nothing了吗?
      

  2.   

    关闭连接之后把ado对象设置为nothing了吗?
    ------------------------
    设置了,一定的,因为反复试过,如果单测一个连接对象,一切正常,所以我的代码应该不会出问题.
    就是打开多个连接时,关闭对象时,连接进程的消失有个延时
      

  3.   

    数据库连接池,连接还缓存着是为了下次连接时速度快,而不必再真的连接一下
    -----------------------
    谢谢,想请教一下,连接池是sql server2000自带的功能吗?
    以前我一直认为连接池是自已用程序写出来的,我的理解不对吗?
    连接池本质上是什么呀?