Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 3.0 SQL Server 2008 Express和VFP表之间的同步_C# 3.0_Synchronization_Sql Server 2008 Express_Visual Foxpro - Fatal编程技术网

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

C# 3.0 SQL Server 2008 Express和VFP表之间的同步,c#-3.0,synchronization,sql-server-2008-express,visual-foxpro,C# 3.0,Synchronization,Sql Server 2008 Express,Visual Foxpro,我正在寻找关于如何在两个数据库之间同步数据的建议 第一个数据库是在断开连接的笔记本电脑上运行的SQL Server 2008 Express(无网络或internet访问)。第二个数据库(main)是在服务器上运行的vfp9.0 当用户在网络上连接他们的笔记本电脑时,我希望同步过程能够完成 除了不同的数据库引擎外,我还需要考虑以下各项: 这些表不必具有相同的结构 主键不同(SQL Server中的GUID和VFP中的字符字段组合) 表的同步必须按照一定的顺序进行,以尊重父子关系 在SQL Ser

我正在寻找关于如何在两个数据库之间同步数据的建议

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

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

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

  • 这些表不必具有相同的结构
  • 主键不同(SQL Server中的GUID和VFP中的字符字段组合)
  • 表的同步必须按照一定的顺序进行,以尊重父子关系
  • 在SQL Server端的某些insert上,必须在VFP表中生成并同步一个新的主键
  • 必须进行一系列验证,有时还需要用户提供一些反馈
  • 并非所有记录都需要同步
  • 同步后,需要删除SQL Server上的某些记录
  • 需要考虑从双方删除的记录
  • 需要对VFP数据库进行最少的修改
  • 也许还有其他几点我现在都忘了,但我想你知道我面临的挑战。我现在的猜测是,我需要构建一个定制的同步模块,但在我继续之前,我需要您的输入,以防我忽略了一些选项,并获得一些关于如何实现这一点的提示

    我快速地查看了Microsoft Sync Framework,但是由于我有所有的限制,而且事实上还没有构建VFP客户端(AFAIK),我认为它不会有很大的帮助

    提前感谢您的反馈


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

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

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

    另一种方法是使用SQLServerXMLDiffgrams。对于这种方法,我不是一位专家,但你可以研究一下

    因为我的专长是使用VisualFoxPro,所以我会发现换一种方式更容易,但那只是我自己。你必须使用你为项目所拥有的一整套资源

    VFP通过连接(DSN、ConnectionString)和涉及SQL Passthrough(SQLConnect()、SQLExec()和SQLDisconnect())、游标适配器、远程视图或三者的组合的任何技术来读取和写入SQL Server数据

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

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

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

    瑞克·舒默
    Visual FoxPro MVP

    我鼓励您再看一看MS sync框架。我们需要将偶尔连接的C#clients应用程序与Java/Oracle后端同步。您可以为C#客户端使用同步框架提供程序,并为后端实现自己的KnowledgeSyncProvider自定义子类。这将使你成功了一半,并为你展示了一个很好的申请模式。

    谢谢你的回复。抱歉,我忘了提到笔记本电脑应用程序是我编写的一个C#WinForm应用程序,它使用的是SQLServer2008Express。我非常了解VFP,因为我已经使用了10多年,但我们正试图摆脱它,原因有很多。有时使用另一种语言会使事情变得更容易,有时则不是这样。针对VFP的Sedna发行版为VisualStudio2005提供了一个DDEX提供程序(我认为它可以与2008一起使用,但不要引用我的话)。这可能会帮助您在C代码中更轻松地获取数据。