SQL 到 SQL 数据复制

SQL to SQL data replication

我在服务器上有一个 300 GB 的 MSSQL 2016 生产数据库,我需要在另一台服务器上制作此数据库的副本以用于报告目的。

在生产数据库上,有正常的clustered/non-clustered个索引,每天都在进行读写操作。

在报告方面,我将拥有与列存储索引相同的数据库 table,因此我将有机会比实时数据库更快地获得报告查询结果。

这个想法很好,直到我找不到合适的方法来复制这 2 个数据库并使它们保持同步(例如最大 5 mnts 容差)

我尝试了一些日志传送拓扑,但效果不佳。

我已经尝试 SQL 在这两个数据库之间进行复制,但它没有提供 %100 的数据一致性,并且不能容忍错误,例如在 table 中添加或删除列时或您想向报告数据库等提供新的 table

PS。我会考虑同步我的生产数据库的一个副本(除了报告数据库)(就像日志传送只读辅助)。所以我准备为辅助复制数据库(1-prod、1-replica、1-reporting)创建另一个服务器(总共 3 个服务器),如果我能找到合适的拓扑的话。

你认为对我来说最好的方法是什么?

提前致谢。

如果您希望复制 DDL 更改,您将需要使用某种日志传送或镜像——这意味着您将需要在读取时使用相同的数据库(下至页面级别) - 仅副本。您将不能有不同的索引定义。

如果您希望索引定义不同,那么您将需要想出一种复制数据的方法——手动脚本可能是最好的选择,但跟踪记录是什么很棘手生产数据库中的新的、更新的和特别是删除的(添加 rowversion 列并确保所有表上的主键是否有用)。您还必须手动将 DDL 更改从生产数据库克隆到只读副本;并更新您的数据复制脚本以匹配。

我建议使用其中一种可用的镜像技术(日志传送、带有只读镜像的 AG 等)并保持数据库完全相同。