2015-05-06 2 views
0

У меня вопрос о результате, который я получаю с выполнением задачи в SSIS.SSIS - выход ошибки - строка перенаправления

Прежде всего, этот запрос выполняется из Access. Исходным источником является набор таблиц в Oracle, а Destination - локальная таблица в Access. Эта таблица имеет составной первичный ключ. Когда я выполняю запрос из доступа, я получаю более миллиона регистров, но прежде чем вставлять этот результат в таблицу, Access показывает мне сообщение, в котором сообщается, что 26 регистров нарушают ограничение первичного ключа (они повторяются) , Поэтому они не учитываются.

Я создал таблицу назначения в SQL SERVER с тем же самым первичным ключом, я использую тот же источник, что и в Access (тот же запрос), но когда поток данных начинает работать, сразу появляется более 200 000 регистров перенаправление как выход ошибки. И, конечно же, я ожидал того же результата, что и в Access, только 26 регистров, принятых как ошибка.

Это сообщение от доступа:

enter image description here

Это моя конфигурация для SSIS, и его результат:

enter image description here

Результат

enter image description here

Я попытался объяснить это сомнение как можно яснее, но английский не мой родной язык.

Если вам нужно прояснить что-то, пожалуйста, спросите меня.

С уважением.

+0

Все ошибки 200k на нарушениях pk? –

+0

Hi Amir, только 32 находятся в pk-нарушениях. Я обновил таблицу, удалив первичный ключ, затем я сделал группу, чтобы увидеть, сколько из них повторено, а ответ - 32. Вот почему я очень потерял свои результаты. – d2907

+0

Тогда каковы ошибки в остальной части записей? Типы данных столбцов missmatch? Нарушения FK? Являются ли данные вставленными в партии или в каждую строку самостоятельно? Последнее может привести к сбою цельной партии записей из-за одной строки. Если удаление PK разрешено вставлять все записи без проблем, это может быть так. Если вы знаете 32 pk-значения, попробуйте их отфильтровать в предложении where и посмотрите, обрабатываются ли остальные. Если все это удастся, это может быть так. –

ответ

0

Я сделаю предположение, что вы используете конфигурацию по умолчанию для OLEDB Destination. Это означает, что Ряды на партию пуст (-1) и Максимальный размер вставки фиксации из 2147483647.

строк на партию

Указать количество строк в пакете. Значение по умолчанию для этого свойства равно -1, что означает, что значение не было назначено.

Максимальный размер вставки фиксации

Указать размер пакета, что адресат OLE DB пытается совершить во время быстрых операций нагрузки. Значение 0 указывает, что все данные равны , совершенные в одной партии после обработки всех строк.

Если строки предлагаются OLEDB Destination партиями в 200 000 штук, все эти строки будут вставлены в одну партию/транзакцию. Если пакет содержит одну ошибку, вся партия будет терпеть неудачу.

Изменения в рядах для каждой партии до 1 будут решать эту проблему, но будут иметь влияние на производительность, поскольку она должна вставлять каждую строку отдельно.

+0

Hi @JodyT. Я поставил несколько изображений, возможно, было бы легче увидеть любую возможную проблему. Thans для любой помощи вы можете дать мне. До сих пор все работает. – d2907