Текст SSIS был усечен со статусом 4

Я разрабатываю пакет SSIS, пытаясь обновить существующую таблицу SQL из плоского файла CSV. Все столбцы успешно обновляются, за исключением одного столбца. Если я игнорирую этот столбец на truncate, мой пакет завершается успешно. Поэтому я знаю, что это проблема с усечением, а не ошибка.

Этот столбец пуст почти для каждой строки. Однако есть несколько строк, где это поле 200-300 символов. Моя задача преобразования данных определила это поле как DT_WSTR, но из того, что я читал в другом месте, возможно, это должен быть DT_NTEXT. Я пробовал оба, и я даже установил DT_WSTR на 500. Но ни одна из этих проблем не исправилась. Как я могу исправить? Какой тип данных должен содержать этот столбец в моей таблице SQL?

Error: 0xC02020A1 at Data Flow Task 1, Source - Berkeley812_csv [1]: Data conversion failed. The data conversion for column "Reason for Delay in Transition" returned status value 4 and status text "Text was truncated or one or more characters had no match in the target code page.".
Error: 0xC020902A at Data Flow Task 1, Source - Berkeley812_csv [1]: The "output column "Reason for Delay in Transition" (110)" failed because truncation occurred, and the truncation row disposition on "output column "Reason for Delay in Transition" (110)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component.
Error: 0xC0202092 at Data Flow Task 1, Source - Berkeley812_csv [1]: An error occurred while processing file "D:\ftproot\LocalUser\RyanDaulton\Documents\Berkeley Demographics\Berkeley812.csv" on data row 758.

Ответ 1

Я подозреваю, что или один или несколько символов не совпадают на целевой кодовой странице часть ошибки.

Если вы удалите строки со значениями в этом столбце, загрузится ли она? Можете ли вы идентифицировать, другими словами, строки, которые приводят к сбою пакета? Возможно, данные слишком длинны, или может быть, что там какой-то фанковый персонаж там SQL Server не нравится.

Ответ 2

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

Один из способов проверить это - перенаправить "плохие" строки в отдельный файл, а затем проверить их вручную. Вот краткое объяснение, как это сделать:

http://redmondmag.com/articles/2010/04/12/log-error-rows-ssis.aspx

Если это действительно ваша проблема, лучшим решением является исправить файлы в источнике, чтобы указать значения данных и/или использовать другой разделитель, который не находится в данных.

Ответ 3

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

Ответ 4

Если это происходит из мастера импорта SQL Server, попробуйте отредактировать определение столбца в источнике данных, по умолчанию оно составляет 50 символов, но оно может быть длиннее.

Data Soruce -> Advanced -> Look at the column that goes in error -> change OutputColumnWidth to 200 and try again.

Ответ 5

В моем случае некоторые из моих строк не имели того же количества столбцов, что и заголовок. Пример: Заголовок имеет 10 столбцов, а одна из ваших строк имеет 8 или 9 столбцов. (Столбцы = укажите количество символов разделителя в каждой строке)

Ответ 6

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