如何确定Firebird SQL的版本?

8

有没有任何方法可以使用SQL或代码(Delphi、C ++)来确定Firebird SQL的版本?

再见

3个回答

17

如果您想通过SQL查找它,可以使用get_context来查找引擎版本,如下所示:

SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') 
             as version from rdb$database;

你可以在这里Firebird FAQ了解更多信息,但我认为需要使用Firebird 2.1。


为什么在 'system' 和 'engine_version' 查询中使用了 2 个单引号,如果只用一个单引号则查询失败,但是使用两个单引号则可以返回正确的结果。 - zz1433
1
@Re0sless:考虑到这在FB 2.1之前的所有版本都会崩溃,这不是欺骗吗?你会调用一个仅适用于Vista的API函数,并捕获可能的崩溃,以找出程序运行的Windows版本吗?问题非常模糊,但这样做感觉就是错的。 - mghie
我已经安装了Firebird 2.5。在执行上述命令后,我遇到了以下错误:
开始事务... 准备查询:SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') from rdb$database 错误:*** IBPP::SQLException *** 上下文:Statement::Prepare( SELECT rdb$get_context('SYSTEM', 'ENGINE_VERSION') from rdb$database ) 消息:isc_dsql_prepare 失败SQL 消息:-804 应用程序输入参数中发现 SQL 语句的错误。引擎代码:335544569 引擎消息: 动态 SQL 错误 SQL 错误代码 = -804 未知函数 RDB$GET_CONTEXT
- truthseeker

2

你可以做两件事情:

  • 使用Services API查询服务器版本,调用isc_service_query()并传入isc_info_svc_server_version参数。你喜欢的Delphi组件集应该提供了一个方法来包装这个API。
    对于C++,例如IBPP就有IBPP::Service::GetVersion()返回版本字符串。
    你得到的是在控制面板小程序中显示的相同字符串。

  • 如果你需要检查某些功能是否可用,执行针对系统表的语句以检查给定的系统关系或该关系中的某个字段是否可用可能足够(甚至更好)。如果数据库的ODS版本较旧,则可能不支持某些功能,即使服务器版本足够新。
    ODS版本也可以通过API查询,使用isc_database_info()调用。


您还可以使用常规连接而非服务API,使用isc_database_info函数和isc_info_version参数查询服务器版本和服务器版本字符串(您也可以使用isc_database_info查询ODS版本)。另一种获取版本信息的方法是使用isc_version函数。 - reiniero

-1

也许你有FIBPlus(http://www.devrace.com/en/fibplus/)...它拥有安装、卸载、启动、停止Firebird/Interbase以及获取服务器版本等所有必要的工具和源代码。无论如何,你可以从客户端驱动程序(Firebird的fbclient.dll)中获取版本信息。DelphiDabbler(http://www.delphidabbler.com/software/verinfo/download)提供了免费的源代码,可以获取任何DLL文件的文件版本。你可以轻松使用它。


客户端库的版本与服务器版本无关,不同版本可以轻松混合使用。即使是本地服务器,客户端库的版本也可能不同。 - mghie
好的 - 这我不知道。看着我的实际 GDS32.DLL ,我得到:翻译 = 英语(美国)- Windows 3.1 US (ANSI) / 多语言公司名称 = Embarcadero Technologies, Inc. 文件说明 = InterBase 服务器文件版本 = WI-V9.0.2.420 内部名称 = InterBase LegalCopyright = Copyright (c) 1986 - 2008 Embarcadero Technologies, Inc. 产品名称 = InterBase 服务器产品版本 = 9.0.2.420 - volvox
对于Firebird FBCLIENT.DLL:文件描述= Firebird SQL Server 文件版本= WI-V2.1.2.18118 内部名称= Firebird 法律版权= 版权所有(c)由个人贡献者保留-原始代码版权(c)2000 Inprise Corporation 产品名称= Firebird SQL Server 产品版本= 2.1.2.18118 SpecialBuild = Firebird 2.1 - volvox
这个客户端库版本只有在数据库位于本地主机时才有意义,否则Firebird服务器可能是Linux或其他*nix上的1.5.5。询问服务器是确保的唯一方法。 - mghie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接