【发布时间】:2020-08-20 20:38:32
【问题描述】:
我有一个使用 Firebird(2.5 版)数据库的应用程序。我想将其中一个表条目触发到 SQL Server 2008 R2 中的另一个数据库表。当我提交时,我收到以下错误
ErrorCode:335544569(ErrorMessage:动态 SQL 错误 SQL 错误代码 = -104)。
代码:
CREATE TRIGGER "trig_INV"
FOR "INVA"
ACTIVE
AFTER UPDATE
POSITION 100
AS
BEGIN
IF ((updating) AND ((old.cold <> new.cold))) THEN
BEGIN
INSERT INTO 192.168.17.206/1043: [RBT].[dbo].[N_Inv]([COLA], [COLB], [COLC], [COLD], [COLD], [COLE])
SELECT FIRST 1
"COLA", "COLB", "COLC", "COLD", "COLE"
FROM "INVA"
ORDER BY COLA DESC
END
我不确定 firebird 触发器是否允许将记录推送到 SQL Server 数据库。如果有人尝试过并提供一些参考,那就太好了。提前致谢。
【问题讨论】:
-
"我不确定 firebird 触发器是否允许将记录推送到 SQL Server 数据库" - 不。
-
@a_horse_with_no_name,谢谢。任何其他从 firebird 读取记录并实时推送到 sqlserver 的方法或方式。我正在考虑触发,因为它是即时的。
-
您可以编写一个 DLL (
UDF),您可以从触发器中调用它并使用一些外部方式与 SQL 服务器进行通信,这种方法可能具有最少的延迟,但可能会导致 Firebird 崩溃服务器(如果您在 DLL 中出错,或者您的 DLL 是否可以长时间冻结工作)并且可能会在 FB4 中删除。更好的方法是POST_EVENT并有一个单独的同步应用程序,它连接到 Firebird 和 MS-SQL 等待 FB 事件,当它得到它时 - 它扫描 FB DB 以查找更改并将它们泵入 MS SQL。 -
@Arioch'The,感谢您的详细反馈。让我试试 Post_Event 方法。
标签: sql-server-2008-r2 firebird firebird2.5