我已经创建了Firebird多文件数据库
主数据库文件D:\Database\MainDB.fdb
位于D:\Database\DBFiles\Data001.fdb
至D:\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版本中,也不建议使用它
答案 0 :(得分:1)
到底做了什么?
UPD。我编辑了非常模糊的原始问题,以明确主题入门者想要的内容。
您无法可靠地“使用Firebird复制文件”-Firebird不是文件复制工具。您可以在某种程度上使用EXTERNAL TABLE
来访问原始文件,但使用它的权限非常有限,而不是数据库本身。
在Firebird运行时“复制数据库”是危险的做法,因为您只会复制部分数据。内存缓存中但尚未在磁盘上保存的最近更新的数据将丢失。该数据库文件将与某些更新的数据不一致,而某些尚未更新。当您“复制数据库文件”时,您首先必须关闭这些数据库甚至整个Firebird服务器。
Firebird拥有自己的数据库移动工具-这些工具称为备份/还原工具。如果nbackup
对您来说太慢,也许您需要的是gbak
工具。
最后,您可以列出组成数据库的文件。您可以通过gstat
实用程序或它使用的“服务API”来实现。您还可以从RDB$FILES
系统表中进行选择。但是,做完之后您会怎么做?对数据库的非常访问使其非常不适合后续复制(#2)。您可能需要关闭数据库,将其设置为只读和单用户状态,然后再附加到数据库并读取RDB$FILES
。复制完成后,您将不得不关闭数据库。 Kinda比nbackup
复杂得多。