2

biml によって生成された Merge Join コンポーネントで、以下のエラーが発生します。SSIS でマージ結合コンポーネントをダブルクリックすると、SSIS xml コードで、OutputColumn セクションに SortKeyPosition="1" が追加されていることがわかりました。その後、パッケージを正常に実行できました。この特定のセクションOutputColumnのbimlでSortKeyPositionを設定するにはどうすればよいですか。以下、エラーと私のbimlコード。


[SSIS.Pipeline] 警告: MERGEJOIN_wcs_customer_order_line.Outputs[Output] の IsSorted プロパティは TRUE に設定されていますが、その出力列の SortKeyPositions はすべてゼロに設定されています。[MERGEJOIN_wcs_customer_order_line [130]] エラー: SortKeyPosition 値が 0 の列は無効です。[MERGEJOIN_wcs_customer_order_line [130]] エラー: SortKeyPosition 値が 0 の列は無効です。[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>
4

1 に答える 1