Поделиться через


Контейнер «цикл по каждому элементу»

Область применения: среда выполнения интеграции SSIS SQL Server в Фабрика данных Azure

Контейнер «цикл по каждому элементу» определяет повторяющийся поток управления в пакете. Реализация цикла схожа с циклической структурой Foreach в языках программирования. Организация цикла в пакете происходит с помощью перечислителя Foreach. Контейнер «цикл по каждому элементу» повторяет операции потока управления для каждого члена заданного перечислителя.

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

  • Перечислитель ADO по каждой строке для перечисления строк в таблицах. Например, можно получить все строки в наборе записей ADO.

    Назначение «Набор записей» сохраняет данные в памяти в наборе записей, который хранится в переменной пакета, относящейся к типу данных Object . Как правило, используется контейнер «цикл по каждому элементу» с перечислителем ADO по каждой строке для обработки одной строки набора записей за раз. Переменная, указанная для перечислителя ADO по каждой строке, должна иметь тип данных Object. Дополнительные сведения о назначении "Набор записей" см. в разделе Использование назначения "Набор записей".

  • Перечислитель набора строк схемы ADO.NET для перечисления сведений схемы об источнике данных. Например, можно перечислить и получить список таблиц в базе данных SQL Server AdventureWorks2022.

  • Перечислитель с циклом по каждому файлу для перечисления файлов в папке. Перечислитель может просматривать вложенные папки. Например, можно считать все файлы с расширением LOG, находящиеся в папке Windows и всех вложенных в нее папках. Обратите внимание, что нельзя указать порядок извлечения файлов.

  • Перечислитель по объекту из переменной для перечисления объектов, содержащихся в заданной переменной. Перечисляемый объект может быть массивом, ADO.NET DataTable, перечислителем служб Integration Services и т. д. Например, можно перечислить значения массива, в которых содержатся имена серверов.

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

  • Перечислитель по набору узлов для перечисления результирующего набора выражения XPath. Например, указанное выражение может перечислить и вывести список всех авторов классического периода: /authors/author[@period='classical'].

  • Перечислитель SMO foreach для перечисления объектов sql Server Management Objects (SMO). Например, можно перечислить и получить список представлений в базе данных SQL Server.

  • Перечислитель с циклом по каждому файлу HDFS позволяет перечислить файлы HDFS в указанном расположении HDFS.

  • Перечислитель больших двоичных объектов Azure по циклу Foreach позволяет перечислить большие двоичные объекты в контейнере больших двоичных объектов в службе хранилища Azure.

  • Перечислитель файлов ADLS по циклу Foreach для перечисления файлов в каталоге Azure Data Lake Store.

  • Перечислитель файлов Data Lake Storage 2-го поколения по циклу Foreach для перечисления файлов в каталоге Azure Data Lake Store 2-го поколения.

На приведенной ниже диаграмме представлен контейнер «цикл по каждому элементу», в котором содержится задача «Файловая система». В цикле «по каждому элементу» используется перечислитель с циклом по каждому файлу, а задача «Файловая система» настроена для копирования файла. В заданной перечислителем папке цикл повторяется четыре раза и копирует четыре файла.

Контейнер

Для обновления свойства объекта в пакете, соответствующего значению коллекции перечислителя, можно использовать сочетание переменных и выражений для свойств. Вначале необходимо сопоставить значение коллекции с пользовательской переменной, а затем задать выражение для свойства, которое использует указанную переменную. Например, значение коллекции, заданное в перечислителе с циклом по каждому файлу, сопоставляется с переменной с именем MyFile , а указанная переменная затем используется в выражении для свойства Subject задачи "Отправка почты". Во время выполнения пакета свойству Subject присваивается имя файла на каждой итерации цикла. Дополнительные сведения см. в разделе Использование выражений свойств в пакетах.

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

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

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

Типы перечислителей

Перечислители являются настраиваемыми. Для настройки необходимо предоставлять различные сведения в зависимости от перечислителя.

В приведенной ниже таблице перечисляются все типы сведений для разных типов перечислителей.

