使用fbsvcmgr恢复Firebird 2.5

时间:2016-07-02 06:42:43

标签: backup firebird restore

我正在配置实时备份和恢复脚本,以便在主服务器和备用服务器上安装“复制”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似乎不是。还有其他选择吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

您无法使用nbackup恢复现有数据库。你需要

  1. 先删除旧数据库,然后恢复,
  2. 或以其他名称还原,删除旧数据库,并将新数据库重命名为其最终名称。
  3. 另请参阅nbackup文档,第Making and restoring backups章:

      

    如果指定的数据库文件已存在,则还原将失败并收到错误消息。

    据我所知,这是一项不允许覆盖现有数据库的设计决定。 Gbak确实有这个选择,但仅限于历史原因;如果它是今天建成的,它可能没有那个选择。