我如何同步MS SQL Server数据库?

我如何同步MS SQL Server数据库? 有没有工具,最好是开源的?

对于预定的和临时的数据库同步,您可以使用ApexSQL Diff (用于对象模式同步)和ApexSQL Data Diff (用于logging同步)

它们不能用于实时同步。 海事组织,最好是实时使用数据库镜像

正如其他人所说,SQL Server 2008中有许多内置的方法可以使两台服务器实时或按计划同步。

有几点你应该考虑到:

  • 两台服务器有多“远”(即它们之间有多less带宽和延迟)?
  • 两个数据库有多大?
  • 数据多久变化一次?
  • 数据实际上是变化的,还是只有新的数据添加到现有的?

根据答案,您可以select最适合您需要的方法; 除了已经描述的那些(复制和镜像)之外,记住你也可以做一些其他的事情:

  • 运输
  • 使用Integration Services导出/导入数据。
  • 备份/恢复。
  • 分离,做一个物理副本,附上。

你看过内置的镜像function吗? Technet 在这里有一个简要的描述。 主服务器将其事务日志logging发送到辅助服务器,辅助服务器然后重放事务日志。

镜像可以同步或asynchronous设置。

如果我理解你的话,你希望从本地机器上的Web服务器获得数据库的副本。 Web服务器上的数据库更改应定期复制到本地服务器。

我相信你可以通过复制来实现,但是你至less需要在你的Web服务器上安装一个SQL Server的Workgroup版本。

如果数据库不大或不经常更改,则可以使用Snapshot复制。 SQL Server将定期对数据库进行快照并将其复制到本地服务器。

对于更大或经常更改的数据库,我build议您使用合并复制。 这是更less的时间和资源密集型。

您可以在Books Online中获得有关复制的更多信息。 还请看数据移动模式 。

我有一篇博客文章,介绍如何为非域服务器设置数据库镜像。 但是,这并不允许您同时启用两个SQL Server,因此您需要执行某种forms的复制。 根据数据的访问方式,如果全部读取,那么它不是太糟糕,如果它在一台服务器上读取,在另一台服务器上读取/写入,也不会太坏,如果是写入/写入,那么你将要一些“有趣”的时代。