SSIS脚本组件错误:索引超出了数组的范围

时间:2018-11-20 20:20:34

标签: c# ssis

尝试在SSIS中运行脚本时出现以下错误 索引超出了数组的范围。

在ScriptMain.PreExecute()    在Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PreExecute()

该脚本过去运行良好。最近,我更改了输入的元数据和数据(输入本身正在工作),因此可能是导致问题的原因。但是我不知道到底怎么了。

这是我的剧本

public class ScriptMain : UserComponent

{

private Dictionary<string, string> tsgMapping;

private Dictionary<string, string> fgMapping;
public override void PreExecute()
{
    base.PreExecute();

    //load mapping
    tsgMapping = new Dictionary<string, string>();
    fgMapping = new Dictionary<string, string>();

    var mappingFilePath = Connections.Connection.ConnectionString;
    using (var reader = new StreamReader(mappingFilePath))
    {
        reader.ReadLine(); //skip first line of headers
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            var splitLine = line.Split('|');

            tsgMapping.Add(splitLine[0], splitLine[1]);
            fgMapping.Add(splitLine[0], splitLine[2]);
        }
    }
}


public override void PostExecute()
{
    base.PostExecute();
    /*
     * Add your code here
     */
}


public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    if (!tsgMapping.TryGetValue(Row.TransactionName, out var tsg))
    {
        tsg = "Ask CPB";
    }

    Row.TSGRaw = tsg;

    if (!fgMapping.TryGetValue(Row.TransactionName, out var fg))
    {
        fg = "Ask CPB";
    }

    Row.FGRaw = fg;

}

}

1 个答案:

答案 0 :(得分:0)

在阅读我自己的帖子后,我发现了哪里出了问题。 我的映射文件上有错误数据(末尾为空白行),导致脚本失败。