哪个版本的Interbase或Firebird是在哪个数据库下创建的?

时间:2012-04-02 07:45:45

标签: firebird interbase

我有一个扩展名为.ib的文件。我猜这是一个 Interbase 或一个 Firebird 文件,但我确实无法确定哪个。此外,我们还不清楚使用Interbase(或Firebird)的版本来创建文件。

到目前为止我发现了什么:

我尝试过各种不同的软件来读取这个文件(FlameRobin,Firebird的isql.exe以及Interbase的最新版本),我收到的错误消息告诉我ODS(" On Disk Structure& #34;)是版本9.这是相当陈旧的,并且可以追溯到Firebird从Interbase分叉的时间。

我已经设法连接到数据库并使用Firebird查询它,但我得到的一些错误让我相信它实际上是一个Interbase数据库(如果需要,我可以进一步解释)

是否有一种简单的方法可以确定完全我正在处理哪种数据库?即,它是一个Interbase或Firebird文件,如果是这样,它是用哪个版本编写的?

编辑: gstat.exe -h的输出使用Firebird 2.5运行:

Database header page information:
    Flags           0
    Checksum        12345
    Generation      7558
    Page size       4096
    ODS version     9.1
    Oldest transaction  7506
    Oldest active       7544
    Oldest snapshot     7544
    Next transaction    7549
    Bumped transaction  1
    Sequence number     0
    Next attachment ID  5
    Implementation ID   16
    Shadow count        0
    Page buffers        0
    Next header page    0
    Database dialect    1
    Attributes      force write

    Variable header data:
    Sweep interval:     20000
    *END*

总结:

  • 获取Firebird的副本
  • 从bin目录
  • 运行gstat.exe -h
  • 从输出中获取ODS版本
  • table here
  • 中查找

3 个答案:

答案 0 :(得分:12)

  1. About ODS and how to get it
  2. Firebird, Interbase versions and corresponding ODS。这是俄语,但你可以阅读的表。它有列 - 版本,主要ODS版本,支持的ODS版本。

答案 1 :(得分:1)

从我对使用Dialect的评论的答案中,我猜想FlameRobin在连接到数据库时正在使用Dialect 3,这是新数据库的默认方言阅读Dialect以获取有关此问题的更多信息。另一方面,方言1是旧数据库的默认值(早于IB 6.0)。

在iSQL中,您可以使用以下句子来确保您使用Dialect 1.当您启动iSQL时:

isql -sql_dialect n

或在iSQL会话中:

SET SQL DIALECT n;

有关iSQL和方言here的更多信息。

如果这不起作用,那么最好的方法是获得一些旧的Interbase 5.0安装,执行gbak并使用Firebird 2.5安装恢复数据库。

您也可以尝试询问Firebird mailing lists。其中一个专注于Interbase数据库转换。

编辑:正如@mghie所述,FlameRobin的问题可能是因为它在10之前不支持ODS。

HTH

答案 2 :(得分:0)

您可以使用FBConvert实用程序将数据库转换为最新的Firebird 2.5格式。