Перечислитель Требования настройки
Перечислитель ADO по каждой строке Задайте исходную переменную для объекта ADO, а также режим перечислителя. Переменная должна иметь тип Object.
Перечислитель по набору строк схемы ADO.NET Задайте соединение с базой данных, а также перечисляемую схему.
Перечислитель с циклом по каждому файлу Задайте папку и файлы для перечисления, формат имен полученных файлов, а также укажите, нужно ли просматривать вложенные папки.
Перечислитель по объекту из переменной Задайте переменную, которая содержит объекты перечисления.
Перечислитель по каждому элементу Задайте элементы в коллекции перечислителя по каждому элементу, включая столбцы и типы данных в них.
Перечислитель по набору узлов Задайте источник XML-документа, а также настройте операцию XPath.
Перечислитель по объектам SMO Задайте соединение с базой данных, а также перечисляемые объекты SMO.
Перечислитель с циклом по каждому файлу HDFS Задайте папку и файлы для перечисления, формат имен полученных файлов, а также укажите, нужно ли просматривать вложенные папки.
Большой двоичный объект Azure Foreach Укажите контейнер Хранилище BLOB-объектов Azure, содержащий большие двоичные объекты, которые необходимо перечислить.
Файл ADLS по циклу Foreach Укажите каталог Azure Data Lake Store, который содержит перечисляемые файлы.
Файл Data Lake Storage 2-го поколения по циклу Foreach Укажите с остальными параметрами каталог Azure Data Lake Storage 2-го поколения, который содержит перечисляемые файлы.

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

Службы Integration Services включают контейнер "Цикл foreach", элемент потока управления, который упрощает включение конструкции цикла, которая перечисляет файлы и объекты в потоке управления пакета. Дополнительные сведения см. в разделе Контейнер «цикл по каждому элементу».

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

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

Добавление и настройка контейнера "Цикл по каждому элементу"

  1. Добавьте к пакету контейнер «цикл по каждому элементу». Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.

  2. Добавьте в контейнер «цикл по каждому элементу» задачи и контейнеры. Дополнительные сведения см. в разделе Добавление задачи или контейнера в поток управления или удаление их из него.

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

  4. Задайте параметры контейнера «цикл по каждому элементу». Дополнительные сведения см. в разделе Настройка контейнера «цикл по каждому элементу».

