Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-88535
Alex_Ph
2002-05-15 22:32
2002.05.27
Необходимо запустить программу из Delphi


14-88606
ProgMan
2002-04-17 11:18
2002.05.27
Погиб Форум.


1-88534
Juli
2002-05-16 11:01
2002.05.27
Время


1-88501
Лана Розанова
2002-05-13 21:52
2002.05.27
В продолжении темы...


1-88505
Abu
2002-05-15 17:30
2002.05.27
Убрать конечные пробелы в строке ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский