使用Firebird的多个实例进行FireDac还原

时间:2019-07-08 12:30:40

标签: delphi firebird restore firedac

我有多个Firebird实例:

  • Firebird 2.5.6以ServiceName FirebirdDerverDefaultInstance在端口3050上运行
  • Firebird 3.04以ServiceName在端口3060上运行 FirebirdServerFB30

使用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恢复数据库?

2 个答案:

答案 0 :(得分:1)

我今天也遇到了这个问题。就我而言,事实证明已经存在与数据库的连接。删除所有连接后,FireDac便开始工作。即使存在与数据库的连接,Gbak也可以工作。

这很麻烦,因为我已经花时间在使用FireDAC而不是IBObjects上。我正在考虑在运行备份之前获得独占访问权限。

答案 1 :(得分:0)

用户对指定目录没有写权限。