2014-01-10 67 views
0

我的同步功能需要同步来自多个客户端的SQL服务器数据,修改基于服务器的业务规则中的数据,然后将数据加载到服务器的SQL数据库。同步数据从许多客户机到服务器(SQL)

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

虽然这种方法似乎工作,这将导致数据冲突的同步过程中我很担心冲突管理,或在WCF服务中断。我必须解决的一个想法是快照,然后根据该快照创建同步,如果同步完成删除快照并使用上次成功的导入日期更新服务器数据库。

我特地到同步框架,但已发现多个客户端的几个例子,一个服务器设置。同步的另一个问题是我不希望更改任何客户端数据库表架构。是否有客户端数据库只读的示例?或者在客户端或服务器端修改数据时使用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解决了如何在任何拓扑结构中使用任何协议同步任何商店中的任何类型数据的问题。同步框架的基础是支持任何类型的端点(如设备到桌面,设备到服务器等)之间的数据脱机和协作的能力。

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

+0

我看着的是,这是不是这样一个真正的同步,我需要按摩出来的客户端SQL的数据将其插入到我的服务器之前, SQL。看起来它不是我正在寻找的正确工具? –

+0

Sync框架包含托管API和非托管API,用于构建各种自定义提供程序,以便在框架内实现更高的同步控制。 http://msdn.microsoft.com/en-us/library/bb902847.aspx。最好的祝福。 – Seymour

+0

应用程序的需求之一是1服务器,许多客户关系。这样我可以有3个客户端数据库,每个数据库都包含一个“Person”表,我需要与我的Server表同步。为了跟踪我使用我的WCF模型分配客户端ID的记录。 Sync似乎没有太多的支持?另外一个约束是我只在客户端表上具有只读访问权限。 –

相关问题