在 biml 生成的 Merge Join 组件上,我收到以下错误。当双击 SSIS 中的合并连接组件时,我在 SSIS xml 代码中发现它在 OutputColumn 部分中添加了 SortKeyPosition="1"。之后我能够成功执行包。如何在 biml 中为此特定部分 OutputColumn 设置 SortKeyPosition。下面是错误和我的 biml 代码。
[SSIS.Pipeline] 警告:MERGEJOIN_wcs_customer_order_line.Outputs[Output] 的 IsSorted 属性设置为 TRUE,但其所有输出列的 SortKeyPositions 都设置为零。[MERGEJOIN_wcs_customer_order_line [130]] 错误:SortKeyPosition 值为 0 的列无效。应该是 1。 [MERGEJOIN_wcs_customer_order_line [130]] 错误:SortKeyPosition 值为 0 的列无效。应该是 2。 [SSIS.Pipeline] 错误:“MERGEJOIN_wcs_customer_order_line”验证失败并返回验证状态“VS_NEEDSNEWMETADATA”。
<MergeJoin Name="MERGEJOIN_<#=table.Name#>" JoinType="LeftOuterJoin">
<LeftInputPath OutputPathName="SORT_<#=table.Name#>.Output">
<Columns>
<#
indexSortKey=1;
foreach(var column in table.Columns) {
if (column.GetTag("ColumnRole")=="BK")
{
#>
<Column SourceColumn="DC_<#=column.Name#>" SortKeyPosition="<#=indexSortKey.ToString()#>" TargetColumn="STG_<#=column.Name#>" />
<#
indexSortKey++;
}
else
{#>
<Column SourceColumn="DC_<#=column.Name#>" TargetColumn="STG_<#=column.Name#>"/>
<#}
} #>
</Columns>
</LeftInputPath>
<RightInputPath OutputPathName="OLEDBD_ODS_<#=table.Name#>.Output">
<Columns>
<#
indexSortKey=1;
foreach(var column in table.Columns) {
if (column.GetTag("ColumnRole")=="BK")
{#>
<Column SourceColumn="<#=column.Name#>" SortKeyPosition="<#=indexSortKey.ToString()#>" TargetColumn="ODS_<#=column.Name#>" />
<#
indexSortKey++;
}
else
{#>
<Column SourceColumn="<#=column.Name#>" TargetColumn="ODS_<#=column.Name#>"/>
<#}
} #>
</Columns>
</RightInputPath>
<JoinKeys>
<#foreach(var column in table.Columns.Where(i=> i.GetTag("ColumnRole")=="BK" )) { #>
<JoinKey LeftColumn="<#=column.Name#>" RightColumn="<#=column.Name#>"></JoinKey>
<# } #>
</JoinKeys>
</MergeJoin>