我有一台在端口 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 中都没有错误。非常奇怪。
答案1
您需要在 firebird.conf 中为每个 Firebird 服务器设置唯一的 IpcName。这样,它们两个都可以使用本地协议,并且 nbackup.exe 将成功运行。