我有多个Firebird实例:
使用gbak可以做到这一点并且可以正常工作(我直接在Firebird 3目录中执行gbak)。我可以使用任何随机用户和随机密码,并且可以使用。
gbak -user ADMINxxx -pas adminxxx -c -v -se service_mgr D:\fb30.gbk d:\fb303.gdb
使用FireDac时,执行此操作时我无法还原数据库:
ADIBRestore.BackupFiles.Clear;
ADIBRestore.BackupFiles.Add('D:\fb30.gbk');
ADIBRestore.Database := 'd:\fb303.gdb';
ADIBRestore.UserName := 'ADMINxxx';
ADIBRestore.Password := 'adminxxx';
ADIBRestore.Host := '127.0.0.1';
ADIBRestore.Port := '3060';
ADIBRestore.Restore;
这让我感到异常
[FireDAC] [Phys] [FB]无权创建对数据库的访问 D:\ FB303.GDB无法创建数据库D:\ FB303.GDB未知ISC错误 336330835
是否可以使用用户不是SYSDBA用户的FireDac恢复数据库?
答案 0 :(得分:1)
我今天也遇到了这个问题。就我而言,事实证明已经存在与数据库的连接。删除所有连接后,FireDac便开始工作。即使存在与数据库的连接,Gbak也可以工作。
这很麻烦,因为我已经花时间在使用FireDAC而不是IBObjects上。我正在考虑在运行备份之前获得独占访问权限。
答案 1 :(得分:0)
用户对指定目录没有写权限。