0

我在寻找关于如何在两个数据库之间同步数据的建议和建议。SQL Server 2008 Express和VFP表之间的同步

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

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

除了不同的数据库引擎,我有以下项目要考虑到:

  1. 表格没有必要具有相同的结构
  2. 的主键是不一样的(GUID在SQL Server中,通常是VFP中的字符字段的组合)
  3. 表的同步必须按照一定的顺序完成以尊重父子关系
  4. 在SQL Server端的某个插入上,新的主键必须生成并同步ronised在VFP表
  5. 验证一束必须作出与一些来自用户的反馈,所以有时需要
  6. 并非所有记录需要在SQL Server上进行同步
  7. 一些记录需要的syncronisation后删除
  8. 需要考虑删除的记录从两侧
  9. 最小的改动需要在VFP数据库上进行

现在有我forgotting可能其他的点,但我THI你知道我面临的挑战。我现在的猜测是我需要构建一个自定义同步模块,但是在我继续之前我想要你的输入,以防我忽略了一些选项并获得一些关于如何处理这些问题的提示。

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

预先感谢您的反馈意见。

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

回答

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,Remote Views或三者的组合的任何技术来读写SQL Server数据。

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

连接后,它将运行检查和同步数据库的逻辑。

听起来像你没有很多的控制写在笔记本电脑上的VFP 9数据的应用程序。如果您确实可以控制应用程序写入VFP 9数据库,则可以考虑将应用程序更改为在笔记本电脑上写入SQL Server Express实例,然后使用SQL Server复制来管理同步。尽管这并不是一件小事,但SQL Server复制在每个版本中都变得更好,但确实会导致数据库管理员脱发。这条路线绝对有很多工作要做。

里克Schummer 的Visual FoxPro MVP

+0

感谢您的回复。对不起,但我忘了提及笔记本电脑应用程序是我编写并使用SQL Server 2008 Express的C#WinForm应用程序。我非常了解VFP,因为我已经使用了10多年了,但由于种种原因,我们正试图摆脱它。 – izokurew 2009-06-08 13:06:48

0

我会鼓励你再看看MS同步框架。我们有一种情况,我们希望偶尔将连接的C#客户端应用程序与Java/Oracle后端同步。您可以使用C#客户端的同步框架提供程序,并为后端实现您自己的KnowledgeSyncProvider自定义子类。这会让你在中途停下来,并向你展示一个很好的模式来申请休息。

相关问题