【问题标题】:Synchronisation between SQL Server 2008 Express and VFP tablesSQL Server 2008 Express 和 VFP 表之间的同步
【发布时间】:2009-05-20 13:31:16
【问题描述】:

我正在寻找有关如何在两个数据库之间同步数据的意见和建议。

第一个数据库是 SQL Server 2008 Express,可在断开连接的笔记本电脑(无网络或互联网访问)上运行。第二个数据库(主)是在服务器上运行的 VFP 9.0。

当用户将他们的笔记本电脑连接到网络上时,我希望完成同步过程。

除了不同的数据库引擎,我还有以下几点需要考虑:

  1. 表格不必具有相同的结构
  2. 主键不相同(SQL Server 中的 GUID 和 VFP 中的字符字段组合)
  3. 表的同步必须按照一定的顺序进行,以尊重父子关系
  4. 在 SQL Server 端的某些插入操作中,必须生成新的主键并在 VFP 表中同步
  5. 必须进行大量验证,有时需要用户提供一些反馈
  6. 并非所有记录都需要同步
  7. 同步后需要删除SQL Server上的部分记录
  8. 需要考虑双方删除的记录
  9. 需要对 VFP 数据库进行最少的修改

我现在可能忘记了其他几点,但我想你知道我面临的挑战。我现在的猜测是我需要构建一个自定义同步模块,但在我继续之前我希望你能提供意见,以防我忽略了一些选项并获得一些关于如何解决这个问题的提示。

我快速查看了 Microsoft Sync Framework,但由于我的所有限制以及尚未构建 VFP 客户端 (AFAIK) 的事实,我认为它不会有很大帮助。

提前感谢您的反馈。

更新:笔记本电脑应用程序是 C# WinForm 应用程序,使用 SQL Server 2008 Express。

【问题讨论】:

    标签: c#-3.0 synchronization sql-server-2008-express visual-foxpro


    【解决方案1】:

    情况和要求的复杂性使我相信您需要编写一个 Visual FoxPro 应用程序。 Visual FoxPro 轻松连接到 SQL Server 2008 数据。代码的复杂性在于匹配需求并识别需要同步的数据,而不是语法。 Visual FoxPro 的优势在于数据操作语言和连接几乎任何数据源(本地 DBF、ODBC、ADO 和 XML)的能力。

    SQL Server 可以通过 VFP 9 OLE DB 驱动程序读取 VFP 9 数据。您可以编写 T-SQL 存储过程来获取 VFP 数据。不确定它如何识别连接到网络的笔记本电脑。

    另一种方法是使用 SQL Server XML Diffgrams。从任何方面来看,我都不是这种方法的专家,但您可以研究一下。

    由于我的专长是 Visual FoxPro,我会发现另一种方式更容易,但这只是我。您必须掌握项目资源的技能组合。

    VFP 通过连接(DSN、ConnectionString)和涉及 SQL 直通(SQLConnect()、SQLExec() 和 SQLDisconnect())、CursorAdapters、远程视图或三者组合的任何技术读取和写入 SQL Server 数据。

    Visual FoxPro 程序还可以识别 Windows 事件,例如连接到网络。该应用程序可以安装在每台笔记本电脑上并运行以识别 Windows 事件。引发事件后,应用程序可以尝试连接到 SQL Server 数据库(可能正在连接到没有 SQL Server 可用的网络或其他网络)。

    一旦连接,它就会运行逻辑来检查和同步数据库。

    听起来您对写入笔记本电脑上的 VFP 9 数据的应用程序没有太多控制权。如果您确实可以控制写入 VFP 9 数据库的应用程序,您可能会考虑将应用程序更改为写入笔记本电脑上的 SQL Server Express 实例,然后您可以使用 SQL Server 复制来管理同步。虽然这不是一项简单的任务,而且 SQL Server 复制虽然在每个版本中都变得更好,但确实会导致 DBA 脱发。走这条路肯定有很多工作要做。

    里克·舒默 Visual FoxPro MVP

    【讨论】:

    • 感谢您的回复。抱歉,但我忘了提及笔记本电脑应用程序是我编写的 C# WinForm 应用程序,它使用的是 SQL Server 2008 Express。我非常了解 VFP,因为我使用了 10 多年,但出于各种原因,我们正试图摆脱它。
    • 有时迁移到另一种语言会使事情变得更容易,但有时却不是那么容易。 VFP 的 Sedna 版本为 Visual Studio 2005 提供了一个 DDEX 提供程序(我认为它可以与 2008 一起使用,但不要引用我的话)。这可能有助于您在 C# 代码中更轻松地获取数据。
    【解决方案2】:

    我建议您再看看 MS 同步框架。我们有一种情况,我们希望偶尔将连接的 C# 客户端应用程序与我们的 Java/Oracle 后端同步。您可以为 C# 客户端使用同步框架提供程序,并为后端实现您自己的 KnowledgeSyncProvider 自定义子类。这将使您成功完成一半,并向您展示申请其余部分的良好模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-24
      • 2012-05-24
      • 2013-01-13
      相关资源
      最近更新 更多