Azure Data Factory含TIMESTAMP列的表执行UPSERT报错如何解决?
Azure Data Factory TIMESTAMP列更新报错解决方案
针对ADF操作含TIMESTAMP(ROWVERSION)列的表时出现的Cannot update a timestamp column错误,可通过以下几种方式解决:
调整写操作模式:若使用Upsert模式,ADF可能会默认将TIMESTAMP列纳入比较逻辑。改为仅Insert或仅Update模式,或在Upsert配置中明确指定业务主键列,排除TIMESTAMP列作为匹配或更新列。
使用自定义SQL语句:放弃ADF自动列映射,直接编写SQL执行写入操作,仅包含需要更新/插入的列。例如更新语句:
UPDATE target_table SET column1 = @column1, column2 = @column2 WHERE primary_key = @primary_key
通过这种方式完全规避对TIMESTAMP列的操作,由SQL Server自动维护该列值。
源端过滤TIMESTAMP列:在源数据集的查询中显式指定所需列,排除TIMESTAMP列。例如使用
SELECT id, column1, column2 FROM source_table替代全表选择,确保ADF处理的数据集不包含TIMESTAMP列。检查Sink列映射配置:禁用自动映射,手动指定源与目标的列映射关系,确保TIMESTAMP列未被包含在映射列表中。同时确认Sink的写设置中未开启强制包含所有列的选项。
内容的提问来源于stack exchange,提问作者Thomas L.
相关产品推荐
相关产品推荐

