Управление очередностью

Применимо к: SQL Server Integration Runtime служб SSIS в Фабрика данных Azure

Элементы управления очередностью связывает исполняемые объекты, контейнеры и задачи в пакетах в поток управления и задают условия, которые определяют, выполняются ли исполняемые объекты. В качестве исполняемого объекта могут быть контейнеры «цикл по элементам» и «цикл по каждому элементу», контейнеры последовательности, задача или обработчик события. Обработчики событий также используют управление очередностью для связывания своих исполняемых объектов в поток управления.

Элементы управления очередностью связывает два исполняемых объекта: ограничивающий исполняемый объект и исполняемый объект с ограничением. Ограничивающие исполняемые объекты выполняются перед исполняемыми объектами с ограничением, и в результате выполнения ограничивающих исполняемых объектов определяется, выполняются ли исполняемые объекты с ограничением. На следующей диаграмме представлены два исполняемых объекта, связанные элементы управлением очередностью.

Выполняемые объекты, соединенные управлением очередностью

При линейном потоке управления, то есть без ветвления, элементы управления очередностью сами управляют последовательностью, в которой запускаются задачи. Если поток управления содержит ветвления, ядро во время выполнения служб Службы Integration Services определяет порядок выполнения задачи и контейнеров, которые непосредственно следуют за ветвлением. Ядро во время выполнения также определяет порядок выполнения несвязанных рабочих процессов в потоке управления.

Архитектура вложенных контейнеров служб Службы Integration Services позволяет всем контейнерам, за исключением контейнеров сервера задач, которые могут инкапсулировать только одну задачу, содержать другие контейнеры, каждый из которых имеет собственный поток управления. Контейнеры «цикл по элементам», «цикл по каждому элементу» и контейнеры последовательности могут включать несколько задач и другие контейнеры, которые, в свою очередь, могут содержать несколько задач и контейнеров. Например, пакет с задачей «Скрипт» и контейнером последовательности имеет управление очередностью, которое связывает задачу «Скрипт» и контейнер последовательности. Контейнер последовательности содержит три задачи «Скрипт», и его управления очередностью связывают три задачи «Скрипт» в поток управления. На следующей диаграмме показаны управления очередностью в пакете с двумя уровнями вложенности.

Управление очередностью в пакете

Так как пакет находится наверху иерархии контейнеров служб Integration Services , несколько пакетов не могут быть связаны управлениями очередностью, однако можно добавить в пакет задачу «Выполнение пакета» и косвенно связать другой пакет в поток управления.

Управление очередностью можно настроить следующими способами:

  • Задать операцию вычисления. Управление очередностью использует ограничение по значению, выражение, оба эти элемента или один из них для определения, выполняется ли исполняемый объект с ограничением.

  • Если управление очередностью использует результат выполнения, в качестве результата выполнения могут быть заданы успех, ошибка или завершение.

  • Если управление очередностью использует результат оценки, может быть задано выражение, значением которого является логическое значение.

  • Укажите, оценивается ли управление очередностью одно или совместно с другими ограничениями, применимыми к исполняемому объекту с ограничением.

Операции вычисления

Службы Integration Services предоставляют следующие операции вычисления:

  • Ограничение, использующее только результат выполнения ограничивающего исполняемого объекта для определения, выполняется ли исполняемый объект с ограничением. Результатом выполнения приоритетного ограничивающего объекта может быть завершение, успех или ошибка. Это операция по умолчанию.

  • Выражение, оцениваемое для определения, выполняется ли исполняемый объект с ограничением. Если результатом оценки этого выражения является TRUE, исполняемый объект с ограничением выполняется.

  • Выражение и ограничение, объединяющие требования результатов выполнения ограничивающего исполняемого объекта и результатов, возвращаемых после оценки выражения.

  • Выражение или ограничение, использующие результаты выполнения ограничивающего исполняемого объекта или результаты, возвращаемые после оценки выражения.

Integration Services использует цвет для определения типа элементов управления очередностью. Успешное ограничение отмечается зеленым, неуспешное — красным, завершенное — синим. Для отображения текстовых меток в конструкторе служб Integration Services , обозначающих тип ограничения, необходимо настроить специальные возможности конструктора служб Integration Services .

