我正在关注这个网站上的例子: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。有时关闭命令不起作用,我通过确保数据库在关闭之前实际在线来修复它:
gfix -user SYSDBA -pas masterkey -online C:\Database\MyDB.fdb
但是,即使关闭数据库时没有错误,restore 也总是抱怨:
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)
我猜这是因为数据库已完全关闭并且不允许连接,所以要检查的事情少了。