Текст служб SSIS был усечен со значением состояния 4 - PullRequest
13 голосов
/ 27 августа 2010

Я разрабатываю пакет служб 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.

Ответы [ 7 ]

23 голосов
/ 30 августа 2010

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

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

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

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

15 голосов
/ 01 октября 2014

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

10 голосов
/ 27 августа 2010

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

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

4 голосов
/ 28 ноября 2016

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

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

2 голосов
/ 11 апреля 2012

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

0 голосов
/ 23 февраля 2019

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

Я применил вышеуказанное решение и могу конвертировать мои данные в SQL.

0 голосов
/ 08 мая 2017

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...