|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Есть SSIS - пакет. В нём в цикле (Foreach loop) выполняется несколько задач, и в частности, FTP task Необходимо в случае ошибки в этой FTP task продолжить выполнение цикла (точнее, циклов - их несколько вложенных). Как вообще это можно сделать? Пока что я нашёл только один выход - во всех контейнерах SSIS-пакета отключить остановку при возникновении ошибки (установив параметр MaximumErrorCount=0), но это, конечно, неправильно, потому что мне не надо отключать контроль ошибок вообще для всех тасков пакета. Все остальные методы не работают, например, установка ForceExecutionResult в Success... Есть какое то решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 12:29 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
alexeyvg, А если перенаправить Error output в заглушку - скрипт таск например? Я такое делал для SQL task, там ошибка подавляется однозначно. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 12:36 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
SergePnbalexeyvg, А если перенаправить 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 12:53 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Посмотрите свойства FailParentOnFailure FailPackageOnFailure MaxumumErrorCount FailTaskIfReturnCodeIsNotSuccessValue правда я реализовывал загрузку через сторонний ftp-клиент который вызывался в Foreach loop через командную строку. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 12:56 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:01 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
если не ошибаюсь, то надо просто на контейнере выставить MaxErrorCount = 0 FailParentOnFailure = false failPackageOnfailure = false и все ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:15 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
КритикВот этот использовал http://ftps.codeplex.com/ он кстати позволяет выкачать все по маске файлаДа, спасибо, смотрел... Видимо, мы тоже перейдём на что то такое, потому как в будущем вроде бы клиенту понадобится FTPS... КритикПосмотрите свойства FailParentOnFailure FailPackageOnFailure MaxumumErrorCount FailTaskIfReturnCodeIsNotSuccessValue правда я реализовывал загрузку через сторонний ftp-клиент который вызывался в Foreach loop через командную строку.FailParentOnFailure и FailPackageOnFailure усоановлены в False (по умолчанию для любой новой задачи) MaxumumErrorCount для таска ни на что не влияет, а для контейнера гасит ошибку. Но к сожалению, даже если в контейнере установить MaxumumErrorCount=0, то он то не прекратит работу, но первый же контейнер уровнем выше вывалится :-( FailTaskIfReturnCodeIsNotSuccessValue - это только для Process Task, как я понимаю, это не подходит... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:16 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKotесли не ошибаюсь, то надо просто на контейнере выставить MaxErrorCount = 0Вывалится контейнер уровнем выше :-( А для всех установить это свойство нельзя - это значит выключить вообще всю обработку ошибок. Вообще странно, такая куча средств по управлению ошибками, а управлять нельзя :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:18 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKotесли не ошибаюсь, то надо просто на контейнере выставить MaxErrorCount = 0 FailParentOnFailure = false failPackageOnfailure = false и все Точно, MaxErrorCount = 0 на контейнере помогает повторять тело и игнорировать ошибку; все остальное значения по умолчанию. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:19 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
SergePnbHandKotесли не ошибаюсь, то надо просто на контейнере выставить MaxErrorCount = 0 FailParentOnFailure = false failPackageOnfailure = false и все Точно, MaxErrorCount = 0 на контейнере помогает повторять тело и игнорировать ошибку; все остальное значения по умолчанию.Увы :-( ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 13:42 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
есть если стоя на контейнере, в котором может произойти ошибка и ее не надо передавать дальше, то надо перейти на вкладку Event Handler , выбрать св-во OnErro r и в окне Variables найти с именем Propagate и выставить ей значение false MaxErrorCount должно быть в 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 15:26 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKotесть если стоя на контейнере, в котором может произойти ошибка и ее не надо передавать дальше, то надо перейти на вкладку Event Handler , выбрать св-во OnErro r и в окне Variables найти с именем Propagate и выставить ей значение false Блестяще! Вы из тех самых редких экспертов по SSIS! :-) Поставил это свойство на интересущем меня таске, при этом свойства MaxErrorCount и прочие установил по умолчанию. Сразу всё стало работать, как и хотелось - ошибку таск генерит, я её обрабатываю, как мне надо, при этом выполнение продолжается. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:01 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
alexeyvg предалгаю Вам закинуть это решение в ФАК я бы и сам мог написать, но из меня писарчук еще тот :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:10 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKot alexeyvg предалгаю Вам закинуть это решение в ФАК я бы и сам мог написать, но из меня писарчук еще тот :)Хорошо, попробую написать, и заодно обратить внимание народа на системные переменные событий и задач в пакете - многие не представляют, что они есть и нужны, не обращают на них внимания, когда ищёт пути решения каких то проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:16 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
точно и меньше будет встерчаться авторВообще странно, такая куча средств по управлению ошибками, а управлять нельзя :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.02.2012, 16:18 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
вот нашел, кому интересно, по этому поводу статью SSIS Event Handler Variables – Propagate ... |
|||
:
Нравится:
Не нравится:
|
|||
02.02.2012, 08:49 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKot, А в свежей SSDT можно так сделать? Я остановилась на том, что System Variables не могу открыть... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 17:58 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
tashkafox, нашла. в Grid Options включается ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2019, 18:17 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Всем привет. И просто адски прошу помощи по этой же теме с ошибками. Речь пойдёт о warning'е: "Warning: 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." В проекте где-то в середине среди пакетов и подпакетов есть цикл "For Loop Container" (у него "Propagate" выключил, "MaximumErrorCount = 0" установил, тут всё ок) который первый раз вызывает подпакет и тот падает, а потом вызывает ещё раз и во второй раз уже подпакет отрабатывает успешно. И это повторяется для сразу 10-20 пакетов, т.е. каждый пакет вызывается несколько раз, если первый раз упал. Всё бы хорошо, но в итоге на самом верху получаю вышеупомянутый warning и падение, хотя по факту всё отработало успешно, пусть и не с первого раза. И весь проект вызывается в джобе, который тоже падает в итоге и спамит на почту сообщения об ошибках, хотя, повторюсь, всё хорошо, просто одна из попыток не удалась в процессе отработки. Как это победить? Возможно ли? Игнорировать в обще все ошибки не хочу. Хочу что бы просто игнорировались всем проектом только ошибки происходящие в "For Loop Container". ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 13:41 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Мб у меня propagate не работает по факту? Или мб это нормальное поведение. Тогда мб динамически увеличивать MaximumErrorCount у главного пакета на число отловленных и обработанных мной ошибок?... хочется не городить костылей, но пока даже с ними не пойму как это решить ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 14:12 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Karp13 Мб у меня propagate не работает по факту? Или мб это нормальное поведение. Тогда мб динамически увеличивать MaximumErrorCount у главного пакета на число отловленных и обработанных мной ошибок?... хочется не городить костылей, но пока даже с ними не пойму как это решить propagate всегда должен работать нормально, если Вы всё правильно настроили Приложите картинку пакета и обозначьте где падает и где выставили св-во propagate и, как вариант, выставите propagate всего пакета, только тогда не будет понятно, если свалился в "неположенном месте" ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 14:43 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Ок, попробую: 1. Пакет "PackageFirst" вызывает пакет "PackageLoop". 2. Пакет "PackageLoop" вызывается другой пакет, который первый раз падает, а второй раз отрабатывает нормально. У "PackageLoop" параметр MaximumErrorCount = 1. А у его компонентов "For Loop Container" и "Execute Package Task" MaximumErrorCount = 0 (вроде не обязательно у двух делать, но исторически так сложилось). У компонента "Execute Package Task" есть handler OnError с выключенным Propagate. Допустим, я хочу, что бы ошибки "Execute Package Task" и вызываемого им пакета не всплывали наверх, так как я тут их обрабатываю. Но ошибки в других местах должны всплывать. 3. В итоге, хочу что бы пакет "PackageFirst" не падал. А он падает, т.к. DTS_W_MAXIMUMERRORCOUNTREACHED превышен, т.к. он заметил, что внизу была ошибка. Из-за этого не можем ещё выше грамотно мониторить ошибки, т.к. получаем сообщения об ошибках тогда, когда по факту всё хорошо, просто не с первой попытки. Как это преодолеть? Или что я делаю не так? PS: ой, сори за черные пятна на скрине, на моей машине такого не было) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 16:08 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
PS: И я же правильно понимаю, что, судя по логу со скриншота, пакет First падает именно из-за превышения количества допустимых ошибок? Или всё таки как-то ошибка из нижнего пакета передаётся наверх? Как может быть можно это проследить? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 16:20 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
Karp13 Ок, попробую: 1. Пакет "PackageFirst" вызывает пакет "PackageLoop". 2. Пакет "PackageLoop" вызывается другой пакет, который первый раз падает, а второй раз отрабатывает нормально. У "PackageLoop" параметр MaximumErrorCount = 1. А у его компонентов "For Loop Container" и "Execute Package Task" MaximumErrorCount = 0 (вроде не обязательно у двух делать, но исторически так сложилось). У компонента "Execute Package Task" есть handler OnError с выключенным Propagate. Допустим, я хочу, что бы ошибки "Execute Package Task" и вызываемого им пакета не всплывали наверх, так как я тут их обрабатываю. Но ошибки в других местах должны всплывать. 3. В итоге, хочу что бы пакет "PackageFirst" не падал. А он падает, т.к. DTS_W_MAXIMUMERRORCOUNTREACHED превышен, т.к. он заметил, что внизу была ошибка. Из-за этого не можем ещё выше грамотно мониторить ошибки, т.к. получаем сообщения об ошибках тогда, когда по факту всё хорошо, просто не с первой попытки. Как это преодолеть? Или что я делаю не так? есть подозрение, что Propagate нужно выставить не у Execute Package Task, а у For Loop Container, т.к ошибку он уже сгенерировал и передал в контейнер. А вот контейнер и может прервать цепочку ошибок. Мне думается так Как раз это и было указано в ответе 12012386 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 16:34 |
|
SSIS - как погасить ошибку в задаче?
|
|||
---|---|---|---|
#18+
HandKot, не помогло. ( Установил у хэндлера OnError контейнера "For Loop Container" значение Propagate = False - ничего не изменилось. Установил у хэндлера OnError контейнера "For Loop Container" значение Propagate = False, а у "Execute Package Task" у хэндлера OnError значение Propagate = True - ничего не изменилось. Установил у обоих Propagate = True - ничего не изменилось. Установил затем у всего пакета "PackageLoop" у хэндлера OnError значение Propagate = False - ничего не изменилось. Установил затем у всего пакета "PackageLoop" значение MaximumErrorCount = 0 - ничего не изменилось. Грусть какая-то. Я уже в третий раз штурмую эту проблему, с перерывами по два месяца, делаю те же манипуляции, получаю тот же результат. Эта программа смеётся надо мной. Продолжаю эксперименты. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2020, 17:08 |
|
|
start [/forum/topic.php?fid=46&fpage=70&tid=1686546]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 151ms |
0 / 0 |