Выражение должно быть действительным выражением служб Integration Services , оно может содержать функции, операторы, а также системные и пользовательские переменные. Дополнительные сведения см. в разделах Выражения в службах Integration Services (SSIS) и Переменные в службах Integration Services (SSIS).

Результаты выполнения

Управление очередностью может использовать следующие результаты выполнения поодиночке или в сочетании с выражением.

  • Завершение означает только то, что ограничивающий исполняемый объект завершился без учета результата, вследствие чего запустился исполняемый объект с ограничением.

  • Успешное окончание означает, что для выполнения ограничивающего объекта с ограничением необходимо, чтобы приоритетный исполняемый объект был успешно завершен.

  • Завершение с ошибкой означает, что для выполнения исполняемого объекта с ограничением необходимо, чтобы ограничивающий исполняемый объект завершился со сбоем.

Примечание

Только управления очередностью, являющиеся элементами одной коллекции Precedence Constraint , могут быть сгруппированы в логическом условии AND. Например, нельзя объединить элементы управления очередностью из двух контейнеров «цикл по каждому элементу».

Настройка свойств управления очередностью с помощью редактора управления очередностью

  1. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий необходимый пакет.

  2. Чтобы открыть пакет, дважды щелкните его в обозревателе решений.

  3. Перейдите на вкладку Поток управления .

  4. Дважды щелкните объект управления очередностью.

    Открывается Редактор управления очередностью .

  5. В раскрывающемся списке Операция оценки выберите операцию оценки.

  6. В раскрывающемся списке Значение выберите результат выполнения для ограничивающего исполняемого объекта.

  7. Если при выполнении операции оценки используется выражение, введите его в окне Выражение , а затем нажмите кнопку Проверка , чтобы оценить выражение.

    Примечание

    В именах переменных учитывается регистр букв.

  8. При подключении задач или контейнеров к исполняемому объекту с ограничением выберите Логическое И для обозначения того, что все предшествующие исполняемые модули должны возвращать true. Выберите Логическое ИЛИ , если необходимо, чтобы только один исполняемый объект возвращал значение true.

  9. Нажмите кнопку ОК , чтобы закрыть Редактор управления очередностью.

  10. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .

Редактор управления очередностью

Диалоговое окно Редактор ограничений очередностью используется для настройки ограничений очередностью.

Параметры

Вычислительная операция
Определяет вычислительную операцию, которую использует ограничение очередностью. Операциями могут быть: Ограничение, Выражение, Выражение и ограничение и Выражение или ограничение.

Значение
Укажите ограничение по значению: Успешно, Сбой или Завершение.

Примечание

Строка элементов управления очередностью имеет зеленый цвет для значения Успех, синий — для значения Завершениеи выделяется для значения Неудача.

Выражение
При использовании действий Выражение, Выражение и ограничениеили Выражение или ограничениевведите выражение или запустите построитель выражений для создания выражения. Выражение должно иметь логическое значение.

Тест
Проверка выражения.

Логическое И
Выберите, чтобы указать, что несколько ограничений очередности в одном исполняемом объекте должны учитываться вместе. Все ограничения должны иметь значение True.

Примечание

Этот тип элементов управления очередностью имеет вид сплошной зеленой или синей линии либо выделяется.

Логическое ИЛИ
Выберите, чтобы указать, что несколько ограничений очередности в одном исполняемом объекте должны учитываться вместе. По крайней мере, одно ограничение должно иметь значение True.

Примечание

Этот тип элементов управления очередностью имеет вид пунктирной зеленой или синей линии либо выделяется.

