在SQL Azure和多个本地SQL服务器数据库之间实现数据同步的最佳方法是什么?

时间:2013-09-11 18:43:12

标签: sql sql-server azure-sql-database

我有一个如下所述的场景,我需要实现最佳的数据同步方法。

  1. 我有一个集中的SQL Azure数据库(主数据库)
  2. 本地SQL Server数据库大约有20个(将来会增加)。这些数据库不一定总是连接到互联网。
  3. 所有主数据库和本地数据库都具有相同的模式/表结构。
  4. 我想在所有本地数据库与SQL Azure之间进行双向数据同步,反之亦然。
  5. 数据同步频率将是一天一次。
  6. 每个本地数据库大小都合理(不要太大也不能太小)。
  7. 我探讨了以下这些选项:

    1. SQL Azure数据同步
    2. Microsoft Sync Framework
    3. SQL Server 2008更改数据捕获
    4. SQL Server更改跟踪
    5. 我想知道实现这一目标的最佳方法。

3 个答案:

答案 0 :(得分:3)

我一直在使用SQl azure数据同步,Microsift同步框架和Sql server更改跟踪。我不知道改变数据捕获。

Sql azure数据同步。

这是实现数据同步的最简单方法。这是一个配置问题。但不幸的是仍然在预览中,微软还没有推荐用于生产。我们一直在使用同步20个不同地理位置的数据库,到目前为止效果很好。无需编码。但是,您可能需要在将来使用此服务时付费。目前它是免费的。

Microsoft Sync Framework

Microsoft同步框架适用于开发人员。开发人员可以将Sync框架用作API并开发同步应用程序。 Sql azure数据同步在内部使用同步框架。要使用azure实现数据同步,您需要使用WCF实现N层架构。您需要在Azure网站或虚拟机中托管您的WCF服务。需要相当长的开发时间,请参阅以下链接以获取Microsoft的示例实现。开发完成后,您可以轻松配置和使用同步多个数据库。 Database Sync:SQL Server and SQL Express N-Tier with WCF

SQL Server更改跟踪

您需要手动对每个表进行数据同步编程,并且需要在每个sql server之间设置链接服务器。要使用azure数据库设置链接服务器,您需要打开一些特定的端口。

答案 1 :(得分:2)

列表中的项目#3和#4并不是真正的同步解决方案,只是其中的一部分。 SQL CDC和SQL CT都允许您跟踪更改。您必须输入额外的代码来获取这些更改并应用/同步到另一个数据库。

如果您不想编写代码,SQL数据同步服务将是您的最佳选择。请注意,直到今天(尽管它预览了这么长时间),数据同步仍处于预览模式。

如果您发现编写代码,同步Fx也是一个不错的选择(SQL Data Sync内部使用Sync Framework)。

答案 2 :(得分:0)

Azure SQL数据同步现已达到一般可用性(GA),如以下Microsoft文章所示。

Announcing the general availability of Azure SQL Data Sync