7

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

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

我尝试了各种不同的软件来读取这个文件(FlameRobin、Firebird 的 isql.exe 以及最新版本的 Interbase),我收到的错误消息告诉我 ODS(“磁盘结构”)是第 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 的副本
  • gstat.exe -h从 bin 目录运行
  • 从输出中获取 ODS 版本
  • 在此处的表格中查找
4

3 回答 3

13
  1. 关于 ODS 以及如何获得它
  2. Firebird、Interbase 版本和相应的 ODS。它是俄语的,但您可以阅读表格。它有列 - 版本、主要 ODS 版本、支持的 ODS 版本。
于 2012-04-02T08:25:11.540 回答
2

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

在 iSQL 中,您可以使用以下句子来确保您使用的是方言 1。当您启动 iSQL 时:

isql -sql_dialect n

或在 iSQL 会话中:

SET SQL DIALECT n;

有关 iSQL 和方言的更多信息,请点击此处

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

您也可以尝试在Firebird 邮件列表上提问。其中之一专注于 Interbase 数据库转换。

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

高温高压

于 2012-04-02T10:17:45.703 回答
0

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

于 2012-04-02T11:38:54.437 回答