1

在 SSIS 包中,“脚本组件”由于以下异常而失败。此异常仅有时会发生。该脚本组件包含 Try/Catch,但仍然失败。此异常的原因可能是什么?

错误信息


5246793 User:OnError Package1 2015-01-16 03:40:45.000 2015-01-16 03:40:45.000 00:00:00 System.IndexOutOfRangeException: Index was outside the bounds of the array.

   at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)

   at Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer buffer)

   at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100 wrapper, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket)

5246800 OnError Package1 2015-01-16 03:40:45.000 2015-01-16 03:40:45.000 00:00:00 SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Script Component" (657) failed with error code 0x80131508 while processing input

input "Input 0" (666). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.
4

6 回答 6

2

复制是我的问题。就我而言,我有超过 50 个输出列,因此重新创建脚本组件不是一个好的选择。我最终在 VSCODE 中打开了 DTSX 文件(在右侧滚动条上有很好的突出显示)。每个组件的 GUID/程序集名称被阻止为每个组件出现 18 次。因此,对于副本,我有 36 次出现相同的 GUID。它们被充分分开以识别每个组件,并且刚刚创建了一个新的 guid 并为其中一个替换了 18 个,错误得到了解决。希望这可以帮助某人。

于 2019-06-05T14:17:27.590 回答
1

该错误与脚本任务的输入列有关,您可以在脚本转换编辑器的第二个选项卡上找到该输入列。也许它期望一个不再存在的列,或者您正在使用脚本中尚未选择的列。

如果您仍然无法确定问题,请尝试刷新组件的元数据,或将其删除并重新创建。

于 2015-01-23T09:17:32.483 回答
1

在某些 ETL 数据流中存在相同的问题:同一脚本任务的多个实例有时工作,有时不工作,在管道缓冲区上显示相同的“索引越界”错误。通过删除从现有实例复制的实例并从头开始生成新任务来解决,只需复制脚本本身即可。也许在复制这些内容时会出现问题,越过缓冲区?希望能帮助到你...

于 2018-07-30T12:59:54.610 回答
1

@Oliver 的回答在这里最接近真相。这一步确实可以解决问题,我也经历过。对于我们心爱的 Stack Overflow 来说,这是典型的,正确答案的评分为零。

当脚本组件尝试访问 Dts.Variables 集合时,您也可能会间歇性地从 SSIS 获取此信息,但未在脚本的“ReadOnlyVariables”或“ReadWriteVariables”参数中选择该变量。检查使用的索引是否正确且格式正确,例如

用户::变量名

于 2019-03-01T15:50:55.773 回答
0

@Oliver 的答案是正确的,只需删除并重新创建 SCRIPT 组件,似乎复制/粘贴现有​​脚本组件可能会导致此错误。

于 2020-01-23T03:12:38.580 回答
0

我在使用第三方组件时遇到了这个错误。为了解决它,我不得不将我设置为 10,000,000 的 DefaultBufferMaxRows 属性的值减小,然后我转到 10,000 并解决了它。

在此处输入图像描述

于 2021-02-19T12:38:00.987 回答