Сбой компонента сценария: System.IndexOutOfRangeException: индекс находился за пределами массива

В пакете 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.

person Dav1    schedule 23.01.2015    source источник


Ответы (6)


Копирование было проблемой для меня. В моем случае у меня было более 50 выходных столбцов, поэтому повторное создание компонента скрипта не было хорошим вариантом. В итоге я открыл файл DTSX в VSCODE (отличная подсветка на правой полосе прокрутки). Имя GUID/сборки для каждого компонента блокируется на 18 вхождений для каждого. Таким образом, с дубликатом у меня было 36 вхождений одного и того же GUID. Они достаточно разделены, чтобы идентифицировать каждый компонент, и просто создали новый гид и заменили 18 для одного из них, и ошибки были устранены. Надеюсь, это поможет кому-то.

person Jeffrey Bane    schedule 05.06.2019

Ошибка связана со столбцами ввода для задачи сценария, которые вы найдете на второй вкладке редактора преобразования сценария. Возможно, он ожидает столбец, которого больше не существует, или вы используете столбец в сценарии, который не был выбран.

Если вы по-прежнему не можете определить проблему, попробуйте обновить метаданные компонента или удалить его и создать заново.

person James Rosser    schedule 23.01.2015

Была та же проблема в некоторых потоках данных ETL: несколько экземпляров одной и той же задачи сценария иногда работали, иногда нет, показывая одну и ту же ошибку «индекс вне границ» в буфере конвейера. Решается удалением экземпляров, которые были скопированы из существующих, и созданием новой задачи с нуля, просто копированием самого скрипта. Может быть, что-то выходит из строя при копировании этих буферов? Надеюсь, поможет...

person Oliver    schedule 30.07.2018

@ Ответ Оливера здесь наиболее близок к истине. Этот шаг действительно может решить проблему, и я тоже с этим столкнулся. Типичный для нашего любимого переполнения стека, нулевой рейтинг за правильный ответ.

Вы также можете периодически получать это от SSIS, когда компоненты сценария пытаются получить доступ к коллекции Dts.Variables, но эта переменная не выбрана в параметре сценария «ReadOnlyVariables» или «ReadWriteVariables». Убедитесь, что используемый индекс правильный и в правильной форме, например.

Пользователь::ИмяПеременной

person Phil Morris    schedule 01.03.2019

Ответ @Oliver правильный, просто УДАЛИТЕ и заново создайте компонент SCRIPT, похоже, что копирование / вставка существующих компонентов Script может привести к этой ошибке.

person Ismael    schedule 23.01.2020
comment
Добро пожаловать в SO :) Нет необходимости добавлять новый ответ, если единственная цель - согласиться с существующим ответом. Просто проголосуйте за понравившийся ответ (и за вопрос тоже!). - person Z4-tier; 23.01.2020

У меня была эта ошибка с использованием стороннего компонента. Чтобы решить эту проблему, мне пришлось уменьшить значение свойства DefaultBufferMaxRows, которое я установил, до 10 000 000, затем я перешел к 10 000 и решил это.

введите здесь описание изображения

person kbral    schedule 19.02.2021