Настройка контейнера «цикл по каждому элементу»

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

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

  2. Перейдите на вкладку Поток управления и дважды щелкните "Цикл по каждому элементу".

  3. В диалоговом окне Редактор циклов по каждому элементу нажмите Общие и при необходимости измените имя и описание контейнера «цикл по каждому элементу».

  4. Щелкните Коллекция и выберите тип перечислителя из списка Перечислитель .

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

    • Чтобы использовать перечислитель с циклом по каждому файлу, укажите папку, в которой содержатся необходимые для перечисления файлы, фильтр для имени и типа файла и нужно ли возвращать полное имя файла. Также укажите, нужно ли для поиска файлов обращаться ко вложенным папкам.

    • Чтобы использовать перечислитель по каждому элементу, нажмите кнопку Столбцыи в диалоговом окне Столбцы For Each Item для добавления столбцов нажмите кнопку Добавить . Выберите тип данных из списка Тип данных для каждого столбца и нажмите кнопку ОК.

      Введите значения в столбцах или выберите их из списков.

      Примечание.

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

      Примечание.

      Если значение несовместимо с типом данных столбца, текст будет выделен.

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

      Если создается новая переменная, установите ее свойства в диалоговом окне Добавить переменную .

    • Чтобы использовать перечислитель ADO.NET по набору строк схемы, выберите существующее соединение ADO.NET или нажмите Создать соединение в списке Соединение , а затем выберите схему.

      При необходимости нажмите кнопку Задать ограничения и выберите ограничения схемы, переменную, содержащую значение ограничения, или введите значение ограничения, а затем нажмите кнопку ОК.

    • Чтобы использовать перечислитель по объекту из переменной, выберите переменную из списка Переменные .

    • Чтобы использовать перечислитель по набору узлов, щелкните DocumentSourceType, выберите из списка тип источника, а затем щелкните DocumentSource. В зависимости от значения, выбранного для DocumentSourceType, выберите из списка переменную или подключение файла, создайте новую переменную или подключение файла или введите источник XML в Редакторе исходного текста документа.

      Затем щелкните EnumerationType и выберите тип перечисления из списка. Если значением EnumerationType является Navigator, Node или NodeText, щелкните OuterXPathStringSourceType и выберите тип источника, затем щелкните OuterXPathString. В зависимости от значения, установленного для OuterXPathStringSourceType, выберите из списка переменную или подключение файла, создайте новую переменную или подключение файла или введите строку для внешнего выражения языка пути XML (XPath).

      Если значением EnumerationType является ElementCollection, задайте OuterXPathStringSourceType и OuterXPathString, как описано выше. Затем щелкните InnerElementType и выберите тип перечисления для внутренних элементов, потом щелкните InnerXPathStringSourceType. В зависимости от значения, установленного для InnerXPathStringSourceType, выберите переменную или подключение файла или введите строку для внутреннего выражения XPath.

    • Чтобы использовать перечислитель по объектам SMO, выберите существующее соединение ADO.NET или нажмите Создать соединение в списке Соединения , затем либо введите строку для использования, либо нажмите Обзор. Если выбран Обзор, в диалоговом окне Выбор перечисления SMO выберите необходимый для перечисления тип объекта и тип перечисления, а затем нажмите кнопку ОК.

  6. При необходимости нажмите кнопку обзора (…) в текстовом поле Выражения на странице Коллекция, чтобы создать выражения, при помощи которых происходит обновление значений свойств. Дополнительные сведения см. в разделе Добавление или изменение выражение свойства.

    Примечание.

    Свойства, представленные в списке Свойства, зависят от перечислителя.

  7. При необходимости нажмите Сопоставления переменной для сопоставления свойств объектов со значением коллекции, а затем сделайте следующее:

    1. В диалоговом окне Переменные или щелкните < <New Variable> >, чтобы создать ее.

    2. Если создается новая переменная, установите ее свойства в диалоговом окне Добавить переменные и нажмите кнопку ОК.

    3. При использовании перечислителя по каждому элементу можно обновить значение индекса в списке Индекс .

      Примечание.

      Значение индекса показывает, какой столбец в элементе нужно сопоставить с переменной. Только перечислитель по каждому элементу может использовать значение индекса, отличное от 0.

  8. При необходимости нажмите Выражения и на странице Выражения создайте выражения свойств для свойств контейнера «цикл по каждому элементу». Дополнительные сведения см. в разделе Добавление или изменение выражение свойства.

  9. Щелкните OK.

Страница "Общие" — редактор циклов по каждому элементу

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

Дополнительные сведения о контейнере "цикл по каждому элементу" и его настройке см. в разделах Контейнер "цикл по каждому элементу" и Настройка контейнера "цикл по каждому элементу".

Параметры

Имя
Содержит уникальное имя для контейнера «цикл по каждому элементу». Это имя используется в качестве метки в значке задачи и в журналах.

Примечание.

Имена объектов в пределах пакета должны быть уникальными.

Description
Введите описание контейнера «цикл по каждому элементу».

Страница "Коллекция" — редактор циклов по каждому элементу

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

Дополнительные сведения о контейнере "цикл по каждому элементу" и его настройке см. в разделах Контейнер "цикл по каждому элементу" и Настройка контейнера "цикл по каждому элементу".

Статические параметры

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

