Disconnect в потоке Postgresql и MsSql

Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
Закрыто
zeroandr
Сообщения: 6
Зарегистрирован: Ср 18 янв 2012 12:50

Disconnect в потоке Postgresql и MsSql

Сообщение zeroandr » Вс 26 фев 2012 15:16

База Postgresql и MsSql
Работает сервис, в сервисе выполняюся задания в отдельном потоке, в этом потоке я создаю два соединения и уничтожаю их в конце процедуры

Код: Выделить всё

MconPg := TUniConnection.Create(nil);
MconMs := TUniConnection.Create(nil);
----
MconPg.Open;
MconMs.Open;
--- запросы ---

MconPg.Disconnect;
FreeAndNil(MconPg);
MconMs.Disconnect;
FreeAndNil(MconMs);
но реальное соединение к базе Postgresql остается, пока не остановишь сервис (остается ли соединение к MSSQL не смотрел), и сответственно соединения плодятся что очень плохо.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Сообщение Alexp » Пн 27 фев 2012 16:45

Добрый день,

Мы проверили поведение UniDAC с postgreSQL сервером при работе в потоке создаваемом в сервисе и не обнаружилши описываемой Вами проблемы - при вызове метода Disconnect соединение успешно разрываеться. Возможно Вы не вызываете метод Disconnect в вашем потоке. Попробуйте залогировать все операции создания и разрыва соединения в файл и проанализировать результат, кроме того Вы можете прислать нам небольшой пример воспроизводязщий проблему на alexp*devart*com и мы постараемся помочь Вам разобраться в этой проблеме

zeroandr
Сообщения: 6
Зарегистрирован: Ср 18 янв 2012 12:50

Сообщение zeroandr » Ср 29 фев 2012 09:32

Я привел пример, похоже, что вы проверили только один сервер, проблема как раз в том, что открываются два соединения к MS SQL и Postgres и два закрываются, если соединение только к одному серверу то все ОК.

Alexp
Devart Team
Сообщения: 349
Зарегистрирован: Пн 27 дек 2010 10:34

Сообщение Alexp » Ср 29 фев 2012 12:01

Добрый день,

Я выслал Вам тестовое приложение которое соединяеться одновременно с PostgreSQL и MS SQL серверами в отдельном потоке сервиса.
В потоке сохраняються текущие идентификаторы соединения, а после окончания выполнения потока в самом же сервисе проверяються наличие
сессий с сохраненными идентификаторами. Пример явно показывает что при выполнения метода Disconnect соединения успешно разрываються.
Пожалуйста выполните этот пример, и если ошибка не повториться измените его для воспроизведения проблемы и вышлите его обратно

zeroandr
Сообщения: 6
Зарегистрирован: Ср 18 янв 2012 12:50

Сообщение zeroandr » Чт 01 мар 2012 11:55

Спасибо! Нашел у себя ошибку! Соединения нормально закрываются. Тему можно закрывать.

Закрыто