Настройка свойств управления очередностью в окне "Свойства"

  1. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий пакет, который необходимо изменить.

  2. Чтобы открыть пакет, дважды щелкните его в обозревателе решений.

  3. Перейдите на вкладку Поток управления . В области конструктора на вкладке Поток управления щелкните правой кнопкой мыши элемент управления очередностью и выберите пункт Свойства. В окне «Свойства» измените значения свойств.

  4. В окне Свойства установите следующие свойства элементов управления очередностью, доступные для чтения-записи.

    Свойство, доступное для чтения-записи Действие настройки
    Описание Введите описание.
    EvalOp Выберите операцию вычисления. Если выбрана одна из операций Expression, ExpressionAndConstantили ExpressionOrConstant , можно указать выражение.
    Expression Если операция вычисления включает в себя выражение, введите выражение. Выражение должно иметь логическое значение. Дополнительные сведения о языке выражений см. в разделе Выражения служб Integration Services (SSIS).
    LogicalAnd Установите значение LogicalAnd , чтобы указать, должно ли оцениваться управление очередностью совместно с другими элементами управлениями очередностью, когда несколько исполняемых объектов предшествуют исполняемому объекту с ограничениями и связаны с ним.
    name Обновите имя элемента управления очередностью.
    ShowAnnotation Укажите тип заметки, который должен использоваться. Выберите значение Never , чтобы отключить заметки, AsNeeded , чтобы разрешить заметки по запросу, ConstraintName , чтобы автоматически вставлять заметки, используя значения свойства Name, ConstraintDescription , чтобы автоматически вставлять заметки, используя значения свойства Description, и ConstraintOptions , чтобы автоматически вставлять заметки, используя значения свойств Value и Expression.
    Значение Если операция вычисления, указанная в свойстве EvalOP, содержит ограничение, выберите результат выполнения исполняемого объекта с ограничением.
  5. Закройте окно «Свойства».

  6. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .

Установка значения управления очередностью с помощью контекстного меню

  1. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий необходимый пакет.

  2. Чтобы открыть пакет, дважды щелкните его в обозревателе решений.

  3. Перейдите на вкладку Поток управления .

  4. В области конструктора на вкладке Поток управления щелкните правой кнопкой мыши объект управления очередностью, а затем выберите пункт Успешно, Сбойили Завершено.

  5. Чтобы сохранить обновленный пакет, щелкните Сохранить выбранные элементы в меню Файл .

Добавление выражений к элементам управления очередностью

Элементы управления очередностью могут использовать выражение для определения зависимости между двумя исполняемыми объектами: приоритетным исполняемым объектом и исполняемым объектом с ограничением. Исполняемыми объектами могут быть задачи или контейнеры. Выражение может быть использовано само по себе или в сочетании с результатом выполнения приоритетного исполняемого объекта. Выполнение любого исполняемого объекта может закончиться успешно или со сбоем. При настройке результата выполнения управления очередностью доступны варианты Success, Failureили Completion. Для вариантаSuccess требуется успешное выполнение ограничивающего исполняемого объекта, для Failure — его неудачное выполнение, а Completion означает, что ограничивающий исполняемый объект должен запускаться независимо от успешности выполнения приоритетной задачи. Дополнительные сведения см. в статье Precedence Constraints.

Выражение должно возвращать True или False и быть допустимым для Службы Integration Services . Выражение может использовать литералы, системные и пользовательские переменные, функции и операторы, определяемые грамматикой выражений служб Integration Services . Например выражение @Count == SQRT(144) + 10 использует переменную Count, функцию SQRT() и операторы сравнения (==) и сложения (+). Дополнительные сведения см. в статье Выражения в службах Integration Services (SSIS).

На следующей иллюстрации задача A связана с задачей B управлением очередностью, которое использует результат вычисления и выражение. Ограничение принимает значение Success, а выражением является @X >== @Z. Задача B является задачей с ограничением, которая запускается, только если задача A успешно завершается, а значение переменной X больше или равно значению переменной Z.

Управление очередностью между двумя задачами

Исполняемые объекты могут быть связаны множественными управлениями очередностью, которые содержат различные выражения. Например в следующем примере задачи B и C связаны с задачей A управлениями очередностью, которые используют результаты выполнения и выражения. Оба значения управления имеют значения Success. Но одно управление очередностью включает в себя выражение @X >== @Z, а другое — @X < @Z. В зависимости от значения переменных X и Zбудет запущена либо задача C, либо задача B.

Выражения управления очередностью

Добавить или изменить выражение можно с помощью Редактора управления очередностью в конструкторе служб Integration Services и окна свойств, предоставляемого средой SQL Server Data Tools (SSDT) . Однако окно свойств не поддерживает проверку синтаксиса выражения.

