0

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

在生产数据库上,有正常的聚集/非聚集索引,每天都在进行读写操作。

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

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

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

我已经尝试在这两个数据库之间进行 SQL 复制,但它不能提供 %100 的数据一致性,并且不能容忍错误,例如在表中添加或删除列或要将新表传递到报告数据库等。

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

你认为在我的情况下最好的方法是什么?

提前致谢。

4

1 回答 1

0

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

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

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

于 2017-03-11T20:50:33.860 回答