如何在线同步离线数据库

时间:2011-06-01 11:14:35

标签: sql sql-server database database-design synchronization

我有一个 Web应用程序,它为我的客户提供了一些信息。我有另一个版本( windows exactly work same as web application

这是因为Web连接可能会丢失几个小时,此时用户将使用该应用程序。

我想知道如何同步这些SQL Server数据库。

请注意,网络应用程序正在使用3 different citiesall of them have a windows based application too。我该怎么办?

NoteL windows verision正是安装在3个不同城市的本地Web服务器上的Web应用程序,用户可以通过LAN访问它们。

2 个答案:

答案 0 :(得分:3)

来自/到网络/窗口的数据中的所有更新都来自Windows应用程序。但问题是,当没有互联网连接时,Windows应用程序将运行。

因此,您必须使用Windows服务,该服务将调用Web服务以进行本地和远程数据库更新。窗口可以每x分钟唤醒一次,并更新远程和本地数据库。

网络服务将有两种方法:

GetData(DateTime getRecordsFromThisDate) - Windows service should call this on regular intervals and update the local database.

UploadData(dataRows/collection) -  Windows service should call this on regular intervals and update the remote database.

数据库中的每条记录都有一个时间戳。对于本地更新,获取最大时间戳并将其作为参数发送到GetData()。 Web服务将返回在此时间之后创建的记录。

对于上传数据,您必须存储上次运行成功上传操作的时间。在此时间之后获取记录(插入和更新)并将它们发送到UploadData()。

答案 1 :(得分:1)

您的选择可能是使用数据库备份进行同步(可能非常慢且不切实际)。之后,您必须使用ETL。选择你最喜欢的工具。您可以使用sql server CDC,或者我建议使用更改跟踪来识别您的更改并加载这些更改。然后使用merge来同步您的更改。当然,这些解决方案将要求您设置链接服务器或使用第三方临时保存dml更改。

http://technet.microsoft.com/en-us/library/bb510625.aspx

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

我以为我会添加一个非微软解决方案http://www.red-gate.com/products/sql-development/sql-data-compare/它不是免费的,而是完全符合您的需要。