значение Описание
Перечислитель с циклом по каждому файлу Перечисляет файлы. При выборе этого значения в разделе Перечислитель с циклом по каждому файлуотображаются динамические параметры.
Перечислитель элементов Foreach Перечисляет значения в элементе. При выборе этого значения в разделе Перечислитель элементов Foreachотображаются динамические параметры.
Перечислитель ADO Foreach Перечисляет таблицы или строки в таблицах. При выборе этого значения в разделе Перечислитель ADO по каждой строкеотображаются динамические параметры.
Перечислитель Foreach ADO.NET набора строк схемы Перечисляет строки схемы. При выборе этого значения в разделе Перечислитель ADO.NET по информации о схемеотображаются динамические параметры.
Перечислитель Foreach из переменной Перечисляет значения в переменной. При выборе этого значения в разделе Перечислитель Foreach из переменнойотображаются динамические параметры.
Перечислитель Foreach NodeList Перечисляет узлы в XML-документе. При выборе этого значения в разделе Перечислитель Foreach Nodelistотображаются динамические параметры.
Перечислитель по объектам SMO Перечисляет объекты SMO. При выборе этого значения в разделе Перечислитель по объектам SMOотображаются динамические параметры.
Перечислитель с циклом по каждому файлу HDFS Перечисляет файлы HDFS в указанном расположении HDFS. При выборе этого значения в разделе Перечислитель с циклом по каждому файлу HDFSотображаются динамические параметры.
Перечислитель по большим двоичным объектам Azure Перечисляет файлы больших двоичных объектов в указанном расположении больших двоичных объектов. При выборе этого значения в разделе Перечислитель по большим двоичным объектам Azureотображаются динамические параметры.
Перечислитель с циклом по каждому файлу ADLS Перечисляет файлы в указанном каталоге Data Lake Store. При выборе этого значения в разделе Перечислитель с циклом по каждому файлу ADLS отображаются динамические параметры.
Перечислитель файлов Data Lake Storage 2-го поколения по циклу Foreach Перечисляет файлы в указанном каталоге Data Lake Storage 2-го поколения. При выборе этого значения в разделе Перечислитель файлов Data Lake Storage 2-го поколения по циклу Foreach отображаются динамические параметры.

Выражения
Щелкните или разверните узел Выражения , чтобы посмотреть список существующих выражений свойств. Нажмите кнопку с многоточием (…), чтобы добавить выражение свойства для свойства перечислителя или изменить и оценить существующее выражение свойства.

Связанные разделы: выражения служб Integration Services (SSIS), редактор выражений свойств, построитель выражений

Динамические параметры перечислителя

Перечислитель = перечислитель с циклом по каждому файлу

Используйте перечислитель с циклом по каждому файлу для перечисления файлов в папке. Например: если цикл по каждому элементу включает задачу «Выполнение SQL», то можно использовать перечислитель с циклом по каждому файлу для перечисления файлов, содержащих инструкции SQL, которые выполняются задачей «Выполнение SQL». Перечислитель может быть настроен для обработки вложенных папок.

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

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

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

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

Папка
Укажите путь к корневой папке для перечисления.

Обзор
Используйте обзор, чтобы установить месторасположение корневой папки.

Файлы
Укажите файлы для перечисления.

Примечание.

Используйте символы-шаблоны (*), чтобы указать файлы, которые необходимо включить в коллекцию. Например, чтобы включить файлы с именами, содержащими abc, используйте фильтр *abc*.

При указании расширения имени файла перечислитель возвращает также файлы, имеющие такое же расширение и добавленные в конец символы (Точно так же себя ведет команда dir операционной системы, которая также проверяет имена файлов в формате 8.3 на предмет обратной совместимости.) Это поведение перечислителя может привести к непредвиденным результатам. Например, при перечислении только файлов Excel 2003 указывается «*.xls». Однако перечислитель возвращает также файлы Excel 2007, так как они имеют расширение XLSX.

Можно указать файлы, включаемые в коллекцию, с помощью выражения. Для этого разверните узел Выражения на странице Коллекция, выберите свойство FileSpec и нажмите кнопку с многоточием (…), чтобы добавить выражение свойства.

Полностью заданный
Выберите этот параметр, чтобы получить путь с полной спецификацией к именам файлов. Если в параметрах файлов заданы подстановочные знаки, возвращаемые полные пути соответствуют этому фильтру.

Только имя
Выберите, чтобы получить только имена файлов. Если в параметрах файлов заданы символы-шаблоны, возвращаемые имена файлов соответствуют этому фильтру.

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

Просмотр вложенных папок
Выберите, чтобы включить вложенные папки в перечисление.

Перечислитель = перечислитель по каждому элементу

Используйте перечислитель по каждому элементу для перечисления элементов в коллекции. Элементы в коллекции определяются указанием столбцов и значений столбцов. Столбцы в строке определяют элемент. Например: элемент, определяющий исполняемые объекты для запуска задачей «Выполнение процесса» и рабочий каталог этой задачи, содержит два столбца; один предназначен для указания имен исполняемых объектов, другой — для указания рабочего каталога. Количество строк определяет число повторений цикла. Если таблица содержит 10 строк, значит, цикл повторяется 10 раз.

