Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
Есть SSIS - пакет. В нём в цикле (Foreach loop) выполняется несколько задач, и в частности, FTP task

Необходимо в случае ошибки в этой FTP task продолжить выполнение цикла (точнее, циклов - их несколько вложенных).

Как вообще это можно сделать?

Пока что я нашёл только один выход - во всех контейнерах SSIS-пакета отключить остановку при возникновении ошибки (установив параметр MaximumErrorCount=0), но это, конечно, неправильно, потому что мне не надо отключать контроль ошибок вообще для всех тасков пакета.

Все остальные методы не работают, например, установка ForceExecutionResult в Success...

Есть какое то решение?
1 фев 12, 12:29    [12010220]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 457
alexeyvg,

А если перенаправить Error output в заглушку - скрипт таск например? Я такое делал для SQL task, там ошибка подавляется однозначно.

К сообщению приложен файл. Размер - 8Kb
1 фев 12, 12:36    [12010298]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
SergePnb
alexeyvg,

А если перенаправить Error output в заглушку - скрипт таск например? Я такое делал для SQL task, там ошибка подавляется однозначно.

Картинка с другого сайта.
Сделал тестовый пакетик с SQL task - поведение ровно такое-же, управление переходит на заглушку, но в Foreach Loop тоже немедленно передаётся ошибка, и на следущей итерации цикла выполнение пакета прерывается.

При этом ещё до выполнения заглушки в выводе студии (в режиме отладки) появляется сообщение:

Warning: 0x80019002 at Foreach Loop Container: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED. The Execution method succeeded, but the number of errors raised (1) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.
1 фев 12, 12:53    [12010508]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31978
Блог
Посмотрите свойства

FailParentOnFailure
FailPackageOnFailure
MaxumumErrorCount
FailTaskIfReturnCodeIsNotSuccessValue

правда я реализовывал загрузку через сторонний ftp-клиент который вызывался в Foreach loop через командную строку.
1 фев 12, 12:56    [12010555]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31978
Блог
Вот этот использовал
http://ftps.codeplex.com/
он кстати позволяет выкачать все по маске файла
1 фев 12, 13:01    [12010614]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2926
если не ошибаюсь, то надо просто на контейнере выставить
MaxErrorCount = 0
FailParentOnFailure = false
failPackageOnfailure = false

и все
1 фев 12, 13:15    [12010789]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
Критик
Вот этот использовал
http://ftps.codeplex.com/
он кстати позволяет выкачать все по маске файла
Да, спасибо, смотрел...

Видимо, мы тоже перейдём на что то такое, потому как в будущем вроде бы клиенту понадобится FTPS...



Критик
Посмотрите свойства

FailParentOnFailure
FailPackageOnFailure
MaxumumErrorCount
FailTaskIfReturnCodeIsNotSuccessValue

правда я реализовывал загрузку через сторонний ftp-клиент который вызывался в Foreach loop через командную строку.
FailParentOnFailure и FailPackageOnFailure усоановлены в False (по умолчанию для любой новой задачи)

MaxumumErrorCount для таска ни на что не влияет, а для контейнера гасит ошибку. Но к сожалению, даже если в контейнере установить MaxumumErrorCount=0, то он то не прекратит работу, но первый же контейнер уровнем выше вывалится :-(

FailTaskIfReturnCodeIsNotSuccessValue - это только для Process Task, как я понимаю, это не подходит...
1 фев 12, 13:16    [12010808]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
HandKot
если не ошибаюсь, то надо просто на контейнере выставить
MaxErrorCount = 0
Вывалится контейнер уровнем выше :-(

А для всех установить это свойство нельзя - это значит выключить вообще всю обработку ошибок.

Вообще странно, такая куча средств по управлению ошибками, а управлять нельзя :-)
1 фев 12, 13:18    [12010823]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
SergePnb
Member

Откуда: Киев
Сообщений: 457
HandKot
если не ошибаюсь, то надо просто на контейнере выставить
MaxErrorCount = 0
FailParentOnFailure = false
failPackageOnfailure = false

и все


Точно, MaxErrorCount = 0 на контейнере помогает повторять тело и игнорировать ошибку; все остальное значения по умолчанию.
1 фев 12, 13:19    [12010838]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
SergePnb
HandKot
если не ошибаюсь, то надо просто на контейнере выставить
MaxErrorCount = 0
FailParentOnFailure = false
failPackageOnfailure = false

и все


Точно, MaxErrorCount = 0 на контейнере помогает повторять тело и игнорировать ошибку; все остальное значения по умолчанию.
Увы :-(
1 фев 12, 13:42    [12011157]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2926
есть
если стоя на контейнере, в котором может произойти ошибка и ее не надо передавать дальше, то надо перейти на вкладку Event Handler, выбрать св-во OnError и в окне Variables найти с именем Propagate и выставить ей значение false

MaxErrorCount должно быть в 0
1 фев 12, 15:26    [12012386]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
HandKot
есть
если стоя на контейнере, в котором может произойти ошибка и ее не надо передавать дальше, то надо перейти на вкладку Event Handler, выбрать св-во OnError и в окне Variables найти с именем Propagate и выставить ей значение false
Блестяще! Вы из тех самых редких экспертов по SSIS! :-)

Поставил это свойство на интересущем меня таске, при этом свойства MaxErrorCount и прочие установил по умолчанию. Сразу всё стало работать, как и хотелось - ошибку таск генерит, я её обрабатываю, как мне надо, при этом выполнение продолжается.

Спасибо!
1 фев 12, 16:01    [12012747]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2926
alexeyvg
предалгаю Вам закинуть это решение в ФАК
я бы и сам мог написать, но из меня писарчук еще тот :)
1 фев 12, 16:10    [12012850]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28867
HandKot
alexeyvg
предалгаю Вам закинуть это решение в ФАК
я бы и сам мог написать, но из меня писарчук еще тот :)
Хорошо, попробую написать, и заодно обратить внимание народа на системные переменные событий и задач в пакете - многие не представляют, что они есть и нужны, не обращают на них внимания, когда ищёт пути решения каких то проблем.
1 фев 12, 16:16    [12012932]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2926
точно и меньше будет встерчаться
автор
Вообще странно, такая куча средств по управлению ошибками, а управлять нельзя :-)
1 фев 12, 16:18    [12012970]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 2926
вот нашел, кому интересно, по этому поводу статью
SSIS Event Handler Variables – Propagate
2 фев 12, 08:49    [12016667]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: SSIS - как погасить ошибку в задаче?  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 103
HandKot, А в свежей SSDT можно так сделать?
Я остановилась на том, что System Variables не могу открыть...

К сообщению приложен файл. Размер - 2Kb
15 май 19, 17:58    [21885645]     Ответить | Цитировать Сообщить модератору
 Re: SSIS - как погасить ошибку в задаче?  [new]
tashkafox
Member

Откуда: Москва
Сообщений: 103
tashkafox, нашла. в Grid Options включается

К сообщению приложен файл. Размер - 6Kb
15 май 19, 18:17    [21885660]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить