Firebird BLR 623 无效请求 - LRTRIM 未定义 - 找不到模块名称或入口点

Firebird BLR 623 invalid request - LRTRIM is not defined - module name or entrypoint could not be found

我在 Firebird 2.5 数据库中工作:

当我 运行 某些使用 LRTRIM 函数的存储过程或视图(数据库对象)时,偶尔(并非总是)出现以下错误:

无效的令牌。 偏移量 623 处的无效请求 BLR 函数 LRTRIM 未定义 找不到模块名称或入口点 解析过程 XXXXXXX(stored_procedure 名称)时出错;

(我在 IB Expert 和 SSRS 中都得到了这个)

这表示我可以访问不使用 LRTRIM 函数的其他数据库对象!

我在使用 LTRIM 时遇到了类似的问题,现在我正在使用 LTRIM。几天前我将 firebird.msg 从 Firebird 文件夹复制到 Windows 文件夹,这是我收到的新错误消息。

我的临时解决方法:

有时我会重新启动机器,并且能够 运行 这些相同的存储过程和视图在某个时候抛出此错误。其他时候,我重启机器几次,就可以访问这些视图和存储过程。

其他时候,我重启了很多次机器,仍然无法运行 数据库对象。我感到沮丧并放弃了这一天。当我第二天早上重新打开机器时,我可以再次 运行 这些对象。

这可能是什么原因?永久解决方案是什么?

**现在我有这个:在 32 位文件夹中: C:\Program Files (x86)\Firebird\Firebird_2_5\udf ,我找到这 8 个文件:fbudf.dll,fbudf.sql ,fbudf.txt,ib_udf.dll,ib_udf.sql,ib_udf2.sql,udf.dll,UDFPrici‌ ng.dll ;

但在 64 位文件夹:C:\Program Files\Firebird\Firebird_2_5\UDF 中,我找到了这 6 个文件:fbudf.dll、fbudf.sql、fbudf.txt、ib_udf.dll,ib_udf.sql,ib_udf2.sql(我没有找到最后 2 个 .dll 文件 - udf.dll 和 UDFPricing.dll - 那存在于 32 位文件夹中)**

在您当前的设置中,您似乎有两个 Firebird 服务器

  1. C:\Program Files (x86) 中的 32 位\Firebird\Firebird_2_5,
  2. C:\Program Files 中的 64 位\Firebird\Firebird_2_5

您的 UDF 声明指向模块 UDF,它不是标准的 UDF,因此这很可能是由您的客户提供的,用于他们的数据库。在 32 位服务器安装中只有这些 UDF 的库,这意味着您只能使用 32 位服务器。在某些未知情况下,您在 32 位和 64 位服务器之间切换,这意味着后续连接将连接到 64 位服务器,而 64 位服务器没有所需的 UDF,从而导致错误。您应该卸载 64 位服务器,这样就不会发生这种情况。

您评论说由于 SRSS,您需要两者,但事实并非如此。您只需要一个 Firebird 服务器(32 位 64 位;在本例中为 32 位,因为有 UDF)和客户端库(32 位 64 位)适用于您的应用程序。

所以你需要做什么:

  1. 卸载 64 位 Firebird 服务器,
  2. 启动 64 位 Firebird 安装程序并仅安装客户端组件。

最后仔细检查连接字符串或连接属性,以确保您始终连接到同一台服务器(主机和端口),并且不会意外使用嵌入式连接。

对我来说,解决方案是:

  1. 进入Firebird默认安装目录(一般在C:\Program Files\Firebird\Firebird_3_0);
  2. 在记事本中打开文件 firebird.conf;
  3. 搜索参数 UdfAccess;
  4. 在参数名称 (#UdfAccess) 前使用字符 #(井号标签)注释该行;
  5. 在 Windows 搜索框中输入 services.msc;
  6. 找到 Firebird 服务;
  7. 使用鼠标右键单击 Firebird 服务;
  8. 选择停止;
  9. 使用鼠标右键单击 Firebird 服务;
  10. 选择开始。