如何防止ADODB.Connection汇集?

时间:2013-07-10 19:58:08

标签: powershell-v2.0 adodb

我正在使用Powershell v2.0,问题在标题中。我不得不使用旧学校ADOB.Connection(不是 OLEDB提供程序)来打开Jet DB文件(.mdb)。原因很简单,ADODB.Connection公开了我需要访问的属性,OLEDB提供程序没有。

我通过ADOB.Connection打开数据库来查询一些信息,然后我尝试使用JRO.JetEngine压缩数据库。问题是我一直收到关于Jet DB被锁定的错误。

我明确地调用了Close,并将变量设置为$ null,并且仍然遇到了这个问题。我最好的猜测是ADODB.Connection正在使用连接池,因此不会以应有的方式释放资源。

根据http://support.microsoft.com/kb/191572,对close()的调用应该足够了,但它似乎没有用。

在创建ADODB.Connection对象时,有没有办法明确指定无连接池?

1 个答案:

答案 0 :(得分:0)

在您提供的链接中,可以说调用close会返回与池的连接:

  

2.什么语句返回到池的连接?   2.Conn.Close

您可能需要销毁/处置ADODB.Connection对象,以便将其从池中删除,或者,如果您使用OLE DB作为提供程序,则按照here所述配置OLEDB服务:

  

启用OLE DB资源。   可以启用池化资源池   几种方式:

     

对于基于ADO的消费者,通过保留一个打开的实例   每个唯一用户的连接对象并使用OLEDB_SERVICES   连接字符串属性,用于启用或禁用池。默认情况下,   ADO尝试使用池,但如果您不保留至少一个   为每个用户打开一个Connection对象的实例,不会有   应用程序可用的持久池。 (但是,微软   只要连接,Transaction Server就会保持池的持久性   在他们中尚未被释放,并且最终没有超时。)