将客户端数据库与中央数据库同步

时间:2010-05-10 12:01:20

标签: c# .net database sql-server-2005 synchronization

我需要更新现有数据或从客户端数据库插入新数据,例如DB1到中央数据库,比如说DB2都拥有相同的模式,两个数据库都驻留在同一台机器上。更新不是双向的。我只是希望将更改从客户端(DB1)反映到服务器(DB2)。

客户端数据库(DB1)只是备份数据库(由mdf和ldf文件组成的完整数据库备份),它附加到存在中央数据库(DB2)的同一服务器上。一旦将备份数据库(DB1)连接到服务器,我就不会对其进行任何更改。备份数据库(DB1)已经包含已修改的数据,我想将其更新到中央数据库(DB2)。那么我如何以编程方式使用C#.NET?。您可以提供任何示例代码吗?

我尝试使用推送订阅进行事务复制,而不发送快照。问题是我想在第一次注射时将修改后的数据从DB1更新到中央数据库DB2,但事务复制不允许我这样做。它不会发送任何已存在于DB1中的已修改数据。因此,当您尝试不使用快照发送时,DB1中存在的初始数据不会受到影响。备份数据库(DB1)在复制之前已经具有已修改的数据。我如何解决这个问题,因为我在设置复制后不会将任何新数据或修改数据插入备份数据库(DB1)。

谢谢和问候, 帕

3 个答案:

答案 0 :(得分:0)

要实现此目的,您有以下选择:

1。)使用SQL Server事务复制。将DB1作为Publisher,将DB2作为订阅者,并进行基于Pull或Push的订阅。 DB1中的所有更改都将简单地反映到中央。如果我们在Central中对同一个元组进行任何更改,它们将被DB1更改覆盖。

优点:易于实施和可靠 缺点:定制很少

2.。)使用Microsoft Sync Framework SQLDataBaseProvider。 优点:非常灵活 缺点:我听过有关它的坏事但从未尝试过。

3。)自定义实现:由于您需要跟踪DB1上的更改,因此这有点难。一个选项可以是读取Transactional Replication在内部执行的事务日志,或者其他选项是使用触发器并构建更改知识。然后你需要编写一个库或例程来获取知识,然后它将应用于中心。

编辑: 对于备份和恢复数据库的进度:

http://www.mssqltips.com/tip.asp?tip=1849

答案 1 :(得分:0)

Microsoft Sync框架是最佳解决方案,特别是如果您使用快速版本(在这种情况下复制将无效)。

如果在sql server 2008中使用SQL Server更改跟踪,则同步框架非常简单。您也可以定义同步模式(双向,仅上载,仅下载),并定义当有冲突(例如约束被违反等)。

是的 - 只是谷歌举个例子,有几个关于这个主题的直接漫步,包括同伴同步(可能是你需要的)和客户端 - 服务器同步(客户端应该是sql server compact edition)

答案 2 :(得分:0)

您可能还想探索SQL Server的merge replication功能。它是一种复制类型,旨在允许卫星数据库自动将其结果发回中央存储库。

相关问题