SSIS: исключение OutOfMemoryException при загрузке данных из большой таблицы

У меня действительно большая таблица, которую я не могу извлечь. Эта таблица извлекается благодаря проприетарному драйверу ODBC базы данных, который я связываю с источником ADO.NET.

Исходная таблица содержит 90 000 строк и 333 столбца. Я конвертирую только 3 столбца между извлечением и загрузкой в ​​базу данных Oracle.

Каждый раз, когда я запускаю пакет, он выходит из строя после загрузки 66 500 строк с OutOfMemoryException. Я попытался изменить размер пакета на очень низкое значение, например 10 или 50, но все равно не получается.

Скриншот моего потока данных:

введите здесь описание изображения

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


person Ucodia    schedule 05.06.2012    source источник
comment
90 тыс. строк — это небольшой набор данных для SSIS. Можете ли вы опубликовать более подробную информацию? Вы уверены, что проблема не на стороне Oracle?   -  person Diego    schedule 05.06.2012
comment
Что еще происходит в пакете? Не могли бы вы опубликовать скриншот потока данных? Какой компонент вызывает исключение OutOfMemoryException?   -  person billinkc    schedule 05.06.2012
comment
Кроме того, быстрый тест, чтобы увидеть, является ли это Oracle или общая неустойчивость пакета, состоит в том, чтобы удалить пункт назначения и заменить его преобразованием Row Count. Завершен ли пакет или он все еще выдает исключение?   -  person billinkc    schedule 05.06.2012
comment
@Diego: я знаю, что количество строк довольно мало, но количество столбцов для вставок SSIS огромно, поскольку для каждой из них будет сгенерирован параметр, который вы умножаете на количество строк. Поэтому я думаю, что такое огромное количество столбцов может быть проблемой при обработке пакета.   -  person Ucodia    schedule 05.06.2012
comment
@billinkc: я уже использовал преобразование количества строк в каждой из моих таблиц схемы, чтобы без проблем оценить объем данных. Я обновил свой вопрос скриншотом потока данных.   -  person Ucodia    schedule 05.06.2012
comment
Вы можете проверить исходные данные? Я думаю, что это вполне может быть проблемой неверных данных, поскольку вы можете загрузить 66 500 строк. Я сталкивался с такими проблемами раньше, и они, как правило, были связаны с неправильными исходными данными.   -  person rvphx    schedule 05.06.2012
comment
@RajivVarma: Спасибо, я проверю это завтра. Конечно, COUNT(*) работает без проблем на этой таблице.   -  person Ucodia    schedule 06.06.2012
comment
Но IMO, COUNT(*) на самом деле не заботится о типе данных. Просто говорю.   -  person rvphx    schedule 06.06.2012


Ответы (1)


Итак, я, наконец, нашел решение несколько раз после публикации этой проблемы. Я просто установил для параметра BatchSize значение 1 в месте назначения для этого конкретного пакета, и это сработало. Это единственный пакет, в котором я столкнулся с проблемой.

person Ucodia    schedule 09.11.2012