如何从不同的位置同步两个sql-server表?

时间:2012-03-19 08:01:16

标签: .net sql-server vb6

我在HQ有一个数据库,在分支有另一个数据库。两个数据库都是相同的,所有模式都是相同的。它可能不止一个分支。

例如,分支有一个带有名为Sales的表的本地数据库,所有事务都将插入到表中。每天晚上,当商店关闭时,分支机构的所有销售信息将与HQ数据库同步。只会插入或更新不在HQ数据库中的记录。

如何在一个非常有效的方法中做到这一点,小而轻,在连接断开时重新连接,因为互联网带宽有限且不断下降。

如何使用最新产品和价格从总部同步到所有分支机构?

我应该写一个网络服务吗?

谢谢。

4 个答案:

答案 0 :(得分:3)

我建议使用SQL Server复制。您不必编写任何代码。

http://msdn.microsoft.com/en-us/library/ms151198.aspx

  

复制是一组用于复制和分发数据的技术   和数据库对象从一个数据库到另一个数据库然后   在数据库之间同步以保持一致性。运用   复制,您可以将数据分发到不同的位置和   通过本地和广域网远程或移动用户拨号   连接,无线连接和互联网。

<强>更新

由于db已部署到客户端,因此无法进行复制,因为我将使用Sync Framework。

http://msdn.microsoft.com/en-us/sync/bb821992

  

Microsoft Sync Framework是一个全面的同步平台   为应用程序,服务和协作实现协作和离线   设备。开发人员可以构建同步生态系统   使用任何协议集成任何应用程序,任何商店的任何数据   通过任何网络。 Sync Framework提供了各种技术和工具   启用漫游,共享和离线数据。

答案 1 :(得分:0)

我来这里说“使用合并复制”,因为您所描述的内容或多或少是您实施它时的教科书示例。

答案 2 :(得分:0)

这两个位置是否位于同一本地网络中?你是否要求表格偶尔同步一次(例如每晚而不是实时)?

如果答案都是肯定的,那么您可以使用sql server的tablediff.exe命令行实用程序。它可以逐表,一次性比较两个表并自动生成sql,以便将dest同步到源。

它周围还有一个GUI包装器http://code.google.com/p/sqltablediff/,这使得工作变得更加容易。

答案 3 :(得分:0)

我过去使用 xSQL Software ,对结果非常满意。您可以在任一方向甚至两个方向上复制架构和/或数据。