Как перехватить несколько столбцов ошибок в потоке данных служб SSIS - PullRequest
1 голос
/ 03 мая 2019

У меня есть ситуация, когда я хочу захватить все столбцы, которые вызывают ошибки. Для этого у меня есть поток данных, который работал нормально, я изменил тип данных назначения столбца, который вызвал сбой потока данных, с помощью компонента сценария, я смог захватить имя столбца, который вызвал проблему, теперь я Введено еще одно изменение типа данных, но теперь оно фиксирует имя столбца последнего изменения, но не имена двух столбцов, которые имеют проблемы.

Есть ли способ вставить два или более имен столбцов, которые вызывают сбой потока данных, в столбец, разделенный запятыми в плоском файле назначения.

Ответы [ 3 ]

0 голосов
/ 03 мая 2019

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

Например, вы в конечном итоге загружаете в varchar (50), а затем можете проверить этот столбец с len (column)> 50.

Вы можете иметь столько тестов, сколько хотите (дополнительные столбцы), но, как и в случае с оператором case, вы только перехватываете первое событие триггера.

Перенаправляя все плохие строки, выВы загружаете все хорошие строки и работаете с плохими по отдельности.

Допустим, у вас есть два теста.Вы можете точно определить, были ли неудачны оба теста с несколькими условными разбиениями, но большинство программ обычно имеют только одно условное разбиение для пользы или не годится во всех тестах.

0 голосов
/ 07 мая 2019

На основании вашего комментария я хотел бы предложить компонент скрипта и выполнить там проверку данных:

Добавить новый вывод с именами ошибок с тремя столбцами:

KeyToRecord [правильный тип данных] строка strDataInCol Строка ErrorReason

Затем выполните множество проверок:

if(Row.Col1.Length > 50)
{
    OutputError.AddRow();
    OutputError.KeyToRecord = Row.RecordKey;
    OutputError.strDataInCol = Row.Col1.ToString();
    OutputError.ErrorReason = "Column1 is greater than 50 chars";
}

и т. Д. Через все ваши чеки.

Это даст вам список ошибок в вашем файле.

0 голосов
/ 03 мая 2019

Из вопроса не понятно, как вы фиксируете столбец ошибок. Я предполагаю, что вы используете вывод Error для этого.

Не думаю, что вы можете зафиксировать более одной ошибки подряд. В каждой строке, если при вставке столбца произошла ошибка, вставка отменяется, а вставка других столбцов не выполняется. Поэтому, если одно из значений других столбцов вызовет проблему, оно не будет идентифицировано.

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

...