将多个客户端的数据同步到服务器 (SQL)

Posted

技术标签:

【中文标题】将多个客户端的数据同步到服务器 (SQL)【英文标题】:Sync Data From Many Clients to Server (SQL) 【发布时间】:2014-01-10 20:38:53 【问题描述】:

我的同步功能需要从多个客户端SQL服务器同步数据,根据服务器上的业务规则修改数据,然后将数据加载到服务器SQL数据库中。

我当前的解决方案是作为计划任务运行的控制台应用程序,它比较记录的创建和修改时间戳,并生成需要更新或从客户端插入到服务器的实体对象。

虽然这种方法似乎有效,但我担心冲突管理,或同步期间 WCF 服务的中断会导致数据冲突。我必须解决的一个想法是快照,然后基于该快照进行同步,如果同步完成,则删除快照并使用上次成功导入日期更新服务器数据库。

我研究了 Sync Framework,但发现很少有多个客户端连接到一个服务器设置的示例。同步的另一个问题是我不希望更改任何客户端数据库表模式。是否有来自客户端数据库的只读示例?还是在客户端或服务器端修改数据时的 SQL-SQL 示例?

这里的参考是我用来生成实体对象列表的客户端代码,这些实体对象需要更新或插入到我的服务器数据库中。

 Public Function GetNew(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetNew
    Dim db As New myEntity.DBContext
    Dim z As List(Of INextGen.person) = (From p In db.people Where p.create_timestamp >= StarTime And p.create_timestamp <= EndTime Order By p.create_timestamp Descending Skip Offset Take ChunkSize).ToList()
    Return z
    db.Dispose()
    db = Nothing
End Function

Public Function GetChanged(ByVal StarTime As DateTime, ByVal EndTime As DateTime, ByVal ChunkSize As Integer, ByVal Offset As Integer) As List(Of myEntity.person) Implements myWCFService.GetChanged
    Dim db As New myEntity.DBContext
    Dim z As List(Of INextGen.person) = (From p In db.people Order By p.modify_timestamp >= StarTime And p.modify_timestamp <= EndTime Order By p.modify_timestamp Descending Skip Offset Take ChunkSize).ToList()
    Return z
    db.Dispose()
    db = Nothing
End Function

【问题讨论】:

【参考方案1】:

您可能需要考虑使用 Microsoft Sync Framework 2.1。

数据库同步提供程序是 Microsoft® Sync Framework 的一部分。 Sync Framework 是一个全面的同步平台,使开发人员能够为应用程序、服务和设备添加同步功能。 Sync Framework 解决了如何使用任何协议在任何拓扑上同步任何存储中的任何类型数据的问题。 Sync Framework 的基础是能够支持任何类型的端点(例如设备到桌面、设备到服务器等)之间的离线和数据协作。

参考:http://msdn.microsoft.com/en-us/library/bb902831.aspxhttp://msdn.microsoft.com/en-us/library/bb726002.aspx

【讨论】:

我调查了一下,这不是真正的同步,因此我需要在将来自客户端 SQL 的数据插入到我的服务器 SQL 之前对其进行处理。它似乎不是我想要做的正确工具? 对于它的价值,同步框架包括托管和非托管 API,用于构建各种自定义提供程序,从而在框架内实现更好的同步控制。 msdn.microsoft.com/en-us/library/bb902847.aspx。最好的问候。 应用程序的需求之一是1个服务器,多个客户端的关系。这样我就可以有 3 个客户端数据库,每个都包含一个“人员”表,我需要与我的服务器表同步。为了跟踪记录,我使用我的 WCF 模型分配了一个客户端 ID。似乎 Sync 对此没有太多支持?一个额外的限制是我对客户端表只有只读访问权限。

以上是关于将多个客户端的数据同步到服务器 (SQL)的主要内容,如果未能解决你的问题,请参考以下文章

关于客户端云同步到web端的问题??

在服务器和多个客户端之间同步数据库更改

rsync+inotify实现实时同步

sql server 2014 alwayson 可用性组 特性

如何保持多个数据库处于同步状态

公司有一台很重要SQL数据库,如何实现数据库实时同步?