更改 Firebird 二级数据库文件的路径

Change path of Firebird Secondary database files

我已经创建了一个 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 将在 C:\Database\DBFiles 等新路径中打开 Data001.fdb 而不是在 D:\Database\DBFiles 中最初创建它们的旧路径

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

更新:

最后我发现使用 Firebird 更改 Firebird 数据库辅助文件是不可能的。

但我发现了这个 Firebird FAQ mention GLINK 工具,但它不支持 Firebird 3.x 所以我没有测试它,即使是支持的 Firebird 版本也不建议使用它。

具体做了什么?

更新。我编辑了非常模糊的原始问题,以明确主题发起者想要什么。

  1. 你不能可靠地 "copy files with Firebird" - Firebird 不是文件复制工具。您可以在一定程度上使用 EXTERNAL TABLE 进行原始文件访问,但非常有限,而不是在数据库本身上。

  2. 在 Firebird 工作时 "copy databases" 是危险的做法,因为您只会复制部分数据。位于内存缓存中但尚未写入磁盘的最近更新的数据将丢失。数据库文件将与一些更新的数据和一些尚未更新的数据不一致。当您 "copy database files" 时,您必须首先关闭这些数据库甚至整个 Firebird 服务器。

  3. Firebird 有自己的工具来移动数据库——这些工具被称为 backup/restore 工具。也许你需要的是 nbackup 工具,如果 gbak 对你来说太慢了。

  4. 最后,您可以列出构成数据库的文件。您可以通过 gstat 实用程序或通过它使用的 "Services API" 来完成。您还可以从 RDB$FILES 系统 table select。然而你做了之后会做什么呢?对数据库的访问使得它非常不适合后续复制(#2)。您可能需要关闭数据库,将其变为只读和单用户状态,然后才附加到它并读取 RDB$FILES。复制完成后 - 您将不得不关闭数据库。有点比 nbackup.

  5. 复杂得多