我正在配置实时备份和恢复脚本,以便在主服务器和备用服务器上安装“复制”firebird dbs。 备份做得很好:
"C:\Program Files\Firebird\Firebird_2_5\bin\nbackup" -B 0 "D:\testdb\LABORATORY_DB.FDB" D:\testdb\lab_FULL.fbk -user SYSDBA -pass masterkey -D OFF
将文件复制到远程服务器:
net use R: \\fbserv2\reserve
xcopy /Y D:\testdb\lab_FULL.fbk R:\
但是在远程方面恢复
"C:\Program Files\Firebird\Firebird_2_5\bin\fbsvcmgr.exe" fbserv2:service_mgr -user SYSDBA -password masterkey -action_nrest -dbname d:\reservedb\LABORATORY_DB.FDB -nbk_file d:\reserve\lab_FULL.fbk
导致错误:
Error (80) creating database file: d:\reservedb\LABORATORY_DB.FDB via copying from: d:\reserve\lab_FULL.fbk
恢复数据库的唯一方法是在恢复之前手动删除旧的d:\ reservedb \ LABORATORY_DB.FDB。 GBAK可以选择覆盖restorig db文件,而fbsvcmgr似乎不是。还有其他选择吗?我错过了什么吗?
答案 0 :(得分:0)
您无法使用nbackup恢复现有数据库。你需要
另请参阅nbackup文档,第Making and restoring backups章:
如果指定的数据库文件已存在,则还原将失败并收到错误消息。
据我所知,这是一项不允许覆盖现有数据库的设计决定。 Gbak确实有这个选择,但仅限于历史原因;如果它是今天建成的,它可能没有那个选择。