- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在查看专有软件的 .fdb 数据库(可能使用 Firebird Embedded)时,如何确定需要设置哪个版本的 Firebird?
我目前能想象的唯一方法是用十六进制查看器查看“ODS版本”,它是页面标题的一部分,很可能也用作文件标题的格式,然后以某种方式通过挖掘存储库历史记录,找出哪个 Firebird 版本支持哪个 ODS 版本。 ODS 版本,至少现在,是按如下所述编码的。
相关代码:
https://github.com/FirebirdSQL/firebird/blob/3dd6a2f5366e0ae3d0e6793ef3da02f0fd05823a/src/jrd/ods.h
和
inline USHORT DECODE_ODS_MAJOR(USHORT ods_version)
{
return ((ods_version & 0x7FF0) >> 4);
}
inline USHORT DECODE_ODS_MINOR(USHORT ods_version)
{
return (ods_version & 0x000F);
}
是否真的没有更简单的方法来确定所需的 firebird 版本,例如使用一些 cli 工具?
最佳答案
如果您手头安装了 Firebird,则可以使用 gstat 检查数据库的 ODS。例如:
gstat -h <path-to-your-database>
如果 gstat 版本支持数据库的 ODS 版本,您将得到类似以下内容的信息:
Database "D:\DATA\DB\FB4\FB4TESTDATABASE.FDB"
Gstat execution time Sat Mar 17 18:08:09 2018
Database header page information:
Flags 0
Generation 308
System Change Number 0
Page size 16384
ODS version 13.0
Oldest transaction 393
Oldest active 394
Oldest snapshot 394
Next transaction 395
Sequence number 0
Next attachment ID 150
Implementation HW=AMD/Intel/x64 little-endian OS=Windows CC=MSVC
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Jan 6, 2017 14:05:48
Attributes force write
Variable header data:
*END*
这里ODS版本13.0
表示它是Firebird 4数据库。
如果 gstat 版本不支持数据库的 ODS 版本,您将收到如下错误(例如,在本例中,在 Firebird 2.5/ODS 11.2 数据库上使用 Firebird 4 gstat):
Wrong ODS version, expected 13, encountered 11
但这有其缺点:它不提供 ODS 次要版本,例如,当使用 Firebird 2.0 (ODS 11.0) 或 2.1 (ODS 11.1) gstat 访问 Firebird 2.5 (ODS 11.2) 数据库时,此将导致无用的错误消息:
Wrong ODS version, expected 11, encountered 11
最快的方法是使用 Firebird 2.5 gstat,因为这将允许您精确定位 10 (Firebird 1) 和 11.2 (Firebird 2.5) 之间的确切 ODS 版本,同时错误消息将允许您精确定位如果您需要更新的版本(例如 ODS 12 是 Firebird 3,ODS 13 是 Firebird 4)。
但是,您还需要查看 gstat 的Implementation
输出。 Firebird 数据库文件具有特定于平台的存储(尽管自 Firebird 2.0 以来该存储已减少)。例如,在 Firebird 1.5 及更早版本 (ODS 10) 中,64 位 Firebird 无法访问 32 位 Firebird 中的数据库。小端平台(最常见)的 Firebird 数据库无法在大端平台上读取(反之亦然)。
在这些限制内,Firebird 2.5 安装可以读取 ODS 10 到 11.2 的数据库。 Firebird 3 只能读取 ODS 12,Firebird 4 只能读取 ODS 13。
如果存在平台不匹配(例如旧的 32/64 位或小/大端)或不受支持的 ODS 版本,您将需要有可传输备份 (gbak) 来转换和/或升级。
有关 ODS 版本和随附的 Firebird(或 InterBase)版本的概述,请参阅 All Firebird and InterBase On-Disk-Structure (ODS) versions .
关于firebird - 如何轻松确定 .fdb 文件的版本(Firebird 数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338030/
我有一个关于 Firebird 客户端和服务器版本的问题。我知道由于 ODS 更改,数据库文件必须与 Firebird 服务器匹配。即 Firebird 建议在服务器版本 2.5.1 和 2.5.2
是否可以使用相同 Firebird 版本的 Firebird Embedded 打开 Firebird 数据库文件?当然,我知道我不能同时通过 FB Embedded 和 FB 打开同一个文件。但在关
首先我读到了这个问题: Firebird database replication 但我不想复制...我只想将数据库上已更改的数据添加到我们的主数据库中。有什么想法吗? 最佳答案 AFAICT 这也是
我同时使用 Firebird 嵌入式和 Firebird 服务器,有时我需要使用如下程序重新索引表: CREATE PROCEDURE MAINTENANCE_SELECTIVITY ASDECLAR
firebird 是否支持事务模式更改?在我看来,MySQL 没有(我说得对吗?)。 最佳答案 我打算发布一个简单的"is",但 Stack Overflow 不接受少于 15 个字符的答案。简而言之
我正在尝试将 Firebird 2.5.1 迁移到 Firebird 3.0 做了什么: 备份 Firebird 2.5.1 在 Firebird 3 上恢复 问题是并不是所有的表都被迁移了;过程、触
我的意思是,即使数据库为空,您也必须删除 varchar(50) 字段并重新创建它以使其成为 varchar(30)。更别说约束了…… 这是非常令人沮丧的。我是 SYSDBA,Firebird 使非常
当我尝试更改 Firebird 中不同所有者的表时,出现此错误: unsuccessful metadata update MODIFY RDB$RELATION_FIELDS failed no p
我有下表 create table LIST_PIPE_TABLE ( ID INT, ITEM VARCHAR(4000), IS_FOLDER VARCHAR
有没有一种快速的方法来列出为数据库定义的所有实际上没有被任何字段使用的 Firebird 域?我有一个包含许多表和许多域的大型数据库,似乎其中很多不再使用,所以我想是时候进行清理了! 我认为这可以通过
我有一个表 t,其中一列是 int 类型,有几行。 我想循环它。当然,我可以为此编写一个选择查询。不过我是学程序的,写了个程序, set term ^; create procedure qt ret
我正在尝试使用 FlameRobin 打开一个 .fdb (Firebird) 数据库,但它给了我以下错误消息: *** IBPP::SQLException *** Context: Databas
我有一个旧版 Firebird(版本 2.5.2)数据库,并使用 FlameRobin(版本 0.0.2.1851)来检查它。 我已在 RDB$RELATION_CONSTRAINTS 表上运行以下查
我是这里的 Firebird 新手。我正在尝试从 ASP.Net 应用程序使用 Firebird Embedded。一切都连接正常,但我遇到了列名称长度的问题。我正在尝试创建一个名为“Orchard_
刚刚开始将 Firebird 与 Delphi XE 结合使用。需要一些从客户端计算机连接到服务器的帮助。 我可以 ping 服务器,因此存在连接。但是当我从 firebird/bin 文件夹运行 i
我在 Ubuntu 中打开命令提示符,然后登录 Firebird,如下所示: $ isql-fb SQL> connect "localhost:/var/lib/firebird/2.5/data/
已下载 Firebird 数据库 Firebird-3.0.3.32900-0_x64_pdb.zip。解压文件夹install_service.bat并能够访问EMPLOYEE.FDB数据库。无需
如何在 Firebird 中将多个数据库合并为一个?我尝试了 fbexport,但没有在 Ubuntu 上编译 fbexport,我不断收到此错误。 g++ -pthread -lfbclient -
我想查询以下内容:所有表及其列和数据类型 到目前为止,我从 http://www.firebirdfaq.org/faq174/ 得到了这个 select f.rdb$relation_name, f
我有一个接近 4GB 文件系统限制大小的 firebird 数据库。如何将单个数据库文件拆分为多个文件? 最佳答案 对于单个文件数据库,Firebird 数据库可以跨越数 TB。 InterBase
我是一名优秀的程序员,十分优秀!