Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
ДОброго времени суток! Открываю 2 ADO коннекшена. При закрытии (методы Close и Set Conn = Nothing) на сервере они остаются . Закрываются только после закрытия приложения. С одним коннекшеном - все нормально. Насколько я понимаю, это связано с кэшированием соединений. Как побороть данную проблему? С уважением, Кузнецов Сергей! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 10:55 |
|
||
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
Приветствую всех, Видимо, Ваше Приложение использует так называемый "resource pooling". Ваши соединения после закрытия (Conn.Close) и высвобождения ресурсов (Set Conn = Nothing) еще некоторое время остаются в пуле для повышения производительности некоторых типов приложений. Время, которое они (соединения) проводят в пуле после закрытия и уничтожения ссылок на них, определяется параметром HKEY_CLASSES_ROOT\CLSID\PROVIDER_ID\SPTimeout (PROVIDER_ID - GUID, указывающий на провайдера, которым Вы пользуетесь) По умолчанию этого значения нет в реестре и оно принимается равным 60 секундам. Вы можете создать и изменить его значение на меньшую величину и таким образом, ускорить закрытие соединений. Однако делать это следует осторожно, так как Ваше Приложение может от этого проиграть. Вообще же все это подробно описано в документации Microsoft, например в статье "Pooling in the Microsoft Data Access Components". Удачи P.S. Странно, что "С одним коннекшеном - все нормально". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 13:30 |
|
||
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
Это нормальное поведение. Pooling соединений. Отключить можно, если в строке подключения указать "OLE DB Services=-2;". А чем мешают эти соединения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2002, 13:35 |
|
||
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
To Dankov Мне надо открыть коннект к БД, затем закрыть, и удалить эту БД. В VB все просто: Dim Cn As New ADODB.Connection strCnxn = "Driver={SQL Server};Server=Step;Database=Base;User Id=sa;Password=;" Cn.Open strCnxn Cn.Close Cn.Cancel Set Cn = Nothing А как присвоить объекту Cn значение Nothing в VC++? Дело в том, что после применения метода Close к объекту Cn происходит нормальное закрытие коннекта. Но база Base, которую открываю в коннекте? еще в течение 2-3 минут остается "used by the process". Естественно, я не могу сразу удалить эту базу. Аналогичную ситуацию можно наблюдать в приведенном ранее тексте на VB, если закоментарить последний оператор: Set Cn = Nothing. Как раз помогает ваше "OLE DB Services=-2;". Или есть еще какой-то способ? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2002, 14:36 |
|
||
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
>>А как присвоить объекту Cn значение Nothing в VC++? Если следующий код: Dim Cn As New ADODB.Connection представляется в ВС++ как: ADODB::_ConnectionPtr pCn; pCn.CreateInstance( __uuidof(ADODB::Connection) ); то присваивание Nothing в VB эквивалентно: pCn.Release(); Но странно, что это помогает в VB, насколько я знаю, pooling работает даже если уничтожать объекты соединений на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2002, 19:11 |
|
||
|
Как закрыть ADODB.Connection
|
|||
|---|---|---|---|
|
#18+
To Miha >>Но странно, что это помогает в VB, насколько я знаю, pooling работает даже если >>уничтожать объекты соединений на клиенте. Да, в VB, после выполнения Set Cn = Nothing , коннект сразу закрывается. >>присваивание Nothing в VB эквивалентно: pCn.Release(); Я это уже пробовал. При использовании вызова ->Release();. все проходит правильно и корректно, объект действительно освобождается. А коннект остается открытым. Кроме того, нигде в MSDN в примерах о Close Method не используется pCn.Release();. Так что ж, остется только отключать Pooling соединений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2002, 16:23 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1822810]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 429ms |

| 0 / 0 |
