使用Biml查询带别名列的表:解决SSIS列名重复报错问题
解决SSIS错误输出列名冲突的Biml修改方案
当表中存在ErrorCode、ErrorColumn列时,SSIS错误输出自动生成的同名列会导致冲突报错,只需在Biml生成的SQL查询中为这两个列添加别名即可解决。
修改后的Biml代码如下:
<DirectInput> SELECT <#=tbl.GetColumnList(c => c.Name == "ErrorCode" ? $"a.{c.Name} AS MyErrorCode" : c.Name == "ErrorColumn" ? $"a.{c.Name} AS MyErrorColumn" : $"a.{c.Name}" )#> FROM <#=tbl.SchemaQualifiedName#> a WITH (NOLOCK) ORDER BY <#=tbl.GetColumnList(c => c.IsUsedInPrimaryKey,"a")#> </DirectInput>
修改说明
- 重写
GetColumnList的列处理逻辑:对每个列名做判断,若为ErrorCode或ErrorColumn,则生成带别名的列引用(比如a.ErrorCode AS MyErrorCode);其他列保持原有格式。 - 生成的SQL会自动为冲突列添加别名,避免与SSIS错误输出的默认列名重复。
- ORDER BY部分无需修改,直接使用原表列名即可正常排序。
内容的提问来源于stack exchange,提问作者JoshuaG
相关产品推荐
相关产品推荐

