Azure Data Factory Copy Activity未加载数据却未触发失败问题咨询
问题根因
该异常是列级Schema不匹配的静默失败问题,你关闭的容错配置仅作用于行级数据错误,ADF默认不会将源目标列数、列结构不匹配判定为复制活动的致命错误,同时SQL数据库批量写入接口会默认忽略不匹配的行数据,最终出现活动提示成功但无数据写入的情况。
解决步骤
- 进入复制活动
映射页签,关闭允许架构漂移选项,将自动映射改为手动映射,明确绑定源端与目标端的对应列,未匹配的源列会直接触发活动运行报错 - 进入SQL目标配置页,将
写入批次大小调整为1测试,避免大批次写入时SQL端静默忽略错误行 - 在复制活动前新增Schema校验环节:分别拉取源CSV文件的Schema与目标SQL表的Schema做列数、列名、数据类型一致性校验,校验不通过直接终止管道并输出错误信息
- 进入复制活动
设置页签,开启会话日志,日志级别调整为详细,指定ADLS路径存储日志,列匹配相关的错误信息会被完整记录在会话日志中
原问题参考
概述
我在管道中配置了Data Factory copy activity,用于将Azure Data Lake中存储的.csv格式表格数据迁移到SQL数据库的landing schema中。
原则上每次数据加载都会刷新表定义,理论上不会出现错误,但我需要在表已存在、源文件无法映射到目标端的场景下记录错误日志。
按照预期,当源列与目标表定义不匹配时该活动应该执行失败,但实际出现了数据未加载到数据库,活动却提示执行成功的异常情况。
测试步骤
- 在源文件中新增一列
- 不更新目标数据库的表定义
- 清空目标表内容
- 关闭容错设置
- 删除所有copy activity日志(处于开发环境初期,该操作无影响)
- 运行管道
- 查看Data Factory管道输出,显示100%成功
- 查询目标表,表内无数据
- 查看所有日志文件,仅存在每次copy activity调用的表头,无相关错误信息
Copy activity配置

内容的提问来源于stack exchange,提问作者GettingItDone
相关产品推荐
相关产品推荐

