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

更改Firebird辅助数据库文件的路径,firebird,database-administration,Firebird,Database Administration,我已经创建了一个Firebird多文件数据库 主数据库文件D:\Database\MainDB.fdb 辅助文件位于D:\Database\DBFiles\Data001.fdb到D:\Database\DBFiles\Data240.fdb下的240个文件 当将数据库复制到另一个位置并试图打开它时,Firebird不会找到不在D:\partition中的文件 我希望Firebird在新路径下找到Database\DBFiels文件夹下的辅助文件 因此,如果我将数据库复制到C:\database

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

当将数据库复制到另一个位置并试图打开它时,Firebird不会找到不在D:\partition中的文件 我希望Firebird在新路径下找到Database\DBFiels文件夹下的辅助文件

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

火鸟能做到吗?若否,应如何处理?

更新:

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

但是我找到了这个提及工具,但它不支持Firebird 3.x,所以我没有测试它,而且即使支持Firebird的版本,也不建议使用它。

到底做了什么

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

使用Firebird无法可靠地复制文件-Firebird不是文件复制工具。您可以在一定程度上使用外部表访问原始文件,但非常有限,而且不依赖于数据库本身

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

Firebird有自己的工具来移动数据库,这些工具称为备份/恢复工具。如果gbak对您来说太慢,您可能需要的是nbackup工具

最后,您可以列出组成数据库的文件。您可以通过gstat实用程序或它使用的服务API来实现。您还可以从RDB$文件系统表中进行选择。但是,你做了之后会怎么做?对数据库的访问使其不适合后续复制2。您可能需要关闭数据库,将其转换为只读和单用户状态,然后连接到它并读取RDB$文件。复制完成后,您将不得不关闭数据库。比nbackup复杂得多


我知道,我正在尝试复制嵌入式数据库复制它根本没有风险,唯一的问题是,即使将数据库移动到另一个分区,它也会在我在问题中所示的同一个旧分区中查找辅助文件,所以我希望它能自动检测新数据库中的辅助文件path@SaRaFinBas使用gbak。这就是它的目的。@MarkRotterveel我知道gbak,但我不想备份和还原数据库,我可以做,但其他用户不能做,用户应该能够将数据库复制/移动到任何位置,如果我使用单文件数据库,那么问题就从使用多文件数据库开始,因为Firebird无法找到新的辅助文件location@SaRaFinBas如果不想备份和恢复,为什么要复制数据库?复制数据库是移动Firebird数据库的正确方法。定位辅助文件位置时遇到的问题是,Firebird将这些文件的绝对路径存储在其元数据中。如果您想重新定位它们,唯一正确的方法是使用gbak指定这些位置进行备份和恢复。您可以尝试更改RDB$文件中的路径,但没有任何保证,即使在FB2中也可以实际工作,所以在FB3中为什么有这么多数据库文件?这对我来说没有多大意义,正如Firebird文档所说:如今,多文件数据库被认为是一种倒退。在任何文件大小都有限的旧文件系统上使用多文件数据库是有意义的。例如,您无法在FAT32上创建大于4 GB的文件。使用多个数据库文件只会增加不必要的复杂性,而没有真正的好处。@MarkRotterVeel我使用很多文件,因为这是一个嵌入式数据库,应该可以在一些旧的有限系统上工作,当数据库变为数TB时,备份和还原数据库将非常困难,但是,由于具有复制和粘贴数据库文件的能力,它将变得更快、更容易。如果您的嵌入式使用产生如此大的数据库,也许你应该考虑搬到客户机/服务器模型。@马克为什么使用嵌入式系统中的百万兆字节,虽然嵌入式模式是UNIX上的默认CS模式,但我还是将它移到独立服务器上,这看起来确实很疯狂,这并不能解决我的数据库存储在Win98 FAT32旧系统上的问题。@Arioch“它在某些计算机上以嵌入式模式使用,在其他计算机上以服务器模式使用,在这些计算机上,数据将被更新,然后更新嵌入式系统。” 数据库在需要的时候,这就是它现在的工作方式,我不知道也许一年或两年后,他们会使用嵌入式数据库,只保留服务器