无法恢复数据库备份("数据库可能正在使用"即使在关闭后)

时间:2015-02-09 13:34:53

标签: database firebird firebird2.1

我跟随此网站上的示例:http://www.firebirdsql.org/manual/gbak-recipies.html

更具体地说,以下三个命令:

tux> gbak -backup employee /backups/employee.fbk
tux> gfix -shut -tran 60 employee
tux> gbak -replace /backups/employee.fbk employee

我已将命令替换为符合我的数据结构,然后命令如下:

gbak.exe -user SYSDBA -pas masterkey -backup C:\Database\MyDB.fdb C:\Temp\DbBackup.fbk
gfix -user SYSDBA -pas masterkey -shut single -force 0 "C:\Database\MyDB.fdb"
gbak -user SYSDBA -pas masterkey -replace C:\Temp\DbBackup.fbk C:\Database\MyDB.fdb

备份创建到C:\ Temp。 有时候shutdown命令不起作用,我通过确保数据库在关闭之前实际在线来解决这个问题:

gfix -user SYSDBA -pas masterkey -online C:\Database\MyDB.fdb

但是,即使关闭数据库时没有错误,恢复也总是抱怨:

gbak: ERROR:could not drop database c:\Database\MyDB.fdb (database might be in use)
gbak:Exiting before completion due to errors

为什么在关闭数据库时这样做?


我还尝试使用full代替single关闭数据库。然后,还原会出现以下错误:

gbak: ERROR:invalid database handle (no active connection)
gbak:Exiting before completion due to errors
gbak: ERROR:invalid database handle (no active connection)

我猜是因为数据库完全关闭并且不允许连接,所以要少检查一下。

1 个答案:

答案 0 :(得分:0)

即使您使用0分钟,我相信关机功能也不会立竿见影。 您必须等待几秒钟才能允许Firebird在关闭和还原之间释放文件。

无论如何,我建议不要自行恢复数据库。如果在备份或还原过程中出现问题,则会丢失数据库... 您应该使用其他名称还原,重命名原始文件,然后重命名已还原的数据库。

祝你好运