Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.27;
Скачать: CL | DM;

Вниз

удаленный сервер InterBase   Найти похожие ветки 

 
YouNick ©   (2002-04-29 15:52) [0]

Здравствуйте!

Есть проблема с удаленным сервером IB. Как отследить разрыв связи между IBClient и IBServer? Ситуация следующая: программа открывает БД, выполняет ряд запросов, потом длительное время не производится активных действий, в это время происходит разрыв связи с сервером IB. При следующем обращении к БД возникает ошибка "Нет связи с сервером!". Не очень хочется на каждую выборку проверять наличие связи, т.к. это очень накладно. Есть ли другие способы? Подскажите что-нибудь толковое пожалуйста. Очень надо!!!! Проект горит ...

Заранее благодарен, Nick


 
Meduza ©   (2002-04-29 18:21) [1]

v obrabotcheke sobitija IBDatabase.AfterDisconnect napisatj nuzhnij kod, chtobi lovitj imenno nezaplanirovanij razriv ispoljzovatj flag


 
YouNick ©   (2002-04-29 19:24) [2]

2Meduza: имеется ввиду физический разрыв сеанса связи (грубо говоря взяли и выдернули сетевой шнурок из машины). AfterDisconnect не помогает :(


А кто знает насчет других СУБД? MSSQL, ORACLE и др.? Как в них решена эта проблема?


 
Alexandr ©   (2002-04-30 06:59) [3]

а в чем проблема? Конкретно.
Если выдернули шнурок/упал сервер или еще что-то то, естественно, произойдет разрыв связи так принято всегда и везде для любых сетевых приложений, баз данных и прочего.
При разрыве связи незавершенным транзакциям сделается rollback для обеспечения целостности данных.
Здесь все ясно и понятно.

Другое дело как клиентская сторона отреагирует на обрыв связи. Здесь все уже зависит от тебя. Замый простой и безглючный вариант это закрывать клиентское приложение после обрыва связи.
Но компоненты IBX на обрыв связи реагируют очень болезненно и их надо предварительно изменять- неофициальные патчи на исходники есть в Интернете.
В FIBPlus ситуация с этим гораздо лучше- при обрыве связи фомируется событие и все можно хорошо отследить и корректно закрыть приложение (даже сохранив локально все данные) или что-то еще (например, подождать, когда связь восстановится).

Если ждать восстановления связи, то после восстановления все равно надо снова подключаться к базе данных и обновлять все нужные наборы данных, и повторять незавершенную транзакцию - или просто перезагрузить программу.


 
User_OKA ©   (2002-04-30 08:47) [4]

to Alexandr ©
"В FIBPlus ситуация с этим гораздо лучше- при обрыве связи фомируется событие и все можно хорошо отследить и корректно закрыть приложение (даже сохранив локально все данные) или что-то еще (например, подождать, когда связь восстановится)."
А можно поподробнее? Что за событие, где оно формируется и как его отловить для обработки?


 
Alexandr ©   (2002-04-30 09:25) [5]

однако пример смотри на fibplus.com.ua
или на www.fibplus.net

там какраз есть пример обработки обрыва связи.


 
YouNick ©   (2002-04-30 11:36) [6]

Имеется управляющая система условно реального времени. Есть сервер БД и есть клиентские рабочие места. Предположим, что сервер не загнулся, а просто произошел сбой в свЯзи (разрыв соединения между IBClient и IBServer). Приложение (рабочее место) закрывать нельзя. Нужно как можно быстрее и незаметнее для пользователя восстановить связь с БД. Как отследить разрыв связи? Что можете посоветовать глобально? Проблема еще в том, что работа сильно завязана на БД!!! То есть пользователь не сможет выполнить ряд операций, если нет связи с БД (в базу пишется отчеты о работе и т.п., из базы постоянно берутся новые данные, т.к. одновременно несколько рабочих мест имеют доступ к общей БД).


 
Alexandr ©   (2002-04-30 12:04) [7]

да уж...
Как это условно реального времени?
А с чего бы это разрыв соединения должен произойти?
А вообще, для случаев когда нужна работа без сервера в течение незначительного времени используют трехзвенку.
А так, вообще в твоем случае чем надежнее нужно сделать, тем гораздо сложнее все будет. И стандартных решений тут нет.
Нужно точно знать ТЗ, чтоб спроектировать структуру




Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
3-88336
KIR
2002-04-29 12:21
2002.05.27
Аналог OnDrawCell в DBGrid


1-88415
Ola
2002-05-17 08:01
2002.05.27
HELP!!!!!!!!!!!!!!!!!!!


1-88490
Ежик
2002-05-15 09:29
2002.05.27
Подскажите, как сделать автоскроллинг в TMemo или TRichEdit?


1-88400
Darlok
2002-05-16 20:23
2002.05.27
Работа с ресстром


14-88612
Dimich
2002-04-18 12:21
2002.05.27
Про хитрую программку