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 服务器
- C:\Program Files (x86) 中的 32 位\Firebird\Firebird_2_5,
- 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 位)适用于您的应用程序。
所以你需要做什么:
- 卸载 64 位 Firebird 服务器,
- 启动 64 位 Firebird 安装程序并仅安装客户端组件。
最后仔细检查连接字符串或连接属性,以确保您始终连接到同一台服务器(主机和端口),并且不会意外使用嵌入式连接。
对我来说,解决方案是:
- 进入Firebird默认安装目录(一般在C:\Program Files\Firebird\Firebird_3_0);
- 在记事本中打开文件 firebird.conf;
- 搜索参数 UdfAccess;
- 在参数名称 (#UdfAccess) 前使用字符 #(井号标签)注释该行;
- 在 Windows 搜索框中输入 services.msc;
- 找到 Firebird 服务;
- 使用鼠标右键单击 Firebird 服务;
- 选择停止;
- 使用鼠标右键单击 Firebird 服务;
- 选择开始。
我在 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 服务器
- C:\Program Files (x86) 中的 32 位\Firebird\Firebird_2_5,
- 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 位)适用于您的应用程序。
所以你需要做什么:
- 卸载 64 位 Firebird 服务器,
- 启动 64 位 Firebird 安装程序并仅安装客户端组件。
最后仔细检查连接字符串或连接属性,以确保您始终连接到同一台服务器(主机和端口),并且不会意外使用嵌入式连接。
对我来说,解决方案是:
- 进入Firebird默认安装目录(一般在C:\Program Files\Firebird\Firebird_3_0);
- 在记事本中打开文件 firebird.conf;
- 搜索参数 UdfAccess;
- 在参数名称 (#UdfAccess) 前使用字符 #(井号标签)注释该行;
- 在 Windows 搜索框中输入 services.msc;
- 找到 Firebird 服务;
- 使用鼠标右键单击 Firebird 服务;
- 选择停止;
- 使用鼠标右键单击 Firebird 服务;
- 选择开始。