2013-07-10 2 views
0

Я использую Powershell v2.0, вопрос в заголовке. Мне нужно использовать старую школу ADOB.Connection (не поставщик OLEDB), чтобы открыть файл Jet DB (.mdb). Причина проста: ADODB.Connection предоставляет свойства, в которых мне нужен доступ, к которому поставщик OLEDB этого не делает.Как предотвратить объединение ADODB.Connection?

Я открываю DB через ADOB.Connection для запроса некоторой информации, а затем я пытаюсь сжать DB с помощью JRO.JetEngine. Проблема в том, что я продолжаю получать сообщение об ошибке блокировки Jet DB.

Я явно вызываю «Закрыть» и устанавливаю переменную в $ null и все еще испытываю эту проблему. Мое лучшее предположение заключается в том, что ADODB.Connection использует пул соединений и поэтому не освобождает ресурсы так, как должно быть.

Согласно http://support.microsoft.com/kb/191572, вызова для закрытия() должно быть достаточно, но оно, похоже, не работает.

Есть ли способ для явного указания пула соединений при создании объектов ADODB.Connection?

+0

Изменяя строку соединения с помощью несущественного параметра (скажем, время из секунд) может предотвратить объединение, поскольку объединение иногда работает только для идентичных строк подключения. Я уверен, что существует определенное поведение конкретного провайдера, поэтому JET может отличаться. – MatthewMartin

ответ

0

В ссылке вы предоставили, то говорят, что вызов закрыть возвращает подключение к бассейну:

2.Что оператор возвращает соединение в пул? 2.Conn.Close

Вы, возможно, потребуется, чтобы уничтожить/утилизировать объект ADODB.Connection, так что он удаляется из пула, или, если вы используете OLE DB в качестве поставщика, настроить OLEDB услуги , как объяснено here:

Включение ресурса OLE DB. объединение Пулы ресурсов может быть включена в несколькими способами:

Для ADO на основе потребителя, сохраняя один открытый экземпляр объекта соединения для каждого уникального пользователя и использовать консоль OLEDB_SERVICES соединения строковый атрибут, чтобы включить или отключить пулы , По умолчанию ADO пытается использовать пул, но если вы не сохраните хотя бы один экземпляр объекта подключения, открытый для каждого пользователя, то не будет постоянный пул, доступный вашему приложению. (Тем не менее, Microsoft Transaction Server хранит пулы настойчив, пока соединения в них не были освобождены и в конечном счете не истекло.)

Смежные вопросы