1

с помощью SQL Server 2014 и служб SSIS с помощью Visual Studio 2015.SSIS отображение в SQL Server вычисляемый столбец

Source и Destination являются д.б.н. SQL Server, расположенные на том же сервере. Таблица назначения имеет 2 столбца, которые вычисляются в таблице.

Значения для этих столбцов НЕ определяются с помощью функции Derived Column для SSIS. Значения для этих столбцов вычисляются целевым db в таблице адресатов.

В редакторе отображения назначения, эти два столбца имеют множество входных столбцов для <ignore>.

Когда я бегу пакет, я получаю сообщение об ошибке, потому что пакет пытается вставить аннулирует в вычисляемых столбцов.

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

Любые предложения по загрузке таблицы с вычисленными столбцами?

Спасибо!

+0

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

+0

@GarethD Это имеет смысл, но, похоже, это не причина проблемы. Я использую оператор select, который работает через SSMS без каких-либо ошибок в целевом объекте. –

+1

@Tod Meinke Вы пытались установить столбцы в целевом сопоставлении ? (По крайней мере, это то, что я сделал бы в SSIS 2008). – rafaelbattesti

ответ

0

Увидев что-то подобное, я должен спросить, было ли ваше сообщение об ошибке «Строка или двоичные данные будут усечены»?

Это не связано с введением NULL в вычисляемый столбец, поскольку вы устанавливаете столбец ввода <ignore>, как и для столбца идентификации автоинкремента в таблице адресатов.

Вместо этого это выглядит как прерывистая ошибка SSIS, в которой назначение OLE DB в потоке данных пытается вставить в таблицу с вычисленными столбцами и не выполняется. Периодически, потому что небольшие изменения заставили проблему проявиться для меня; и небольшие изменения заставили его исчезнуть для вас.

Если вы снова столкнетесь с этой проблемой: сделайте копию таблицы назначения без вычисленных столбцов и вставите записи через новое назначение OLE DB. Если это сработает, вы смотрите на «SSIS Destination Computed Column Bug».

Подробнее о множестве грехов, охватываемых сообщением «Строковые или двоичные данные будут усечены», см. https://connect.microsoft.com/SQLServer/feedback/details/339410/please-fix-the-string-or-binary-data-would-be-truncated-message-to-give-the-column-name. Он документирует десятилетие Microsoft, игнорируя проблему, несмотря на 1610 upvotes.

ОБНОВЛЕНИЕ: Простейшим обходным решением является использование обычной загрузки таблицы вместо быстрой загрузки компонента OLE DB Destination в Dataflow. Это известная ошибка Microsoft, a.k.a. «BCP и BULK INSERT не работают в вычисленных столбцах таблицы (они не пропускают вычисленные столбцы)».

Но попробуйте перейдите по этой ссылке и посмотрите, что вы получаете: https://connect.microsoft.com/SQLServer/feedback/details/2779032/bcp-and-bulk-insert-fail-on-computed-table-columns-they-dont-skip-computed-columns. Да, они «ушли», чтобы скрыть доказательства.

Смежные вопросы