更改Firebird辅助数据库文件的路径

时间:2018-08-27 20:47:28

标签: firebird database-administration

我已经创建了Firebird多文件数据库
主数据库文件D:\Database\MainDB.fdb
位于D:\Database\DBFiles\Data001.fdbD:\Database\DBFiles\Data240.fdb下的辅助文件(240个文件)

将数据库复制到另一个位置并尝试打开它时,如果文件不在D:\分区中,则Firebird找不到文件
我希望Firebird在新路径的Database\DBFiels文件夹下找到辅助文件。

因此,如果我将数据库复制到C:\Database\MainDB.fdb Firebird会以Data001.fdb之类的新路径打开C:\Database\DBFiles,而不是最初创建它们的D:\Database\DBFiles中的旧路径

可以用Firebird做到吗?如果没有,那应该怎么做?

更新:

最后,我发现无法使用Firebird更改Firebird数据库辅助文件。

但是我发现了这个Firebird FAQ提及的GLINK工具,但是它不支持Firebird 3.x,所以我没有对其进行测试,即使在受支持的Firebird版本中,也不建议使用它

1 个答案:

答案 0 :(得分:1)

到底做了什么?

UPD。我编辑了非常模糊的原始问题,以明确主题入门者想要的内容。

  1. 您无法可靠地“使用Firebird复制文件”-Firebird不是文件复制工具。您可以在某种程度上使用EXTERNAL TABLE来访问原始文件,但使用它的权限非常有限,而不是数据库本身。

  2. 在Firebird运行时“复制数据库”是危险的做法,因为您只会复制部分数据。内存缓存中但尚未在磁盘上保存的最近更新的数据将丢失。该数据库文件将与某些更新的数据不一致,而某些尚未更新。当您“复制数据库文件”时,您首先必须关闭这些数据库甚至整个Firebird服务器。

  3. Firebird拥有自己的数据库移动工具-这些工具称为备份/还原工具。如果nbackup对您来说太慢,也许您需要的是gbak工具。

  4. 最后,您可以列出组成数据库的文件。您可以通过gstat实用程序或它使用的“服务API”来实现。您还可以从RDB$FILES系统表中进行选择。但是,做完之后您会怎么做?对数据库的非常访问使其非常不适合后续复制(#2)。您可能需要关闭数据库,将其设置为只读和单用户状态,然后再附加到数据库并读取RDB$FILES。复制完成后,您将不得不关闭数据库。 Kinda比nbackup复杂得多。