C# SSI一个包中的多个脚本组件似乎使用相同的脚本缓冲区
我不熟悉SSIS中的脚本组件,所以如果我的问题标题没有多大意义,我深表歉意 我的任务是从18个csv文件中获取数据(列/记录),对数据库表进行查找,然后将记录写入字符串(这将是Oracle Insert语句),并将每个字符串写入.txt文件 我有一个包,其中包括一个脚本,用于创建/清除.txt文件中的数据,然后是18个数据流任务,这些任务在脚本任务完成后运行。在每个数据流任务中都有一个平面文件源、一个查找和一个脚本组件 脚本组件代码对于每个组件基本上是相同的,其中传递的文件名和列发生了更改:C# SSI一个包中的多个脚本组件似乎使用相同的脚本缓冲区,c#,ssis,C#,Ssis,我不熟悉SSIS中的脚本组件,所以如果我的问题标题没有多大意义,我深表歉意 我的任务是从18个csv文件中获取数据(列/记录),对数据库表进行查找,然后将记录写入字符串(这将是Oracle Insert语句),并将每个字符串写入.txt文件 我有一个包,其中包括一个脚本,用于创建/清除.txt文件中的数据,然后是18个数据流任务,这些任务在脚本任务完成后运行。在每个数据流任务中都有一个平面文件源、一个查找和一个脚本组件 脚本组件代码对于每个组件基本上是相同的,其中传递的文件名和列发生了更改: p
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
string path = @"c:\temp\001_ADVICE.txt";
string insertstatement = ("Insert into MAT.ADVICE VALUES ("
+ Row.MASEQNO + "," + Row.MACREATEDATE + ",'" + Row.MACREATEBY + "','" + Row.MAMACCASEID + "'," + Row.MAVERSION + ",'" + Row.MAJUSTREPAYMETHOD + "','"
+ Row.MAJUSTTERM + "','" + Row.MAJUSTSCHTYPE + "','" + Row.MAJUSTSCHDURATION + "','" + Row.MAJUSTERC + "','" + Row.MAJUSTFEES + "','" + Row.MAJUSTOTHFEATURES
+ "','" + Row.MAJUSTOTHNOTES + "'," + Row.MACHANGEDATE + ",'" + Row.MACHANGEBY + "'," + Row.MASUITLETTERPRINTED + ",'" + Row.MAREVIEWUSER
+ "'," + Row.MAREVIEWDATE + ",'" + Row.MAREVIEWFLAG + "','" + Row.MAREVIEWRESULT + "','" + Row.MAREVIEWNOTE + "','" + Row.MAREVIEWCONF
+ "','" + Row.MASPELLREVIEWUSER + "'," + Row.MASPELLREVIEWDATE + ",'" + Row.MASPELLREVIEWRESULT + "','" + Row.MASPELLREVIEWNOTE
+ "','" + Row.MASPELLREVIEWCONF + "','" + Row.MAJUSTUSER + "," + Row.MAREJDATE + ",'" + Row.MAVALISSUE + "','" + Row.MAADVICESTATUS + "');" + Environment.NewLine);
File.AppendAllText(path, insertstatement);
}
单独而言,所有这些文件都运行良好,但是如果我尝试并行运行,其中一个文件正确完成,而其他文件似乎完成了,但没有写入各自的文件,另外两个文件将因以下错误而失败-或者以串行方式,第一个文件正确运行,下一个文件失败
Index was outside the bounds of the array:
at ScriptMain.Input0_ProcessInputRow(Input0Buffer Row)
at UserComponent.Input0_ProcessInput(Input0Buffer Buffer)
at UserComponent.ProcessInput(Int32 InputID, String InputName, PipelineBuffer Buffer, OutputNameMap OutputMap)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponent.ProcessInput(Int32 InputID, PipelineBuffer buffer)
at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)
我认为问题可能与缓冲区仍然包含以前的脚本组件数据或类似的内容有关
我已经花了几个小时寻找解决方案,所以任何建议都会很好