You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Data Factory复制活动报错:无法插入NULL到RowID列,求定位操作源

ADF Copy Activity 插入NULL到RowID列的排查方案

1. 先锁定报错的目标表归属

报错信息里明确指出了报错表:MyDB.dbo.MyData,直接查询这个表所属的数据库(Stage/Master),就能确定是哪个Copy分支的操作出问题,不用盲目排查两个分支。

2. 检查对应Copy Activity的Sink配置

  • 映射规则:打开报错分支的Copy Activity,进入Mapping选项卡,查看RowID列的映射状态:
    • 如果RowID列被映射了,但源XML没有对应字段,ADF会默认传入NULL,直接导致报错;
    • 如果RowID列没出现在映射列表里,ADF会尝试向目标表的该列插入NULL(因为目标表存在这个列但未被映射赋值)。
  • Sink高级设置:如果目标表的RowID是自增IDENTITY列,需确认是否在Sink的Advanced选项中开启了Enable identity insert,并指定了RowID列名;若未开启,ADF会试图插入NULL触发报错。
  • 预复制脚本:检查Sink配置中的Pre-copy script,确认脚本里有没有手动向RowID列插入NULL的逻辑(比如清空表后插入测试数据的语句)。

3. 验证目标表RowID的约束规则

确认MyDB.dbo.MyData的RowID列是否为自增列:

  • 若为自增列:确保目标表的IDENTITY属性正常启用,且Copy Activity的映射中不要包含RowID列(让数据库自动生成值);
  • 若需手动赋值:在Copy Activity的映射里,给RowID列添加生成表达式,比如用@guid()生成唯一标识,或者通过Lookup活动获取序列值赋值。

4. 拆分分支单独测试

将指向Stage和Master库的两个Copy Activity分开单独运行,观察哪个分支触发515错误,直接定位问题分支。

5. 查看ADF运行日志的细节

在ADF管道监控页面,点开报错的Copy Activity,查看:

  • Input部分:明确显示Sink对应的数据集信息,确认目标库;
  • Output部分:查看ADF生成的INSERT执行语句,确认是否包含RowID列且值为NULL,进一步验证映射问题。

内容的提问来源于stack exchange,提问作者TankTop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 04:17:20