necer |
опубликован 01-02-2002 11:54 MSK
В программе используется несколько ADO Connection (ODBC -> SQL Server). Так вот, проблема в следующем: при отключении любого соединения, в случае, если остаются активные соединения, разъединение происходит не сразу, а через некоторое время (~1.2 мин.). Если же в течение этого времени создать новое соединение (с этим же сервером), то выполнение sql происходит в контексте предыдущего (якобы завершенного) соединения. Получается, что соединение как бы кешируется. А если завершить все соединения, то отключение происходит практически моментально. Предполагаю, что дело тут в свойствах COM объектов. Но вот как это победить? Перерыл кучу литературы и хелпов - безрезультатно. Был бы очень признателен за любую помощь.
|
necer
|
опубликован 07-02-2002 16:02 MSK
Значит, отвечаю сам себе, может и еще кому-нибудь пригодится. :) Источником проблем оказался... ODBC Connection pooling. Решается это изменением т.наз. CPTimeout значения для каждого ODBC драйвера. Изменять можно с помощью ODBC Administrator или в реестре HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBCINST.INI/Driver_Name. После этого еще требуется и перезагрузка системы, если я правильно понял выражение: "Changes to this setting will not take effect until the pool is released, and you might need to reboot your machine to put your changes into effect". :-) Если кого-то заинтересуют подробности, почитать можно на http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wp/htm/poolingmicrosoftdataaccesscomponents.asp |