У меня есть задача потока данных, которая висит на исключение.
Поток прост, выполняет два запроса к разным таблицам (оба с парой объединений), затем сортирует и объединяет результаты с помощью общего идентификатора, добавляет статический столбец ко всем записям, сохраняет количество строк в пользовательской переменной для последующего использования. использовать и, наконец, вставляет в таблицу на другой БД. Мы используем OLE DB Sources и Destination. Источник - MSSQL 2000, а пункт назначения - MSSQL 2012
Симптомы:
Информация: 0x40043006 в таблице изолированной программной среды загрузки, SSIS. Трубопровод: начинается подготовка к выполнению.
Информация: 0x40043007 в таблице изолированной программной среды загрузки, SSIS. Конвейер: начинается этап перед выполнением.
И не более того, пока исключение не будет прекращено. Да, это работало раньше. И да, мы использовали один запрос (в хранимой процедуре) для этого ETL, но мы хотели перенести все шаги в SSIS.
Неудачные решения:
Там нет поисков. Размер буфера по умолчанию для потока задач был увеличен до 40485760, а затем до 80971520. Максимальное количество строк в буфере для задачи было установлено равным 1000000. Задержка проверки была установлена в True для задачи. Все элементы в задаче были установлены в Validate External Data на False. Оба запроса имели:ВЫКЛЮЧИТЕ FMTONLY;
ВКЛЮЧИТЬ СЧЕТ;
добавлено в начале. Для обоих запросов MAXDOP был установлен в 1. Настройка проекта Run 64 bit Runtime в False. Изменена целевая загрузка с таблицы или представления на таблицу или представление - быстрая загрузка без блокировок или ограничений. Установите количество строк в партии до 1000 для быстрой загрузки. Некоторые обходные пути предлагают разделить поток задач на два или более потоков задач. Но это невозможно, поскольку нам нужно объединить информацию, найденную в обоих исходных запросах.
Дополнительные биты: я действительно надеюсь, что кто-то может мне помочь. Я новичок в SSIS, это первый раз, когда я его использую. Я обычно работаю с Pentaho для своего ETL, но клиенту нужно решение, которое будет реализовано в SSIS. Я боролся с этой проблемой уже пару дней, и у меня заканчиваются идеи по ее решению.
При запуске через командную строку он тоже зависает, и я получаю следующий вывод:
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.23
Source: Load Sandbox Table
Validating: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 100% complete
End Progress
Warning: 2013-03-19 14:36:26.26
Code: 0x80047076
Source: Load Sandbox Table SSIS.Pipeline
Description: The output column "ITEM_OID (1)" (47) on output "Merge Join Outp
ut" (28) and component "Merge Join" (11) is not subsequently used in the Data Fl
ow task. Removing this unused output column can increase Data Flow task performa
nce.
End Warning
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 100% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.34
Source: Load Sandbox Table
Pre-Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:45.69
Source: Load Sandbox Table
Pre-Execute: 50% complete
End Progress
После этого он снова зависает.
РЕШЕНИЕ (разместив это здесь, потому что я не могу ответить на свой вопрос еще 5 часов, я сделаю это, когда мне позволят.)
Я наконец получил это.
Оказывается, есть проблема с проверкой, но не только элементы SSIS проходят эту проверку, как указано в четвертом неудачном решении вопроса.
CONNECTIONS также проходят проверку и имеют собственное свойство Delay Validation, для которого необходимо установить значение true.
После этого время исключения увеличилось с 40+ минут или бездействия до менее минуты для полного процесса (это только один шаг из гораздо большего процесса)
Я надеюсь, что люди с такой же проблемой могут легко найти это решение, потому что есть много людей, сталкивающихся с этой проблемой, и почти нет решений, размещенных в Интернете.
В двух словах: убедитесь, что для всех ваших элементов, участвующих в задаче, включая подключения к БД, свойство проверки задержки установлено в значение True.