SQL Server 2008 Express和VFP表之间的同步

时间:2009-05-20 13:31:17

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

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

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

当用户在网络上连接笔记本电脑时,我希望同步过程能够完成。

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

  1. 表格不一定具有相同的结构
  2. 主键不一样(SQL Server中的GUID,通常是VFP中字符字段的组合)
  3. 必须按特定顺序同步表以尊重父子关系
  4. 在SQL Server端的某些插入上,必须在VFP表中生成并同步新的主键
  5. 必须进行一系列验证,有时需要用户提供一些反馈
  6. 并非所有记录都需要同步
  7. 同步后需要删除SQL Server上的某些记录
  8. 需要考虑双方删除的记录
  9. 需要在VFP数据库上进行最少的修改
  10. 我现在可能忘记了其他一些观点,但我认为你了解我面临的挑战。我现在的猜测是,我需要构建一个自定义同步模块,但是在我继续之前我想要你的输入,以防我忽略了一些选项,并获得了一些如何处理它的提示。

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

    提前感谢您的反馈。

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

2 个答案:

答案 0 :(得分: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 Passthrough(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脱发。肯定有很多工作要走这条路。

Rick Schummer Visual FoxPro MVP

答案 1 :(得分:0)

我建议您再看看MS同步框架。我们希望将偶尔连接的C#客户端应用程序与我们的Java / Oracle后端同步。您可以将同步框架提供程序用于C#客户端,并为后端实现自己的KnowledgeSyncProvider自定义子类。这将让你在中途,并向你展示一个很好的模式来申请其余的。