2017-02-20 20 views
2

ОПИСАНИЕ ПАКЕТА: Я использую источник из одной базы данных, чтобы найти ключ суррогатной географии, а затем другой, чтобы проверить, существует ли клиент, если он не вставил строку, если обновить строку ...Ошибка ввода адреса SSIS

ПРОБЛЕМА: Я не могу вставить приблизительно 700 000 строк.

ОПИСАНИЕ ПРОБЛЕМЫ: Я смотрел на это в течение длительного, долгого времени, используя средство просмотра данных, выводя на плоские файлы и не могу найти причину моих проблем.

Из нижеприведенных ошибок, исследований и проверки через SSIS я нарисовал пробел.

Error: 0xC0209029 at DimCustomer, Dw_DimCustomer [2]: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "Dw_DimCustomer.Inputs[OLE DB Destination Input]" failed because error code 0xC020907B occurred, and the error row disposition on "Dw_DimCustomer.Inputs[OLE DB Destination Input]" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.

Error: 0xC0047022 at DimCustomer, SSIS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Dw_DimCustomer" (2) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (15). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

Error: 0xC02020C4 at DimCustomer, SQL_Customer [154]: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.

Error: 0xC0047038 at DimCustomer, SSIS.Pipeline: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on SQL_Customer returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.

SSIS Package

РАБОТА СДЕЛАНО:

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

Я не уверен, куда идти, как всегда ответ - StackOverflow.

Любые указатели или идеи или помощь будут приветствоваться с распростертыми объятиями.

+0

Вы удалили и воссоздали источник? – manderson

+0

Нет, я уже запускал пакет SSIS, используя источник, который предполагает, что это нормально. – Will

+0

«Ошибка при попытке добавить строку в буфер задачи потока данных» может означать, что вы исчерпали ОЗУ. Посмотрите в диспетчере задач и посмотрите, растет ли использование ОЗУ. Образец, который вы используете, очень медленный. Я всегда делаю прямое UPDATE/INSERT из промежуточной таблицы. –

ответ

1

С изображения, которое вы приложили, я думаю, что вы используете SSIS 2012 или выше, после поиска есть много проблем, которые вызывают эту проблему.

Вы можете проверить следующие вещи:

Первый

, если система сервера Operationg является 64-битной попробуйте запустить пакет SSIS в 64-битном режиме исполнения. вы можете следить за этим link для получения более подробной информации.

Второй

Попробуйте заменить OLEDB Destination с SQL server Destination и установите TIME OUT более высокое значение (напр: 500)

Thrird

На вас OLEDB Destination попытаться снимите Check Constraints checkbox (Ошибка может быть вызвана ограничениями)

Список литературы

Первый обходной прием

Второй Обход

Дополнительной информация

Я думаю, что это главное сообщение Ошибки, что вы можете найти его (, если нет сообщений об ошибке, полученных от вашего пакета), если мой ответ не решил:

The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020

Надеюсь, это поможет

+0

Первый - все операционные системы согласованы. Второй - база данных не поддерживается локально, поэтому OLEDB должен использоваться. Третий - проверка ограничений работала как шарм. РЕШЕНИЕ: На вас OLEDB Destination попытаться снимите флажок проверочных ограничений (ошибка может быть вызвана ограничениями) Большого спасибо !! – Will

+0

@ Сообщение об ошибке, которое вы предоставили, является неоднозначным. Вот почему я дал много способов решить эту проблему :). Рад решить проблему ур – Hadi

0

Перейти к DimCustomer Свойства:

enter image description here

Make BufferMaxRows to 100. This might increase the execution time for the package as it will transfer only 100 row at a time using a less RAM at that instance.

Если это не работает:

Вы можете создать идти для цикла. Добавляя это же внутри приложения For-loop, добавляя 100 строк каждый раз, когда он выполняется. Вы можете найти выполнение цикла, разделив общее количество на 100. Это определенно поможет вам!