这是一个非常常见的问题,几乎每个对应用程序和 BI 团队都负有责任的 DBA 都会面临这个问题。考虑以下:
- 您有两个 T-SQL服务器:生产服务器和报告服务器。
- 每天早上 6 点,您想要将新数据从生产复制到报告。在此过程中可能会进行过滤器或其他一些 ETL。
- 您不想复制超出需要的数据,因此理想情况下您需要
MERGE
某种类型的数据。
这个问题的惯用解决方案是什么?
在我自己的研究中,我发现:
- 链接服务器 - 它们在执行更新插入时非常慢,并且当只需要几行时,很容易通过网络发送整个表。
- SSIS - 非常难以移植,非常旧,并且迫使您跳过额外的障碍,例如在两台服务器上放置临时表。
我希望有更好的东西。
根据您提供的信息,如果您对云友好,我建议您研究Azure 数据工厂。它将允许您仅将所需的行从一台服务器发送到另一台服务器(假设您有适当的逻辑,允许您跟踪源中的更改)与 SSIS 类似,但更现代一点,并允许您构建 ETL 管道。
正如另一位用户提到的,事务复制也可能有效。您可以选择要复制的列/字段。
您可以考虑但可能有点过分的其他选项是:日志传送和始终在可用性组上,这两个选项都是复制而不是 ETL,但允许您在目标服务器上进行所有转换。(奖励,如果生产突然下降,您有一个备份数据库)