Обсуждение возникших проблем, предложений и ошибок UniDAC компонентов
-
zeroandr
- Сообщения: 6
- Зарегистрирован: Ср 18 янв 2012 12:50
Сообщение
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
Спасибо! Нашел у себя ошибку! Соединения нормально закрываются. Тему можно закрывать.