Чтобы обновить свойства задачи «Выполнение процесса», можно сопоставить переменные с элементами столбцов с помощью индекса столбца. Первый столбец, определенный в перечислителе элементов, имеет значение индекса 0, второй столбец — 1 и так далее. Значения переменных обновляются при каждом повторении цикла. Свойства Executable и WorkingDirectory задачи «Выполнение процесса» могут затем быть обновлены при помощи выражений свойств, использующих данные переменные.

Задание элементов в коллекции "Цикл по каждому элементу"
Задайте значение для каждого столбца в таблице.

Примечание.

Новая строка автоматически добавляется к таблице после ввода значений в столбцы строки.

Примечание.

Если предоставленные значения несовместимы с типом данных столбца, текст выделяется красным цветом.

Тип данных столбца
Перечисляет тип данных активного столбца.

Удалить
Выберите элемент и нажмите Удалить , чтобы удалить его из списка.

Число столбцов
Нажмите, чтобы настроить тип данных столбца в элементе.

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

Перечислитель = перечислитель ADO по каждой строке

Перечислитель ADO по каждой строке можно использовать для перечисления строк или таблиц в объекте ADO или ADO.NET, который хранится в переменной. Например: если цикл по каждому элементу включает задачу «Скрипт», которая записывает набор данных в переменную, можно использовать перечислитель ADO по каждой строке для перечисления строк в наборе данных. Если переменная содержит набор данных ADO.NET, то перечислитель может быть настроен на перечисление строк в нескольких таблицах или на перечисление самих таблиц.

Переменная источника объекта ADO
Выберите пользовательскую переменную в списке или нажмите кнопку <Создать переменную...>, чтобы создать ее.

Примечание.

Переменная должна иметь тип данных Object; в противном случае возникнет ошибка.

См. также:Переменные Integration Services (SSIS), Добавление переменной

Строки в первой таблице
Выберите для перечисления только строк в первой таблице.

Строки во всех таблицах (только набор данных ADO.NET)
Выберите для перечисления строк во всех таблицах. Данный параметр доступен, только если все объекты для перечисления являются элементами одного набора данных ADO.NET.

Все таблицы (только для наборов данных ADO.NET)
Выберите для перечисления только таблиц.

Перечислитель = перечислитель по набору строк схемы ADO.NET

Перечислитель по набору строк схемы ADO.NET можно использовать для перечисления схем для указанного источника данных. Например: если цикл по каждому элементу включает задачу «Выполнение SQL», то можно использовать перечислитель по каждому набору строк схемы ADO.NET для перечисления схем, таких как столбцы базы данных AdventureWorks , а задачу «Выполнение SQL» — для извлечения разрешений схемы.

Соединение
Выберите в списке диспетчер подключений ADO.NET или нажмите кнопку <Создать подключение…>, чтобы создать его.

Внимание

Диспетчер соединений ADO.NET должен использовать поставщика данных .NET для OLE DB. При подключении к SQL Server рекомендуемый поставщик — это собственный клиент SQL Server, указанный в разделе поставщиков .NET для OleDb диалогового окна диспетчер подключений.

Связанные разделы: ADO диспетчер подключений, настройка ADO.NET диспетчер подключений

Схема
Выберите схему для перечисления.

Задать ограничения
Задайте ограничения, которые необходимо применить к указанной схеме.

Связанные разделы: диалоговое окно "Ограничения схемы"

Перечислитель = перечислитель по объекту из переменной

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

Переменная
Выберите переменную в списке или щелкните <Создать переменную...>, чтобы создать ее.

См. также:Переменные Integration Services (SSIS), Добавление переменной

Перечислитель = перечислитель по набору узлов

Перечислитель по набору узлов можно использовать для перечисления набора XML-узлов, которые являются результатом применения выражения XPath к XML-файлу. Например: если цикл по каждому элементу включает задачу «Скрипт», то перечислитель по набору узлов можно использовать для передачи от XML-файла к задаче «Скрипт» значения, которое удовлетворяет критерию выражения XPath.

