Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL到SQL数据复制_Sql Server_Replication_Sql Server 2016_Log Shipping - Fatal编程技术网

Sql server SQL到SQL数据复制

Sql server SQL到SQL数据复制,sql-server,replication,sql-server-2016,log-shipping,Sql Server,Replication,Sql Server 2016,Log Shipping,我在一台服务器上有一个300 GB MSSQL 2016生产数据库,我需要在另一台服务器上复制该数据库,以便进行报告 在生产数据库上,存在正常的聚集/非聚集索引,并且每天都会执行读写操作 在报告方面,我将使用相同的数据库表和列存储索引,因此我将有机会比实时数据库更快地获得报告查询结果 这个想法很好,直到我找不到合适的方法来复制这两个数据库并使它们保持同步(比如最大5个MNT) 我尝试了一些日志传送拓扑,但效果不好 我已经尝试过在这两个数据库之间进行SQL复制,但它不能提供%100数据一致性,并且

我在一台服务器上有一个300 GB MSSQL 2016生产数据库,我需要在另一台服务器上复制该数据库,以便进行报告

在生产数据库上,存在正常的聚集/非聚集索引,并且每天都会执行读写操作

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

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

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

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

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

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


提前谢谢

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

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

我建议使用一种可用的镜像技术(log shipping,AG with a read-only mirror,等等),并保持数据库完全相同