我在Firebird 2.5数据库中工作:
偶尔(并非总是)当我运行一些使用LRTRIM函数的存储过程或视图(数据库对象)时,我收到以下错误:
令牌无效。 偏移量623处的无效请求BLR 函数LRTRIM未定义 找不到模块名称或入口点 解析过程XXXXXXX(stored_procedure name)时出错;
(我在IB专家和SSRS中都得到了这个)
这说我可以访问不使用LRTRIM功能的其他数据库对象!
我与LTRIM有类似的问题,现在我正在获得LRTRIM。几天前我将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位文件夹中)**
答案 0 :(得分:3)
在您当前的设置中,您似乎有两个Firebird服务器
您的UDF声明指向模块UDF
,它不是标准UDF,因此您的客户端很可能会将其用于数据库。在32位服务器安装中,您只有这些UDF的库,这意味着您只能使用32位服务器。在某些未知条件下,您在32位和64位服务器之间切换,这意味着后续连接是对64位服务器进行的,该服务器没有所需的UDF,从而导致错误。您应该卸载64位服务器,这样就不会发生。
你评论说你需要两者都是因为SRSS,但事实并非如此。您只需要一个Firebird服务器(32位或 64位;在本例中为32位,因为UDF),以及客户端库(32位和 64位)你的申请。
所以你需要做的是:
最后仔细检查连接字符串或连接属性,以确保始终连接到同一服务器(主机和端口),并且您不会意外地使用嵌入式连接。
答案 1 :(得分:0)
对我来说解决方案是: