Форум: "Базы";
Текущий архив: 2002.05.27;
Скачать: [xml.tar.bz2];
Внизудаленный сервер 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c