2012-07-10 54 views
0

我有一个firebird数据库的备份。我会知道哪个版本的gbak制作了它,哪个版本的firebird来自哪个版本。如何知道备份文件的版本

是否有可能知道这些信息?

PS:我google了很多,但我没有找到解决方案;我发现的唯一的解决方法是尝试与不同版本的火鸟GBAK

+0

你确实需要特定的Firebird版本,还是只想恢复它? – 2012-07-10 15:38:31

+0

我只想恢复备份,而不尝试使用不同版本的firebird和gbak – 2012-07-11 06:21:19

回答

0

通常火鸟备份存储在External Data Representation(XDR)格式来恢复。

这意味着文件只包含XDR备份版本,而不是Firebird版本甚至Gbak版本。备份版本与Firebird版本没有直接关系。

此外,XDR备份与FB版本兼容。如果您的数据库没有任何新的特定FB功能,可以通过使用旧版本的gbak恢复它来自由降级。

+0

这并不完全正确,尽管gbak使用XDR存储数据,但它将gbak备份格式版本存储在标题中(格式版本与Firebird的ODS功能) – 2012-07-10 15:37:49

+0

Checked Gbak source。仅存储XDR备份版本。 ATT_BACKUP_FORMAT常量。 – Marcodor 2012-07-10 16:03:01

1

Firebird版本的gbak实用程序将能够读取早期版本的所有备份格式(理论上自InterBase 4.0以来,虽然没有经过测试)。因此,如果您想恢复备份,只需使用最新版本的Firebird即可恢复该文件。

此外,如果您需要恢复到早期的Firebird版本,您可以使用最新的Firebird的gbak。当恢复到较旧的Firebird版本时,它能够将旧的备份格式恢复到较旧的服务器(尽管如果备份包含较新的Firebird版本的功能,那些部分将不会恢复或备份可能会失败,并且您还需要重新编译所有存储过程)。

唯一潜在的障碍是如果备份来自不同的endian系统,并且备份不是可移植的(默认情况下可以传输)。

+0

我需要将备份恢复到相同的旧版Firebird。我尝试用firebird的老版本使用最新的gbak,但它不起作用 – 2012-07-11 09:00:26

+0

嗯,这里是我的'gbak'知识结束的地方:(你也可以尝试Firebird支持邮件列表(参见http:///www.firebirdsql.org/en/mailing-lists/) – 2012-07-11 09:28:38

+0

@MarcoAndreolli,你可以在备份文件的头部检查ATT_BACKUP_FORMAT常量(如果备份是可移动的,即存储在XDR中)。这个const存储备份版本(更确切地说是FEATURE备份文件可能包含的版本(即新的关键字,新的sintaxis))。但最有趣的事情,即使备份版本不同,如果这些新功能没有在数据库中使用,备份可以在旧版本的FB上恢复。因为我悲伤的版本备份与FB版本无关,例如FB 1.0和FB 1.5有完全相同的备份版本。 – Marcodor 2012-07-12 07:19:14