Firebird 1.5.6 + подключение к сети Delphi 7 - PullRequest
1 голос
/ 10 ноября 2011

Есть ли у кого-нибудь проблемы с приложением Delphi 7 и Firebird 1.5.6, когда база данных размещена на удаленном компьютере в локальной сети?

Клиент и серверные машины работают под управлением ОС Windows 7.Это происходит периодически.Клиентское приложение теряет связь с сервером.

Я открываю соединение с сервером при запуске приложения.Я не знаю, что здесь происходит.Мой клиент использует приложение, открывает форму Delphi, заполняет некоторые данные и уходит на 20 минут.Когда он возвращается, решает закончить заполнение формы и после этого хочет сохранить содержимое.При нажатии кнопки Сохранить приложение зависает.

Я думаю, что связь потеряна.Почему и как?

Можно ли получить исключение или событие при потере соединения?Можно ли узнать, активно ли соединение перед процедурой сохранения?

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

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

РЕДАКТИРОВАТЬ: Другой случай В дополнение к описанной ситуации время от времени, когда приложение запускается, иногда требуется 1 или 2 минуты, чтобы открыть соединение с удаленным Firebird.база данных.Я разработал его, чтобы открыть соединение при запуске приложения.После этого периода все работает нормально.Я имею в виду, что приложение не падает, но снова возникает проблема с зависанием.Почему иногда требуется так много времени для соединения, я не знаю?

Ответы [ 3 ]

0 голосов
/ 10 ноября 2011

Попробуйте отредактировать файл firebird.conf

1) Найдите параметр DummyPacketInterval, удалите "#" и измените на DummyPacketInterval = 60
2) Перезапустите Firebird

0 голосов
/ 16 декабря 2011

проверьте опцию управления питанием в драйвере сетевого адаптера клиента. в диспетчере устройств значением по умолчанию является выключение устройства для экономии энергии

0 голосов
/ 10 ноября 2011

Вы можете оставить TIbDatabase подключенным столько, сколько вы хотите, он автоматически подключится снова, если потеряет соединение. И если вы находитесь в сетевой ситуации, он будет терять соединение при простое.

Вы не должны сохранять TIbTransaction активным в течение длительного времени из-за мультипоколенческой архитектуры Firebird: когда вы что-то изменяете в таблице Firebird, создается новая запись этого «чего-то», сохраняя все старые записи живыми до тех пор, пока так как есть хотя бы одна активная транзакция.

Я предполагаю, что происходит: у вас простаивает TIbTransaction в течение 20 минут, соединения с TIbDatabase теряются, и ваша транзакция переходит в неизвестное состояние.

...