Управление очередностью
Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure
Элементы управления очередностью связывает исполняемые объекты, контейнеры и задачи в пакетах в поток управления и задают условия, которые определяют, выполняются ли исполняемые объекты. В качестве исполняемого объекта могут быть контейнеры «цикл по элементам» и «цикл по каждому элементу», контейнеры последовательности, задача или обработчик события. Обработчики событий также используют управление очередностью для связывания своих исполняемых объектов в поток управления.
Элементы управления очередностью связывает два исполняемых объекта: ограничивающий исполняемый объект и исполняемый объект с ограничением. Ограничивающие исполняемые объекты выполняются перед исполняемыми объектами с ограничением, и в результате выполнения ограничивающих исполняемых объектов определяется, выполняются ли исполняемые объекты с ограничением. На следующей диаграмме представлены два исполняемых объекта, связанные элементы управлением очередностью.
При линейном потоке управления, то есть без ветвления, элементы управления очередностью сами управляют последовательностью, в которой запускаются задачи. Если поток управления ветви, подсистема выполнения служб Integration Services определяет порядок выполнения между задачами и контейнерами, которые немедленно следуют за ветвлением. Ядро во время выполнения также определяет порядок выполнения несвязанных рабочих процессов в потоке управления.
Архитектура вложенных контейнеров служб Integration Services позволяет всем контейнерам, за исключением контейнера узла задач, инкапсулирующего только одну задачу, включающую другие контейнеры, каждый из которых имеет собственный поток управления. Контейнеры «цикл по элементам», «цикл по каждому элементу» и контейнеры последовательности могут включать несколько задач и другие контейнеры, которые, в свою очередь, могут содержать несколько задач и контейнеров. Например, пакет с задачей «Скрипт» и контейнером последовательности имеет управление очередностью, которое связывает задачу «Скрипт» и контейнер последовательности. Контейнер последовательности содержит три задачи «Скрипт», и его управления очередностью связывают три задачи «Скрипт» в поток управления. На следующей диаграмме показаны управления очередностью в пакете с двумя уровнями вложенности.
Так как пакет находится в верхней части иерархии контейнеров служб SSIS, несколько пакетов не могут быть связаны с ограничениями приоритета; однако можно добавить задачу "Выполнить пакет" в пакет и косвенно связать другой пакет с потоком управления.
Управление очередностью можно настроить следующими способами:
Задать операцию вычисления. Управление очередностью использует ограничение по значению, выражение, оба эти элемента или один из них для определения, выполняется ли исполняемый объект с ограничением.
Если управление очередностью использует результат выполнения, в качестве результата выполнения могут быть заданы успех, ошибка или завершение.
Если управление очередностью использует результат оценки, может быть задано выражение, значением которого является логическое значение.
Укажите, оценивается ли управление очередностью одно или совместно с другими ограничениями, применимыми к исполняемому объекту с ограничением.
Операции вычисления
Службы Integration Services предоставляют следующие операции оценки:
Ограничение, использующее только результат выполнения ограничивающего исполняемого объекта для определения, выполняется ли исполняемый объект с ограничением. Результатом выполнения приоритетного ограничивающего объекта может быть завершение, успех или ошибка. Это операция по умолчанию.
Выражение, оцениваемое для определения, выполняется ли исполняемый объект с ограничением. Если результатом оценки этого выражения является TRUE, исполняемый объект с ограничением выполняется.
Выражение и ограничение, объединяющие требования результатов выполнения ограничивающего исполняемого объекта и результатов, возвращаемых после оценки выражения.
Выражение или ограничение, использующие результаты выполнения ограничивающего исполняемого объекта или результаты, возвращаемые после оценки выражения.
Конструктор служб SSIS использует цвет для определения типа ограничения приоритета. Успешное ограничение отмечается зеленым, неуспешное — красным, завершенное — синим. Чтобы отобразить текстовые метки в конструкторе служб SSIS, отображающие тип ограничения, необходимо настроить специальные возможности конструктора служб SSIS.
Выражение должно быть допустимым выражением служб SSIS, и оно может включать функции, операторы и системные и пользовательские переменные. Дополнительные сведения см. в разделах Выражения в службах Integration Services (SSIS) и Переменные в службах Integration Services (SSIS).
Результаты выполнения
Управление очередностью может использовать следующие результаты выполнения поодиночке или в сочетании с выражением.
Завершение означает только то, что ограничивающий исполняемый объект завершился без учета результата, вследствие чего запустился исполняемый объект с ограничением.
Успешное окончание означает, что для выполнения ограничивающего объекта с ограничением необходимо, чтобы приоритетный исполняемый объект был успешно завершен.
Завершение с ошибкой означает, что для выполнения исполняемого объекта с ограничением необходимо, чтобы ограничивающий исполняемый объект завершился со сбоем.
Примечание.
Только управления очередностью, являющиеся элементами одной коллекции Precedence Constraint , могут быть сгруппированы в логическом условии AND. Например, нельзя объединить элементы управления очередностью из двух контейнеров «цикл по каждому элементу».
Настройка свойств управления очередностью с помощью редактора управления очередностью
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий нужный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку Поток управления .
Дважды щелкните объект управления очередностью.
Открывается Редактор управления очередностью .
В раскрывающемся списке Операция оценки выберите операцию оценки.
В раскрывающемся списке Значение выберите результат выполнения для ограничивающего исполняемого объекта.
Если при выполнении операции оценки используется выражение, введите его в окне Выражение , а затем нажмите кнопку Проверка , чтобы оценить выражение.
Примечание.
В именах переменных учитывается регистр букв.
При подключении задач или контейнеров к исполняемому объекту с ограничением выберите Логическое И для обозначения того, что все предшествующие исполняемые модули должны возвращать true. Выберите Логическое ИЛИ , если необходимо, чтобы только один исполняемый объект возвращал значение true.
Нажмите кнопку ОК , чтобы закрыть Редактор управления очередностью.
Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .
Редактор управления очередностью
Диалоговое окно Редактор ограничений очередностью используется для настройки ограничений очередностью.
Параметры
Вычислительная операция
Определяет вычислительную операцию, которую использует ограничение очередностью. Операциями могут быть: Ограничение, Выражение, Выражение и ограничениеи Выражение или ограничение.
Value
Укажите ограничение по значению: Успешно, Сбойили Завершение.
Примечание.
Строка элементов управления очередностью имеет зеленый цвет для значения Успех, синий — для значения Завершениеи выделяется для значения Неудача.
Выражение
При использовании действий Выражение, Выражение и ограничениеили Выражение или ограничениевведите выражение или запустите построитель выражений для создания выражения. Выражение должно иметь логическое значение.
Тестирование
Проверка выражения.
Логическое И
Выберите, чтобы указать, что несколько ограничений очередности в одном исполняемом объекте должны учитываться вместе. Все ограничения должны иметь значение True.
Примечание.
Этот тип элементов управления очередностью имеет вид сплошной зеленой или синей линии либо выделяется.
Логическое ИЛИ
Выберите, чтобы указать, что несколько ограничений очередности в одном исполняемом объекте должны учитываться вместе. По крайней мере, одно ограничение должно иметь значение True.
Примечание.
Этот тип элементов управления очередностью имеет вид пунктирной зеленой или синей линии либо выделяется.
Настройка свойств управления очередностью в окне "Свойства"
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий пакет, который требуется изменить.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку "Поток управления". На вкладке "Поток управления" на вкладке "Поток управления" щелкните правой кнопкой мыши ограничение приоритета и выберите пункт "Свойства". В окне «Свойства» измените значения свойств.
В окне Свойства установите следующие свойства элементов управления очередностью, доступные для чтения-записи.
Свойство, доступное для чтения-записи Действие настройки Description Предоставьте описание. EvalOp Выберите операцию вычисления. Если выбрана одна из операций Expression, ExpressionAndConstantили ExpressionOrConstant , можно указать выражение. Expression Если операция вычисления включает в себя выражение, введите выражение. Выражение должно иметь логическое значение. Дополнительные сведения о языке выражений см. в разделе Выражения служб Integration Services (SSIS). LogicalAnd Установите значение LogicalAnd , чтобы указать, должно ли оцениваться управление очередностью совместно с другими элементами управлениями очередностью, когда несколько исполняемых объектов предшествуют исполняемому объекту с ограничениями и связаны с ним. Имя. Обновите имя элемента управления очередностью. ShowAnnotation Укажите тип заметки, который должен использоваться. Выберите значение Never , чтобы отключить заметки, AsNeeded , чтобы разрешить заметки по запросу, ConstraintName , чтобы автоматически вставлять заметки, используя значения свойства Name, ConstraintDescription , чтобы автоматически вставлять заметки, используя значения свойства Description, и ConstraintOptions , чтобы автоматически вставлять заметки, используя значения свойств Value и Expression. Значение Если операция вычисления, указанная в свойстве EvalOP, содержит ограничение, выберите результат выполнения исполняемого объекта с ограничением. Закройте окно Свойства.
Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .
Установка значения управления очередностью с помощью контекстного меню
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий нужный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку Поток управления .
В области конструктора на вкладке Поток управления щелкните правой кнопкой мыши объект управления очередностью, а затем выберите пункт Успешно, Сбойили Завершено.
Чтобы сохранить обновленный пакет, щелкните Сохранить выбранные элементы в меню Файл .
Добавление выражений к элементам управления очередностью
Элементы управления очередностью могут использовать выражение для определения зависимости между двумя исполняемыми объектами: приоритетным исполняемым объектом и исполняемым объектом с ограничением. Исполняемыми объектами могут быть задачи или контейнеры. Выражение может быть использовано само по себе или в сочетании с результатом выполнения приоритетного исполняемого объекта. Выполнение любого исполняемого объекта может закончиться успешно или со сбоем. При настройке результата выполнения управления очередностью доступны варианты Success, Failureили Completion. Для вариантаSuccess требуется успешное выполнение ограничивающего исполняемого объекта, для Failure — его неудачное выполнение, а Completion означает, что ограничивающий исполняемый объект должен запускаться независимо от успешности выполнения приоритетной задачи. Дополнительные сведения см. в статье Precedence Constraints.
Выражение должно иметь значение True или False , и оно должно быть допустимым выражением служб Integration Services. Выражение может использовать литералы, системные и пользовательские переменные, а также функции и операторы, которые предоставляет грамматика выражений SSIS. Например выражение @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.
Можно добавить или изменить выражение с помощью редактора ограничений приоритета в конструкторе служб SSIS и окно свойств, которые предоставляет SQL Server Data Tools (SSDT). Однако окно свойств не поддерживает проверку синтаксиса выражения.
Если управление очередностью включает выражение, то в области конструктора на вкладке Поток управления рядом с правилом появится соответствующий значок, а всплывающее окно с подсказкой для значка будет содержать данное выражение.
Добавление выражения к элементу управления очередностью
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий нужный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку Поток управления .
В области конструктора на вкладке Поток управления дважды щелкните объект управления очередностью. Открывается Редактор управления очередностью .
Выберите пункт Выражение, Выражение и ограничениеили Выражение или ограничение в списке Вычислительная операция .
Введите выражение в текстовое поле Выражение или запустите построитель выражений, чтобы создать выражение.
Чтобы проверить правильность синтаксиса выражения, нажмите кнопку Проверить.
Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .
Объединение значений выполнения и выражений
Следующая таблица описывает эффекты объединения ограничения значений выполнения и выражения в управлении очередностью.
Вычислительная операция | Результат ограничения | Результат выражения | Запуск исполняемого объекта с ограничением |
---|---|---|---|
Ограничение | Истина | Н/П | Истина |
Ограничение | False | Н/П | False |
Expression | Н/П | Истина | Истина |
Expression | Н/П | False | False |
Ограничение и выражение | Истина | True | Истина |
Ограничение и выражение | Истина | Неверно | False |
Ограничение и выражение | False | True | False |
Ограничение и выражение | False | False | False |
Ограничение или выражение | Истина | True | Истина |
Ограничение или выражение | Истина | False | Истина |
Ограничение или выражение | False | True | Истина |
Ограничение или выражение | False | False | False |
Комплексные сценарии ограничения с несколькими элементами управления очередностью
Объект управления очередностью соединяет два исполняемых объекта: две задачи, два контейнера или задачу и контейнер. Они известны как приоритетный исполняемый объект и исполняемый объект с ограничением. Исполняемый объект с ограничениями может иметь несколько элементов управления очередностью. Дополнительные сведения см. в статье Precedence Constraints.
Сборка сложных сценариев ограничений путем их группирования позволяет создавать сложный поток управления в пакетах. Например, на следующей иллюстрации задача Г связана с задачей А ограничением Success , задача Г с задачей Б — ограничением Failure , а задачи Г и В — ограничением Success . Элементы управления очередностью между задачами Г и А, между Г и Б, а также между Г и В участвуют в логических связях типа and . Таким образом, для запуска задачи Г должна успешно запуститься задача А, аварийно завершиться задача Б и успешно запуститься задача В.
Свойство LogicalAnd
Если задача или контейнер содержит несколько ограничений, то при помощи свойства LogicalAnd указывается, следует ли вычислять управление очередностью отдельно или вместе с остальными ограничениями.
Можно задать свойство LogicalAnd с помощью редактора ограничений приоритета в конструкторе служб SSIS или в окно свойств, которые предоставляет SQL Server Data Tools (SSDT).
Настройка значения по умолчанию для управления очередностью
При первом использовании конструктора служб SSIS значение по умолчанию ограничения приоритета — Success. Выполните следующие действия, чтобы настроить конструктор служб SSIS для использования другого значения по умолчанию для ограничений приоритета.
откройте SQL Server Data Tools (SSDT).
В меню Сервис выберите пункт Параметры.
В диалоговом окне Параметры разверните узел Конструкторы бизнес-аналитики , затем разверните Конструкторы служб Integration Services.
Щелкните Автосоединение для потока управления и выберите Подключить новую фигуру к выбранной фигуре по умолчанию.
В раскрывающемся списке выберите либо Использовать ограничение ошибки для новой фигуры , либо Использовать ограничение завершения для новой фигуры.
Щелкните OK.
Создание элемента управления очередностью по умолчанию
В SQL Server Data Tools (SSDT) откройте проект служб Integration Services, содержащий нужный пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Перейдите на вкладку Поток управления .
В области конструктора на вкладке Поток управления щелкните задачу или контейнер и перетащите их соединители на исполняемый объект, к которому нужно применить управление очередностью.
Чтобы сохранить обновленный пакет, выберите пункт Сохранить выбранные элементы в меню Файл .