【问题标题】:Firebird replication help needed需要火鸟复制帮助
【发布时间】:2015-10-07 14:18:41
【问题描述】:

我正在编写一个双向服务器 - 使用 C# 应用程序进行客户端 Firebird 复制,我面临以下问题。 我有一个日志表,上面有记录的表名 pk 和查询执行的类型。例如,如果在sales 表中插入了一个primary key 为4 的行,则会有表名,记录的pk 并插入。 我的想法是,如果该语句插入以从客户端数据库中获取每个值并将其插入服务器。我如何做到这一点以及如何做到这一点,以便它可以快速工作。我应该按表划分每条记录并从该表中选择所有未复制的记录还是有其他方式。

顺便说一句,我使用的方法是将已执行的每个查询都写入日志表的一个字段中,但这使得无法向表中添加列,因为查询会出错。

【问题讨论】:

    标签: database replication firebird database-replication firebird2.5


    【解决方案1】:

    您可能希望从 IBExpert.net 在线文档中的一些信息开始。本文解释了使用 Firebird 进行数据库复制的基础知识:http://ibexpert.net/ibe/index.php?n=Doc.BidirectionalReplicationForInterBaseAndFirebird
    此外,IBExpert KG 提供自己的复制解决方案。您可以浏览他们的复制常见问题解答或通过电子邮件获取一些信息。 http://ibexpert.net/ibe/index.php?n=Doc.ReplicationFAQs

    【讨论】:

    • 您好 MBDev,感谢您的回答。 IBE 站点中描述的复制方法是 mi current 复制引擎的精确副本。问题是,它将执行 I U D 查询存储在 LOG 表中,然后在服务器 DB 上执行它。这样,如果您向表中添加列,此查询将不起作用。它会说这个表中有更多的列。如果我想更改字段名称或删除它,也是如此。这就是为什么我希望能够从客户端数据库中获取记录并将其复制到服务器。我需要帮助来做这个计划。
    • 添加一个列应该不是问题。此外,更新列是可能的,但更改字段名称不是一个好主意。 我的提示: 1. 只需将所需的字段添加到您的 SQL 中。例如:if (new.FIELDnull) then SQL=SQL||'....'。更新语句应该只包含更改的字段和 ID。 2. 在进行元更改后,将您的 SQL 添加到复制操作表中。例如像“ALTER TABLE....”这样的 SQL。此方法允许以正确的顺序传输元更改。 3. 避免删除表格和字段。
    • 4. 尽量让您的客户保持同步。有时这个目标是一个真正的挑战,但它使元更改变得简单。
    • 首先我要感谢您的帮助。我很感激。
    • 我的主要问题是触发器没有在日志表中插入像“插入表(字段)值(值);”,而是“插入表值(值)” .添加一列,它显示“列号不匹配”。因此,您的建议是更改为第一种方法,因为这将使我能够添加 cols,并且在元数据更改后我应该重新创建 thigges 以便它们根据新列插入?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    • 2020-02-27
    相关资源
    最近更新 更多