尝试在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;
}
}
答案 0 :(得分:0)
在阅读我自己的帖子后,我发现了哪里出了问题。 我的映射文件上有错误数据(末尾为空白行),导致脚本失败。