Выражение XPath, применяемое к XML-файлу, является внешней операцией XPath, сохраненной в свойстве OuterXPathString. Если тип перечисления XPath установлен в значение ElementCollection, то перечислитель Foreach NodeList может применять внутреннее выражение XPath, сохраненное в свойстве InnerXPathString, к коллекции элементов.

Дополнительные сведения по работе с XML-документами и данными см. в разделе «Employing XML in the .NET Framework» в библиотеке MSDN.

DocumentSourceType
Выберите тип источника XML-документа. Параметры этого свойства приведены в следующей таблице.

значение Описание
Прямой ввод Задайте источник для XML-документа.
Соединение с файлом Выберите файл, содержащий XML-документ.
Переменная В качестве источника задайте переменную, содержащую XML-документ.

DocumentSource
Если параметр DocumentSourceType имеет значение Прямой ввод, укажите код XML или нажмите кнопку с многоточием (…), чтобы указать XML с помощью диалогового окна Редактор исходного текста документа.

Если DocumentSourceType имеет значение Соединение с файлом, выберите диспетчер подключения файлов или нажмите кнопку <Создать подключение...>, чтобы создать его.

Связанные разделы: диспетчер подключений файлов, редактор диспетчер подключений файлов

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

См. также:Переменные Integration Services (SSIS), Добавление переменной.

EnumerationType
Выберите тип перечисления из списка. Параметры этого свойства приведены в следующей таблице.

значение Описание
Navigator Перечисление с помощью компонента XPathNavigator.
Node Перечисление узлов, возвращенных операцией XPath.
NodeText Перечисление текстовых узлов, возвращенных операцией XPath.
ElementCollection Перечисление узлов элементов, возвращенных операцией XPath.

OuterXPathStringSourceType
Выберите тип источника строки XPath. Параметры этого свойства приведены в следующей таблице.

значение Описание
Прямой ввод Задайте источник для XML-документа.
Соединение с файлом Выберите файл, содержащий XML-документ.
Переменная В качестве источника задайте переменную, содержащую XML-документ.

OuterXPathString
Если OuterXPathStringSourceType имеет значение Прямой ввод, укажите строку XPath.

Если OuterXPathStringSourceType имеет значение Соединение с файлом, выберите диспетчер подключения файлов или нажмите кнопку <Создать подключение...>, чтобы создать его.

Связанные разделы: диспетчер подключений файлов, редактор диспетчер подключений файлов

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

См. также:Переменные Integration Services (SSIS), Добавление переменной.

InnerElementType
Если EnumerationType имеет значение ElementCollection, выберите из списка тип внутреннего элемента.

InnerXPathStringSourceType
Выбрать тип источника внутренней строки XPath. Параметры этого свойства приведены в следующей таблице.

значение Описание
Прямой ввод Задайте источник для XML-документа.
Соединение с файлом Выберите файл, содержащий XML-документ.
Переменная В качестве источника задайте переменную, содержащую XML-документ.

InnerXPathString
Если InnerXPathStringSourceType имеет значение Прямой ввод, укажите строку XPath.

Если InnerXPathStringSourceType имеет значение Соединение с файлом, выберите диспетчер подключения файлов или нажмите кнопку <Создать подключение...>, чтобы создать его.

Связанные разделы: диспетчер подключений файлов, редактор диспетчер подключений файлов

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

См. также:Переменные Integration Services (SSIS), Добавление переменной.

Перечислитель = перечислитель по объектам SMO

Перечислитель по объектам SMO используется для перечисления объектов SMO. Например: если цикл по каждому элементу включает задачу "Выполнение SQL", то перечислитель по объектам SMO можно использовать для перечисления таблиц в базе данных AdventureWorks и выполнения запросов, которые подсчитывают количество строк в каждой таблице.

Соединение
Выберите существующий диспетчер подключения файлов ADO.NET или нажмите кнопку <Создать соединение...>, чтобы создать его.

См. также: ADO.NET Connection Manager, Configure ADO.NET Connection Manager

Перечислить
Укажите объект SMO для перечисления.

Обзор
Выберите перечисление SMO.

