使用Azure Data Factory将Snowflake别名列插入Azure SQL遇故障求助
解决Azure Data Factory插入Azure SQL时的列映射报错问题
问题核心
Snowflake返回的列名大小写与Azure SQL目标列不匹配,导致ADF无法识别对应列,进而出现Column NAME cannot found in the Physical data base错误。
具体解决步骤
1. 修正Snowflake查询的列名大小写
Snowflake默认会将未用双引号包裹的别名转为全大写,你的查询as Name实际返回的列名是NAME,和Azure SQL的Name不匹配。修改查询,用双引号强制保留别名的大小写:
select a.first_name as "Name", b.emp_id as "Id" from table1 a join table2 b on a.id=b.empId
2. 刷新ADF源数据集架构
在ADF的Snowflake源数据集中,点击刷新架构,确保能读取到Name和Id两个列。这一步能让ADF获取到最新的源列信息,避免因架构缓存导致的列无法识别问题。
3. 配置完整的列映射
进入复制活动的映射标签页,手动添加Id列的映射:
- 源列选择Snowflake返回的
Id - 目标列选择Azure SQL的
Id
确认Name列的映射也正确对应,保存配置后重新运行管道。
4. 验证Azure SQL表结构与排序规则
- 检查目标表列名是否正确,无拼写错误:
SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '你的目标表名';
- 若数据库启用了大小写敏感排序规则(如
SQL_Latin1_General_CP1_CS_AS),需确保源列和目标列大小写完全一致。可以通过以下SQL查看数据库排序规则:
SELECT collation_name FROM sys.databases WHERE name = '你的数据库名';
内容的提问来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

