我正在使用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对象时,有没有办法明确指定无连接池?
答案 0 :(得分:0)
在您提供的链接中,可以说调用close会返回与池的连接:
2.什么语句返回到池的连接? 2.Conn.Close
您可能需要销毁/处置ADODB.Connection对象,以便将其从池中删除,或者,如果您使用OLE DB作为提供程序,则按照here所述配置OLEDB服务:
启用OLE DB资源。 可以启用池化资源池 几种方式:
对于基于ADO的消费者,通过保留一个打开的实例 每个唯一用户的连接对象并使用OLEDB_SERVICES 连接字符串属性,用于启用或禁用池。默认情况下, ADO尝试使用池,但如果您不保留至少一个 为每个用户打开一个Connection对象的实例,不会有 应用程序可用的持久池。 (但是,微软 只要连接,Transaction Server就会保持池的持久性 在他们中尚未被释放,并且最终没有超时。)