我有一个在端口 3050 上运行 Firebird 2.5.4 的 Windows Server,我在端口 3051 上有另一个旧版本的 Firebird Server。
出于兼容性原因,我将 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 正确访问数据库文件?业务线应用程序连接和更改数据库没有问题。两个实例上的 firebird.log 都没有错误。很奇怪。
您需要在 firebird.conf 中为每个 Firebird 服务器设置唯一的 IpcName。在这种情况下,它们都将能够使用本地协议,并且 nbackup.exe 将成功运行。