Связанные разделы: диалоговое окно "Выбор перечисления SMO"

Перечислитель — перечислитель с циклом по каждому файлу HDFS

Перечислитель с циклом по каждому файлу HDFS позволяет пакету служб SSIS перечислить файлы HDFS в указанном расположении HDFS. Имя каждого файла HDFS может храниться в переменной и использоваться в задачах внутри контейнера "цикла по каждому элементу".

Диспетчер подключений Hadoop
Задайте существующий диспетчер подключений Hadoop или создайте новый, указывающий на размещение файлов HDFS. Дополнительные сведения см. в разделе Hadoop Connection Manager.

Путь к каталогу
Укажите имя каталога HDFS, содержащего файлы HDFS, которые необходимо перечислить.

Фильтр по имени файла
Укажите фильтр имен, чтобы выбрать файлы с определенным шаблоном имени. Например, MySheet*.xls* включает такие файлы, как MySheet001.xls и MySheetABC.xlsx.

Получение имени файла
Укажите тип имени файла, получаемого службами SSIS.

  • Полное имя — имя, содержащее путь к каталогу и имя файла.

  • Только имя — получение только имени файла.

Просмотр вложенных папок
Укажите, следует ли выполнить цикл по вложенным папкам рекурсивно.

На странице Сопоставления переменной редактора выберите или создайте переменную, в которой будет храниться имя перечисленного файла HDFS.

Перечислитель = перечислитель по большим двоичным объектам Azure

Перечислитель больших двоичных объектов Azure позволяет пакету службы SSIS перечислять файлы больших двоичных объектов в указанном расположении этих объектов. Имя перечисленного файла большого двоичного объекта можно хранить в переменной и использовать в задачах в контейнере "цикл по каждому элементу".

Перечислитель BLOB-объектов Azure является компонентом пакета дополнительных компонентов СЛУЖБ SQL Server Integration Services (SSIS) для Azure для SQL Server 2016 (13.x). Пакет дополнительных компонентов можно скачать отсюда.

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

См. также: Azure Storage Connection Manager.

Имя контейнера больших двоичных объектов
Укажите имя контейнера больших двоичных объектов, который содержит перечисляемые файлы больших двоичных объектов.

Каталог больших двоичных объектов
Укажите каталог больших двоичных объектов, который содержит перечисляемые файлы больших двоичных объектов. Каталог больших двоичных объектов — это виртуальная иерархическая структура.

Рекурсивный поиск
Указывает, следует ли вести рекурсивный поиск в подкаталогах.

Фильтр по именам для больших двоичных объектов
Укажите фильтр по именам для перечисления файлов по определенному шаблону имен. Например, MySheet*.xls\* включает такие файлы, как MySheet001.xls и MySheetABC.xlsx.

Фильтр по диапазону времени для больших двоичных объектов "от-до"
Укажите фильтр по диапазону времени. Перечисляются файлы, измененные после TimeRangeFrom и до TimeRangeTo.

Перечислитель = перечислитель файлов FOReach ADLS

Перечислитель файлов ADLS позволяет пакету SSIS перечислять файлы в Azure Data Lake Store. Полный путь перечисленного файла (с префиксом в виде косой черты — /) можно хранить в переменной и использовать в задачах в контейнере "цикл по каждому элементу".

AzureDataLakeConnection
Задает диспетчер подключений Azure Data Lake или создает новый, который ссылается на учетную запись ADLS.

AzureDataLakeDirectory
Указывает каталог ADLS, который содержит перечисляемые файлы.

FileNamePattern
Задает фильтр имен файлов. Перечисляются только те файлы, имя которых соответствует указанному шаблону. Поддерживаются подстановочные знаки * и ?.

SearchRecursively
Указывает, следует ли выполнять рекурсивный поиск в указанном каталоге.

Перечислитель = перечислитель Data Lake Storage 2-го поколения файла foreach

Перечислитель файлов Data Lake Storage 2-го поколения по циклу Foreach делает для пакета SSIS возможным перечисление файлов в Azure Data Lake Storage 2-го поколения.

AzureStorageConnection
Задает существующий диспетчер подключений службы хранилища Azure или создает новый, который ссылается на службу Data Lake Storage 2-го поколения.