Если управление очередностью включает выражение, то в области конструктора на вкладке Поток управления рядом с правилом появится соответствующий значок, а всплывающее окно с подсказкой для значка будет содержать данное выражение.

Добавление выражения к элементу управления очередностью

  1. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий необходимый пакет.

  2. Чтобы открыть пакет, дважды щелкните его в обозревателе решений.

  3. Перейдите на вкладку Поток управления .

  4. В области конструктора на вкладке Поток управления дважды щелкните объект управления очередностью. Открывается Редактор управления очередностью .

  5. Выберите пункт Выражение, Выражение и ограничениеили Выражение или ограничение в списке Вычислительная операция .

  6. Введите выражение в текстовое поле Выражение или запустите построитель выражений, чтобы создать выражение.

  7. Чтобы проверить правильность синтаксиса выражения, нажмите кнопку Проверить.

  8. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .

Объединение значений выполнения и выражений

Следующая таблица описывает эффекты объединения ограничения значений выполнения и выражения в управлении очередностью.

Вычислительная операция Результат ограничения Результат выражения Запуск исполняемого объекта с ограничением
Ограничение True Недоступно True
Ограничение Неверно Недоступно Неверно
Expression Недоступно True True
Expression Недоступно Неверно Неверно
Ограничение и выражение True True True
Ограничение и выражение True Неверно Неверно
Ограничение и выражение False True Неверно
Ограничение и выражение False Неверно False
Ограничение или выражение True True True
Ограничение или выражение True False True
Ограничение или выражение False True True
Ограничение или выражение False Неверно False

Комплексные сценарии ограничения с несколькими элементами управления очередностью

Объект управления очередностью соединяет два исполняемых объекта: две задачи, два контейнера или задачу и контейнер. Они известны как приоритетный исполняемый объект и исполняемый объект с ограничением. Исполняемый объект с ограничениями может иметь несколько элементов управления очередностью. Дополнительные сведения см. в статье Precedence Constraints.

Сборка сложных сценариев ограничений путем их группирования позволяет создавать сложный поток управления в пакетах. Например, на следующей иллюстрации задача Г связана с задачей А ограничением Success , задача Г с задачей Б — ограничением Failure , а задачи Г и В — ограничением Success . Элементы управления очередностью между задачами Г и А, между Г и Б, а также между Г и В участвуют в логических связях типа and . Таким образом, для запуска задачи Г должна успешно запуститься задача А, аварийно завершиться задача Б и успешно запуститься задача В.

Задачи, связанные с элементами управления очередностью

Свойство LogicalAnd

Если задача или контейнер содержит несколько ограничений, то при помощи свойства LogicalAnd указывается, следует ли вычислять управление очередностью отдельно или вместе с остальными ограничениями.

Свойство LogicalAnd может быть задано в окне Редактор управления очередностью в конструкторе служб Integration Services или в окне настроек, предоставленных SQL Server Data Tools (SSDT) .

Настройка значения по умолчанию для управления очередностью

При первом запуске конструктора служб Integration Services значение по умолчанию для управления очередностью равно Успешно. Чтобы изменить в конструкторе служб Integration Services значение по умолчанию для управления очередностью, выполните следующие действия.

  1. Откройте среду SQL Server Data Tools (SSDT).

  2. В меню Сервис выберите команду Параметры.

  3. В диалоговом окне Параметры разверните узел Конструкторы бизнес-аналитики , затем разверните Конструкторы служб Integration Services.

  4. Щелкните Автосоединение для потока управления и выберите Подключить новую фигуру к выбранной фигуре по умолчанию.

  5. В раскрывающемся списке выберите либо Использовать ограничение ошибки для новой фигуры , либо Использовать ограничение завершения для новой фигуры.

  6. Нажмите кнопку ОК.

Создание элемента управления очередностью по умолчанию

  1. В среде SQL Server Data Tools (SSDT)откройте проект служб Службы Integration Services , содержащий необходимый пакет.

  2. Чтобы открыть пакет, дважды щелкните его в обозревателе решений.

  3. Перейдите на вкладку Поток управления .

  4. В области конструктора на вкладке Поток управления щелкните задачу или контейнер и перетащите их соединители на исполняемый объект, к которому нужно применить управление очередностью.

  5. Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .