【问题标题】:Inserting records from Firebrid database table into a SQL Server table将 Firebrid 数据库表中的记录插入 SQL Server 表
【发布时间】: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


【解决方案1】:

您收到该错误是因为您使用的语法在 Firebird 中不存在。 Firebird 不支持连接到除 Firebird 之外的其他数据库系统(理论上您可以编写一个允许连接到其他数据库系统的提供程序,但据我所知,实际上不存在)。

如果您想同步到不同的数据库系统,您将需要编写一个 UDF 或 UDR(Firebird 3 中引入的 UDF 的替代品)来为您执行此操作,或者提供一个提供同步的自定义应用程序,或者使用第三方软件(例如 SymmetricDS)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多