2013-07-10 15 views
0

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

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

我明确地调用它关闭它,并将该变量设置为$ null,仍然遇到该问题。我最好的猜测是ADODB.Connection正在使用连接池,所以不会按照它应该的方式释放资源。

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

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

+0

由一个不重要的参数改变连接字符串(比如超时秒)可能防止池化,因为池化有时仅适用于相同的连接字符串。我确定有一些供应商的具体行为,所以JET可能会有所不同。 – MatthewMartin

回答

0

在你提供的链接,它是说,打电话来关闭返回连接到池:

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

您可能需要销毁/处置ADODB.Connection对象,使其从池中取出,或者,如果你正在使用OLE DB作为提供者,配置OLEDB服务,如解释here

启用OLE DB资源。

对于基于ADO的消费者,通过保持每个独特的用户 Connection对象的一个​​开放的实例,并使用OLEDB_SERVICES 连接字符串属性用于启用或禁用池: 池资源池可以 几种方式启用。默认情况下, ADO尝试使用池,但如果您没有为每个用户保留至少一个连接对象的实例,则不会有 永久池可供您的应用程序使用。 (然而,微软 事务服务器保持池持续只要 在他们还没有被释放,并没有最终超时的连接。)