在从两个不同环境同步增量时,在源表中删除记录时删除汇表中的记录

问题描述 投票:0回答:0

我创建了一个管道,将数据从 SQL Server A 同步到 SQL Server B。它们都在本地运行,但在不同的服务器上。由于我正在同步的一些表中有相当多的数据,所以我想同步增量数据。

在源表中添加或更新数据时,这可以正常工作。当源中的数据被删除时,这就成了一个问题……因为我的管道不“识别删除操作,所以只插入或更新我的接收器表中的记录。

我怎样才能解决这样的问题,或者最友好的解决方法是什么?

下面是我管道中活动的屏幕截图和解释:

从右到左:

存储过程: 在日志表中插入一条记录。此日志表包含已同步表的表名和此特定表的 LastSyncRunTimeSpan。 tableName 是硬编码的,LastSyncRunTimeSpan 是从(源表的)最后提取的最后更新查找的输出中收集的。

复制数据: 复制自上次管道运行以来在源中更改的数据。

查找(在源表上): 从我的接收器表中的数据中检索最后更改的记录。

查找(在最后一个水槽日志表上): 检索此特定表的最后一次同步运行。

在我以增量方式配置我的管道之前,我在添加新记录之前截断了目标表。由于插入所有记录非常耗时,因此我将其更改为这种增量流程。

我看到一些例子,他们删除了与源表相比在汇表中找不到的记录。但这是不可能的,因为两个表都在不同的服务器上,我想尽量减少接收器服务器上的 CPU 或 RAM 使用率。

除此之外,我想防止我必须创建一个临时表,该临时表在同步时每次都会被截断。除了成本之外,它主要带来了相当耗时的活动,因为我正在同步的大多数表中都有大约 2500000 多条记录。

sql azure-data-factory etl azure-synapse data-transfer
© www.soinside.com 2019 - 2024. All rights reserved.