我有两个需要完全相同的 SQL 服务器。同步应该每天自动发生几次。 两台服务器之间没有“直接”连接,因此没有链接的数据库等。(它们在完全不同的机器、网络、域上,之间有防火墙等)你可以使用互联网,比如 Web 服务、FTP...
CopyFromDB 包含很多表,但只有大约 20 个表(只有数据,目前没有模式更改)应该同步到 CopyToDB。每天只有大约一半的表会有新的/更新的行。其他人每年几次。我猜现在每天只有几千行。然而,这在未来可能会增长到每天大约 100,000 行。所以我想可能没有太多数据。
而且(目前可能会改变)数据应该只以一种方式同步,从 CopyFromDB 到 CopyToDB。如果它不会仅仅因为有人在 CopyFromDB 的表上添加了一个额外的列而“中断”,那也很好,但是新的 col 不应该同步到 CopyToDB 自动。 (只有应该同步的列驻留在 CopyToDB 上,可能还有其他不应该同步的列)
它应该执行 Insert、Update 或 Insert。在最坏的情况下,我想它可能完全删除和插入,但我不喜欢这样。 (当然有 FK 等,所以数据必须按正确的顺序插入)
目前只有一个“CopyToDB”,但这可能会增加。 解决方案也应该很简单,不要太复杂。 :-)
我的问题是;实现这一目标的最佳方法是什么?我有以下几个想法。
- CopyToDB 端的 WS,由服务或其他东西从 CopyFromDB 端调用?推送数据,仅推送自上次同步以来的更改。
- CopyToDB 端的 FTP,它采用带有更改的“sql”文件。比如插入/更新/删除。这是由 CopyFromDB 推送到那里的。
- 还有别的吗?内置工具已经可以做到这一点?还是 3d 零件工具?像 Red Gate SQL 数据比较之类的东西,只是自动的。
感谢您的想法和/或回答!
我已经在论坛中搜索了我的问题。但是我只能找到两台服务器之间存在某种“直接”连接或者您进行备份/恢复的问题。但是,如果问题已经得到回答,请原谅,您能告诉我在哪里吗? :)
最佳答案
晚了,但希望其他读者会发现它有用......
不确定您是否已经知道,但您可以通过命令行界面轻松地自动化 SQL 数据比较。它确实需要额外的许可并且需要一定的价格,但绝对有可能。
我已经成功使用了ApexSQL Data Diff对于需要每天同步数据的类似项目。
这两种工具都是一流的。你基本上不会出错……Red Gate 似乎具有更好的可用性,但 Apex 有更多选项并且执行速度稍快。
免责声明:我不隶属于本文中提到的两家供应商中的任何一家,但我确实有机会在我工作的公司中使用这两家供应商。
关于sql-server - 在两个不同的 SQL Server 之间同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3845687/