ADF增量同步显示成功但目标数据库数据缺失,求技术建议
ADF增量同步数据不一致排查建议
- 先核实复制活动的实际写入行数:不要只看源端读取的900行,去ADF复制活动的监控面板查看「写入行数」指标。如果写入行数显示为70,说明问题出在源端筛选逻辑;如果是900,再聚焦目标端排查。
- 校验水印筛选逻辑的正确性:
- 确认
old watermark和new watermark的区间定义(比如WHERE CreateTime > @old_watermark AND CreateTime <= @new_watermark),避免因区间边界错误漏选数据。 - 将ADF中使用的筛选SQL替换为实际水印值,在源数据库直接执行,查看返回行数是否为900——如果结果就是70,说明水印逻辑本身有误,和ADF无关。
- 确认
- 排查目标端的数据处理规则:
- 若目标使用
Upsert(合并)模式,检查合并匹配条件是否合理。可能存在大量行因匹配到现有数据被更新而非插入,导致新增行数仅70,但目标表总数据量有变化,可通过查询目标表的更新时间或历史记录验证。 - 确认目标表是否存在触发器、唯一约束等:比如唯一键冲突时,ADF错误处理设为「继续执行」会导致冲突行被静默跳过,此时需检查约束规则和ADF的错误处理配置。
- 若目标使用
- 检查水印更新的时机与逻辑:
- 确保存储过程是在复制活动成功完成后再更新水印值,避免提前更新导致的逻辑混乱。同时校验存储过程中
new watermark的计算逻辑(比如是否正确取到源端数据的最大值)。
- 确保存储过程是在复制活动成功完成后再更新水印值,避免提前更新导致的逻辑混乱。同时校验存储过程中
- 关于ADF Bug的验证:
- 在排除上述所有逻辑问题后,再考虑Bug可能性。可以用相同的水印值手动触发复制活动,同时导出ADF的诊断日志,对比源数据与目标数据的差异,定位未写入的行特征。
- 尝试调整复制活动配置(比如切换批量写入/逐行写入模式、调整分区策略),看是否能复现问题;同时确认当前ADF运行版本是否存在已知的复制活动兼容性Bug。
内容的提问来源于stack exchange,提问作者gmp
相关产品推荐
相关产品推荐

