Ошибки производного столбца из-за кодов ошибок DTS_E_INDUCEDTRANSFORMFAILUREONERROR 0xC0049067 и DTS_E_PROCESSINPUTFAILED 0xC0209029 - PullRequest
0 голосов
/ 22 мая 2018

Я работал над пакетом служб SSIS, для которого я добавил производные столбцы (которые я разместил здесь ранее).Проблема, с которой я сталкиваюсь, заключается в том, что этот дочерний пакет работает нормально в одной среде, но по какой-то причине не работает в моей среде Dev.

Произошли следующие ошибки:

"SSISError Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Компонент" DerivedColumn "(9567)" не выполнен, поскольку произошел код ошибки 0xC0049067 и расположение строки ошибки на выходе "столбец «SchemaID» (9744) «указывает на ошибку при ошибке» и «код SSISError DTS_E_PROCESSINPUTFAILED. Сбой методаProcessInput компонента« Производный столбец »(9567) с кодом ошибки 0xC0209029 при обработке ввода« Ввод производного столбца »(9568). Идентифицированный компонентвозвратил ошибку из ProcessInputmethod ".

Я сравнил поля таблицы, особенно SchemaID в обеих средах, и они идентичны.Я даже попытался воссоздать конкретную таблицу в Dev и повторил попытку запуска пакета, но безрезультатно.

Это экран редактора преобразования производных столбцов:

enter image description here

Может кто-нибудь сделать какие-либо предложения по этому поводу?Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Выражение SchemaId выглядит следующим образом:

SUBSTRING((DT_WSTR,15)PCMRetrievalCode,3,FINDSTRING(((DT_WSTR,15)PCMRetrievalCode),"C"C,1) - 3)

Я думаю, что проблема вызвана функцией FINDSTRING.Если столбец PCMRetreievalCode не содержит "C" или вернет индекс < 3, то FINDSTRING(((DT_WSTR,15)PCMRetrievalCode),"C",1) - 3 сгенерирует исключение, поскольку в функции SUBSTRING параметр длины должен быть положительным.

Вы можете добавить условное ? : для решения проблемы:

FINDSTRING(((DT_WSTR,15)PCMRetrievalCode),"C",1) >= 3 ? SUBSTRING((DT_WSTR,15)PCMRetrievalCode,3,FINDSTRING(((DT_WSTR,15)PCMRetrievalCode),"C"C,1) - 3) : ""

Еще одно предложение - увеличить длину столбца более чем на 13.

0 голосов
/ 22 мая 2018

Скорее всего, это неверные данные, которые не преобразуются с помощью вашего производного преобразования.Идеально было бы создать тестовую таблицу и изменить тип данных столбца SchemaID на varchar и получить все данные там.Вам будет легче отладить проблему.В качестве альтернативы вы можете открыть вкладку «Расширенный редактор» для своего производного столбца и изменить либо тип данных входного schemaID, либо его длину (не говоря уже о том, что его int или что-то еще не поддерживает длины).

...