Object in use без транзакции

asviridenkov
Дата: 23.07.2012 23:01:57
FB SC 2.5.2.26511
Простите туплю наверное
Есть запрос вида select * from proc
Транзакция в которой он выполнялся закоммичена
Но при попытке изменить процедуру выдается Object in use
В мониторинге у этого подключения нет активных транзакций, а в statements показывает Transaction ID null, State IDLE
Правильно ли, что запрос в завершенной транзакции продолжает удерживать объект?
kdv
Дата: 23.07.2012 23:21:51
препарированный запрос.
Ivan_Pisarevsky
Дата: 23.07.2012 23:30:09
метаданные кэшируются в рамках коннекта, а не транзакции. Проще всего завершить все коннекты, которые работали с хранимкой и тогда она не будет "ин юз".
Dimitry Sibiryakov
Дата: 23.07.2012 23:59:01

Ivan_Pisarevsky
Проще всего завершить все коннекты, которые работали с хранимкой и тогда она не будет "ин юз".

Достаточно освободить запрос. Запросы (их хэндлы) принадлежат коннекту. Резалт-сет (то,
что возвращает запрос) принадлежит транзакции. Поэтому резалт-сеты автоматически
закрываются по концу транзакции. А запросы автоматически освобождаются по дисконнекту. Но
и то и другое можно сделать руками в любой необходимый момент. RTFM Api Guide, он рулез есть.

Posted via ActualForum NNTP Server 1.5

asviridenkov
Дата: 24.07.2012 01:58:13
Всем спасибо
Понятно, хотя и не очень логично
У меня пул коннектов, получается надо при возврате коннекта еще закрывать все стейтменты
Гаджимурадов Рустам
Дата: 24.07.2012 04:04:03

asviridenkov> Понятно, хотя и не очень логично

Запрос можно поворно не препарировать и
выполнять в другой транзакции. В этом вся логика.

> У меня пул коннектов, получается надо при возврате коннекта еще закрывать все стейтменты

Смотря для чего... Достаточно не резать БД
по живой, а если очень нужно - перед этим
убедиться, что никто никого не лочит.

Posted via ActualForum NNTP Server 1.5