Страница 1 из 1

потеря коннекта после рестарта ib_server

Добавлено: 10 ноя 2005, 12:19
Alex_Vor
Доброго времени суток! Столкнулся с весьма неприятной штукой :cry:
Ситуация: служба firebird_server(v. 1.0.2.908) на серваке периодически перезапускается (после частых 10054), но проблема не в этом. На клиентах работает прога с SQL-запросами через IBQuery (delphi6) к базе на серваке. Если между запросами к базе был перезапуск службы FB_server, то при очередной попытке select выскакивает "Dataset Open" и прогу надо перезапускать... Алгоритм работы проги: запуск-connect-sql.close-sql.open-...-выход-disconnect.
Вариант запуск-connect-sql1.close-sql1.open-disconnect-connect-sql2.close-sql2.open-disconnect...-выход обходит ошибки, но серваку трудны частые коннекты/дисконнекты. Пробовал просто проверять состояние коннекта перед выполнением запросов - тоже ругается, если был перезапуск. Как определить, что служба перезапускалась и, соответственно, переконнектить клиента? Надеюсь, из муторного описания моей проблемы Вы что-нить поняли... Заранее Спасибо.

Добавлено: 10 ноя 2005, 12:52
kdv
серваку трудны частые коннекты/дисконнекты.
это наветы. ничего ему не трудно.
Как определить, что служба перезапускалась и, соответственно, переконнектить клиента?
никак не определить. у тебя открыт коннект. Подкрался враг и перерезал сетевой провод. Ты до очередного обращения к коннекту так и не узнаешь, что провод перерезан. Можешь попробовать это
www.ibase.ru/devinfo/keepalive.htm

вообще перед заданием вопроса следует попробовать поискать на сайте. В разделе Документация (а он вообще один, где лежат все мыслимые статьи) также есть пара статей по организации реконнекта.

Добавлено: 10 ноя 2005, 13:23
Alex_Vor
Спасибо, буду искать. Но если серверу не трудно, то может и использовать постоянно второй вариант работы с постоянными реконнектами...

Добавлено: 10 ноя 2005, 15:09
kdv
главное чтобы у тебя долго активных транзакций в этом коннекте не было.