Firebird3.0 security3.fdb получает поврежденные / редактируемые каждый день, в результате "isc_attach_database failed" - PullRequest
0 голосов
/ 09 апреля 2020

Мы используем программное обеспечение, которое работает поверх Firebird. Все было хорошо, пока не началась домашняя работа. Там, где проблемы с Firebird 2.5.x и соединениями, которые через некоторое время люди не могли подключиться больше. Изготовитель программного обеспечения намекнул нам, что мы должны обновить до 3.0 из-за этого. Мы переносим FDB на 3.0, и все выглядит хорошо, пока клиенты не начнут соединяться (windows -dll) с клиентами 2.0.

Проблема в том, что когда кто-то подключается с более старой загруженной версией DLL, он повреждает файл security3.fdb, и пользователь SYSDBA больше не обнаруживается, но люди, которые ранее входили в систему, работают нормально.

При использовании Flamerobin это приводит к ошибке: isc_attach_database не удалось, sql сообщение: -902, код enfine: 335544472 Ваше имя пользователя и пароль не определены. Попросите администратора базы данных настроить логин Firebird.

Мы обновляем клиентские версии dll, и это начало устранять проблему, но прошло более двух недель, и я получаю ранние утренние звонки, которые люди не могут сделать connect.

Я использую firebird3.0 из репозитория Debian, если это помогает (потому что он использует конфигурацию по умолчанию, отличную от конфигурации со страницы firebird).

Обходной путь, который я нахожу через много часов в поисках проблемы происходит замена файла security3.fdb во время работы firebird, и это работает на 80% из 20%. Мне нужно перезапустить firebird после замены файла.

Есть ли способ предотвратить это? Я попытался удалить разрешение на запись в файл безопасности, но Firebird не так.

firebird.conf (остальное по умолчанию или комментарий)

UdfAccess = Restrict /usr/lib/x86_64-linux-gnu/firebird/3.0/UDF   # the software use udf but without it it also lock down the database
RemoteServicePort = 3050  # just to be sure
RemoteBindAddress = 192.168.0.80 # this was needed because it would start listening on ipv6 only interface which was strange
...