FolderPath
Указывает путь к папке для перечисления файлов.

SearchRecursively
Указывает, следует ли выполнять рекурсивный поиск в заданной папке.

Примечания о настройке разрешений для субъекта-службы

Разрешение Data Lake Storage 2-го поколения определяются как управлением доступом на основе ролей (RBAC), так и списками управления доступом (ACL). Обратите внимание на то, что списки ACL настраиваются с помощью идентификатора объекта (OID) субъекта-службы для регистрации приложения, как описано здесь. Для конфигурации RBAC, напротив, используется идентификатор приложения (клиента). Когда субъекту безопасности предоставляются разрешения на данные RBAC посредством встроенной или пользовательской роли, эти разрешения сначала оцениваются при авторизации запроса. Если запрошенная операция разрешена в соответствии с назначенными субъекту безопасности ролями RBAC, авторизация происходит немедленно и дополнительные проверки ACL не проводятся. Если же субъекту безопасности роль RBAC не назначена или если запрошенная операция не соответствует предоставленному разрешению, проводятся проверки ACL, цель которых — определить, разрешено ли субъекту безопасности выполнять запрошенную операцию. Чтобы перечислитель работал, необходимо предоставить по крайней мере разрешение на выполнение начиная с корневой файловой системы, а также разрешение на чтение целевой папки. Можно также предоставить разрешение не ниже чтения данных из хранилища BLOB-объектов с помощью RBAC. Подробные сведения см. в этой статье.

Страница "Сопоставления переменных" — редактор циклов по каждому элементу

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

Сведения об использовании контейнера "цикл по каждому элементу" в пакете служб Integration Services см. в разделе Контейнер "цикл по каждому элементу". Сведения о его настройке см. в разделе Настройка контейнера "цикл по каждому элементу".

Руководство по созданию простого пакета ETL в Microsoft SQL Server Integration Services содержит урок, который учит добавлять и настраивать цикл foreach.

Параметры

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

Примечание.

После установки сопоставления переменной новая строка автоматически добавится к списку Переменная.

См. также:Переменные Integration Services (SSIS), Добавление переменной

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

Примечание.

Индекс отсчитывается от 0.

Удаление
Выберите переменную и нажмите кнопку Удалить.

Диалоговое окно "Ограничения схемы" (ADO.NET)

Используйте диалоговое окно Ограничения схемы , чтобы установить ограничения схемы, которые необходимо применить к перечислителю набора строк схемы Foreach ADO.NET.

Параметры

Ограничения
Выберите ограничения, которые необходимо применить к схеме.

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

Связанные разделы: переменные служб Integration Services (SSIS), добавление переменной

Текст
Введите текст для определения ограничений.

диалоговое окно «Столбцы For Each Item»

Используйте диалоговое окно Столбцы For Each Item для задания столбцов, которые будет перечислять перечислитель Foreach Item.

Параметры

Столбец
Содержит столбцы.

Тип данных
Выберите тип данных.

Прибавить
Добавление нового столбца.

Удалить
Выберите столбец и нажмите Удалить.

диалоговое окно «Выбор перечисления SMO»

Используйте диалоговое окно "Выбор перечисления SMO", чтобы указать объект объектов SMO SQL Server для перечисления указанного экземпляра SQL Server и выбрать тип перечисления.

Параметры

Перечислить
Разверните сервер и выберите объект SMO.

Объекты
Применение типа перечисления объектов.

Заполнить предварительно
Использование параметра Заполнить предварительно для типа перечисления объектов.

Имена
Применение типа перечисления имен.

Имена URN
Применение типа перечисления имен URN.

Расположения
Применение типа перечисления местонахождений. Этот параметр доступен только для файлов.

Использование выражений свойств в контейнерах "цикл по каждому элементу"

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

Часто в реализации выражения свойства полезно устанавливать значение свойства ConnectionString диспетчера соединений, которое используют перечислители контейнера "цикл по каждому элементу". Выражение свойства ConnectionString устанавливается переменной, которая сопоставляется со значением коллекции перечислителя и обновляется при каждом повторении цикла.

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

См. также

Поток управления
Контейнеры служб Integration Services