У меня есть Windows Server под управлением Firebird 2.5.4 на порту 3050, и у меня есть еще одна более старая версия Firebird Server на порту 3051.
Я использую сервер 3051 из соображений совместимости с другим приложением. Я включаю его, когда мне это нужно, и большую часть времени он отключается через службы Windows.
Однако теперь резервное копирование не выполняется при использовании nbackup. Команда
nbackup.com -u sysdba -p PASSWORD -B 0 "C:\DATABASE.FDB" "X:\BACKUP.fbk"
При запуске этой команды происходит сбой:
[
PROBLEM ON "attach database".
unavailable database
SQLCODE:-904
]
Failure: Database error
Подключение через isql также создает ту же проблему.
isql -u sysba -p PASSWORD "C:\DATABASE.FDB"
Statement failed, SQLSTATE = 08001
unavailable database
Однако через конкретный хост и порт подключения он работает нормально.
isql -u sysba -p PASSWORD "localhost/3050:C:\DATABASE.FDB"
Применить это к nbackup не удастся, так как нужен локальный доступ к файлу базы данных.
nbackup.com -u sysdba -p PASSWORD -B 0 "localhost/3050:C:\DATABASE.FDB" "X:\BACKUP.fbk"
[
PROBLEM ON "nbackup needs local access to database file".
SQLCODE:-999
]
Failure: Database error
Есть ли какая-то переменная среды или конфигурация, которая мешает nbackup правильно обращаться к файлу базы данных? Приложение Line of Business не имеет проблем с подключением и внесением изменений в базу данных. В обоих случаях ошибок в firebird.log нет. Очень странно.
Вам необходимо установить уникальное имя IpcName в firebird.conf для каждого сервера Firebird. В этом случае оба они смогут работать с локальным протоколом, и nbackup.exe будет работать успешно.