3

我有两个需要相同的 SQL 服务器。同步应该每天自动发生几次。两台服务器之间没有“直接”连接,因此没有链接的数据库等。(它们位于完全不同的机器、网络、域上,之间有防火墙等)你可以使用互联网,比如 Web 服务、FTP ......

CopyFromDB 包含很多表,但只有大约 20 个表(仅数据,目前没有模式更改)应该同步到 CopyToDB。每天只有大约一半的表会有新的/更新的行。其他的每年几次。我猜现在每天只有几千行。然而,这在未来可能会增长到每天大约 100,000 行。所以我猜可能没有太多数据。

而且(目前,可能会改变)数据只能以一种方式同步,从 CopyFromDB 到 CopyToDB。如果它不会仅仅因为有人在 CopyFromDB 上的表上添加了一个额外的列而“中断”,那也很好,但是新的 col 不应该自动同步到 CopyToDB。(只有应该同步的列驻留在 CopyToDB 上,可能还有其他不应该同步的列)

它应该执行插入、更新或插入。在最坏的情况下,我想它可以完全删除和插入,但我不喜欢这样。(当然有 FK 等,所以数据必须以正确的顺序插入)

目前只有一个“CopyToDB”,但这可能会增加。解决方案也应该很简单,不太复杂。:-)

我的问题是;实现这一目标的最佳方法是什么?我在下面有几个想法。

  • CopyToDB 端的 WS,由服务或其他东西从 CopyFromDB 端调用?推送数据,仅推送自上次同步以来的更改。
  • CopyToDB 端的 FTP 采用带有更改的“sql”文件。像插入/更新/删除。这是由 CopyFromDB 推送的。
  • 还有什么?已经这样做的内置工具?还是 3d 零件工具?像 Red Gate SQL Data Compare 之类的东西,只能自动进行。

感谢您的想法和/或回答!


我已经在论坛中搜索了我的问题。但是我只能找到两台服务器之间存在某种“直接”连接或者您进行备份/恢复的问题。但是如果问题已经回答了,请原谅,请告诉我在哪里?:)

4

5 回答 5

3

迟到了,但希望其他读者会发现它很有用……

不确定您是否已经知道,但您可以通过命令行界面轻松自动化 SQL 数据比较。它确实需要额外的许可证并附带价格,但这绝对是可能的。

我已经成功地将ApexSQL Data Diff用于需要日常数据同步的类似项目。

这两种工具都是一流的。任何基本都不会出错……Red Gate 似乎有更好的可用性,但 Apex 有更多选择并且执行速度稍快。

免责声明:我不隶属于本文中提到的两个供应商中的任何一个,但我确实有机会在我工作的公司中使用这两个供应商。

于 2013-08-19T14:05:44.163 回答
1

如果复制是单向的,请使用日志传送。主服务器可以将日志备份放在任何 UNC 路径上,然后您可以使用任何文件同步工具来管理将日志从一台服务器获取到另一台服务器。订阅者只是自动恢复它在其本地文件夹中找到的任何事务日志备份。

订阅者将是只读的,但这正是您想要的 - 否则,如果有人可以更新订阅者的记录,您将陷入痛苦的世界。

于 2010-10-18T01:41:29.687 回答
1

为它编写 Web 服务,并使用 TableDiff 等实用程序来处理数据,OpenDBDiff 来处理模式。没有其他更简单的方法。

于 2010-10-14T14:03:30.223 回答
0

如果您有权访问 Visual Studio 数据库项目,则可以设置可以生成 T-SQL 差异的构建任务(如果您使用的是构建系统)。然后,将差异发送过来并应用它们,但这是一项更容易的任务(WCF、电子邮件等)。

唯一的技巧是确保您的开发/修改数据库和目标数据库在您开始此过程时具有相同的架构。

但是,如果您可以使用复制技术,我强烈建议您这样做。虽然推出自己的解决方案是可能的,但它的管理在未来将是一场噩梦。现在让它工作并不难。确保它在接下来的 XX 年内继续工作。

埃里克

于 2010-10-22T18:51:12.967 回答
0

您可以将 FTP 传递与 SQL Server 复制一起使用:如何:通过 FTP 传递快照(复制 Transact-SQL 编程)

于 2010-10-02T12:28:24.843 回答