Почему при сбое контейнера последовательности служб SSIS мой поток сбоев не запускается? - PullRequest
10 голосов
/ 26 ноября 2011

У меня есть несколько контейнеров последовательностей служб SSIS, и если какая-либо из них в них не выполняется, я хочу направить поток к задаче SQL, которая все очищает, чтобы я мог решить проблему и запустить ее снова, не имея дублированных данных.Моя проблема в том, что я не могу направить поток в задачу SQL, даже если что-то в одном из контейнеров последовательности дает сбой.Похоже, это должно быть поведение по умолчанию, но должна быть какая-то настройка, которую я пропускаю.Я играл с настройкой FailParentOnFailure, но все, что он делает, это останавливает запуск остальной части пакета.Я вставил бы изображение, чтобы помочь понять, что я настроил, но думаю, что моя репутация еще недостаточно хороша.: P

Ответы [ 4 ]

21 голосов
/ 28 ноября 2011

Я думаю, что именно в этом случае картина помогла бы другим ответить на мой вопрос.У меня было 3 контейнера последовательности, все они указывали на одну и ту же задачу SQL, если они не выполнялись.Я хотел, чтобы задача SQL выполнялась, если ЛЮБОЙ из контейнеров последовательности имел ошибку, поэтому ограничения приоритета должны были быть установлены на логическое ИЛИ, иначе она никогда не будет выполняться, если не произойдет сбой всех трех.Изменил его на ИЛИ, и он работал так, как я хотел.

6 голосов
/ 04 июня 2012

Убедитесь, что вы нажали «Изменить» в «Ограничениях» и изменили последнюю часть «Несколько ограничений» на «ИЛИ», чтобы в случае сбоя любого из них выполнить задачу, в противном случае он будет ожидать сбоя всех из них.

3 голосов
/ 24 июля 2014

Проверьте свойство контейнера последовательности, если FailPackageOnFailure = true, оно не будет запускать «ограничение приоритета сбоя».

1 голос
/ 28 ноября 2011

Без дополнительной информации о ваших контейнерах последовательностей трудно быть уверенным в проблеме.

Я бы попытался проверить системную переменную Propagate ваших контейнеров.Всякий раз, когда у вас есть задача, которая может потерпеть неудачу, и вы не хотите, чтобы весь пакет был остановлен, убедитесь, что вы выполняете одно из следующих действий:

  • Перейдите на Event Handlers и сделайте что-нибудь для события OnErrorчтобы обработать ошибку или
  • Установите системную переменную Propagate этой задачи на False

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

Похож на ваш вопрос: http://sqlserverselect.blogspot.com/2010/12/ssis-foreach-loop-container-continue-on.html

Подробная информация о распространении событий: http://simonworth.wordpress.com/2009/11/11/ssis-event-handler-variables-propagate/

...