Contêiner de Ciclo Foreach
se aplica a:SQL Server SSIS Integration Runtime no Azure Data Factory
O contêiner Foreach Loop define um fluxo de controle de repetição em um pacote. A implementação do loop é semelhante à estrutura de repetição Foreach em linguagens de programação. Em um pacote, o looping é habilitado usando um enumerador Foreach. O contêiner Foreach Loop repete o fluxo de controle para cada membro de um enumerador especificado.
O SQL Server Integration Services fornece os seguintes tipos de enumerador:
Enumerator ADO Foreach usado para enumerar linhas em tabelas. Por exemplo, você pode obter as linhas em um conjunto de registros ADO.
O destino Recordset salva dados na memória num conjunto de registros que é armazenado numa variável de pacote do tipo de dados Object . Normalmente, você usa um contêiner de loop Foreach com o enumerador ADO Foreach para processar uma linha do conjunto de registros de cada vez. A variável especificada para o enumerador ADO Foreach deve ser do tipo de dados Object. Para obter mais informações sobre o destino do conjunto de registros, consulte Usar um destino do conjunto de registros.
Foreach ADO.NET enumerador de conjunto de linhas de esquema para enumerar as informações de esquema sobre uma fonte de dados. Por exemplo, você pode enumerar e obter uma lista das tabelas no banco de dados do SQL Server AdventureWorks2022.
Foreach File enumerator para enumerar arquivos em uma pasta. O enumerador pode atravessar subpastas. Por exemplo, você pode ler todos os arquivos que têm a extensão de nome de arquivo *.log na pasta Windows e suas subpastas. Observe que a ordem na qual os arquivos são recuperados não pode ser especificada.
Foreach From Variable enumerator para enumerar o objeto enumerável que uma variável especificada contém. O objeto enumerável pode ser uma matriz, um ADO.NET DataTable, um enumerador do Integration Services e assim por diante. Por exemplo, você pode enumerar os valores de uma matriz que contém o nome dos servidores.
Foreach Item enumerator para enumerar itens que são coleções. Por exemplo, você pode enumerar os nomes de executáveis e diretórios de trabalho que uma tarefa Executar Processo usa.
Foreach Nodelist enumerador para enumerar o conjunto de resultados de uma expressão XPath (XML Path Language). Por exemplo, esta expressão enumera e obtém uma lista de todos os autores no período clássico:
/authors/author[@period='classical']
.Foreach SMO enumerator para enumerar objetos do SQL Server Management Objects (SMO). Por exemplo, pode enumerar e obter uma lista das visualizações num banco de dados do SQL Server.
Foreach HDFS File Enumerator enumera ficheiros HDFS no local HDFS especificado.
Foreach Azure Blob enumerator para enumerar blobs em um contêiner de blob no Armazenamento do Azure.
Foreach ADLS File enumerator para enumerar arquivos em um diretório no Azure Data Lake Store.
Foreach Data Lake Storage Gen2 File enumerador para enumerar arquivos em um diretório no Azure Data Lake Store Gen2.
O diagrama a seguir mostra um contêiner de Loop Foreach que tem uma tarefa de Sistema de Arquivos. O loop Foreach usa o enumerador Foreach File e a tarefa File System é configurada para copiar um arquivo. Se a pasta especificada pelo enumerador contiver quatro arquivos, o loop se repetirá quatro vezes e copiará quatro arquivos.
Você pode usar uma combinação de variáveis e expressões de propriedade para atualizar a propriedade do objeto de pacote com o valor da coleção do enumerador. Primeiro, você mapeia o valor da coleção para uma variável definida pelo usuário e, em seguida, implementa uma expressão de propriedade na propriedade que usa a variável. Por exemplo, o valor da coleção do enumerador Foreach File é mapeado para uma variável chamada MyFile, a qual é então utilizada na expressão associada à propriedade Subject de uma tarefa Send Mail. Quando o pacote é executado, a propriedade Subject é atualizada com o nome de um arquivo sempre que o loop se repete. Para obter mais informações, consulte Utilizar expressões de propriedade em pacotes.
As variáveis mapeadas para o valor da coleção do enumerador também podem ser usadas em expressões e scripts.
Um contêiner Foreach Loop pode incluir várias tarefas e contêineres, mas pode usar apenas um tipo de enumerador. Se o contêiner Foreach Loop incluir várias tarefas, você poderá mapear o valor da coleção do enumerador para várias propriedades de cada tarefa.
Você pode definir um atributo transaction no contêiner Foreach Loop para definir uma transação para um subconjunto do fluxo de controle do pacote. Dessa forma, você pode gerenciar transações no nível do Foreach Loop em vez do nível do pacote. Por exemplo, se um contentor Foreach Loop repetir um fluxo de controlo que atualiza dimensões e tabelas de factos num esquema em estrela, pode configurar uma transação para garantir que todas as tabelas de factos sejam atualizadas com sucesso ou que nenhuma seja atualizada. Para obter mais informações, consulte Transações dos Serviços de Integração.
Tipos de enumerador
Os enumeradores são configuráveis e você deve fornecer informações diferentes, dependendo do enumerador.
A tabela a seguir resume as informações que cada tipo de enumerador requer.
Recenseador | Requisitos de configuração |
---|---|
Para cada ADO | Especifique a variável de origem do objeto ADO e o modo enumerador. A variável deve ser do tipo de dados Object. |
Conjunto de linhas do esquema ADO.NET Foreach | Especifique a conexão com um banco de dados e o esquema a ser enumerado. |
Arquivo Foreach | Especifique uma pasta e os arquivos a serem enumerados, o formato do nome do arquivo dos arquivos recuperados e se deseja atravessar subpastas. |
Foreach a partir da variável | Especifique a variável que contém os objetos a serem enumerados. |
Para cada elemento | Defina os itens na coleção "Foreach Item", incluindo as colunas e os tipos de dados das colunas. |
Lista de nós Foreach | Especifique a origem do documento XML e configure a operação XPath. |
Para cada SMO | Especifique a conexão com um banco de dados e os objetos SMO a serem enumerados. |
Enumerador de arquivos Foreach HDFS | Especifique uma pasta e os arquivos a serem enumerados, o formato do nome do arquivo dos arquivos recuperados e se deseja atravessar subpastas. |
Foreach Azure Blob | Especifique o contêiner de Armazenamento de Blobs do Azure que contém blobs a serem enumerados. |
Arquivo ADLS Foreach | Especifique o diretório do Repositório Azure Data Lake que contém os arquivos a serem enumerados. |
Arquivo Foreach Data Lake Storage Gen2 | Especifique o diretório do Azure Data Lake Storage Gen2 que contém os arquivos a serem enumerados, juntamente com outras opções. |
Adicionar enumeração a um fluxo de controle com um contêiner Foreach Loop
O Integration Services inclui o contêiner Foreach Loop, um elemento de fluxo de controle que simplifica a inclusão de uma construção de looping que enumera arquivos e objetos no fluxo de controle de um pacote. Para obter mais informações, consulte Foreach Loop Container.
O contêiner Foreach Loop não fornece nenhuma funcionalidade; Ele fornece apenas a estrutura na qual você cria o fluxo de controle repetível, especifica um tipo de enumerador e configura o enumerador. Para fornecer funcionalidade de contêiner, você deve incluir pelo menos uma tarefa no contêiner Foreach Loop. Para obter mais informações, consulte Tarefas dos Serviços de Integração.
O contêiner Foreach Loop pode incluir um fluxo de controle com várias tarefas e outros contêineres. Adicionar tarefas e contêineres a um contêiner de Loop Foreach é semelhante a adicioná-los a um pacote, exceto que você arraste as tarefas e contêineres para o contêiner Foreach Loop em vez de para o pacote. Se o contêiner Foreach Loop incluir mais de uma tarefa ou contêiner, você poderá conectá-los usando restrições de precedência, assim como faz em um pacote. Para obter mais informações, consulte Restrições de precedência.
Adicionar e configurar um contêiner Foreach Loop
Adicione o contêiner Foreach Loop ao pacote. Para obter mais informações, consulte Adicionar ou excluir uma tarefa ou um contêiner em um fluxo de controle.
Adicione tarefas e contêineres ao contêiner Foreach Loop. Para obter mais informações, consulte Adicionar ou excluir uma tarefa ou um contêiner em um fluxo de controle.
Conecte tarefas e contêineres no contêiner Foreach Loop usando restrições de precedência. Para obter mais informações, consulte Conectar Tarefas e Contêineres Usando uma Restrição de Precedência Padrão.
Configure o contêiner "Foreach Loop". Para obter mais informações, consulte Configurar um contêiner de loop Foreach.
Configurar um contêiner de loop Foreach
Este procedimento descreve como configurar um contêiner Foreach Loop, incluindo expressões de propriedade nos níveis de enumerador e contêiner.
No SSDT (SQL Server Data Tools), abra o projeto Integration Services que contém o pacote desejado.
Clique no separador Fluxo de Controlo e clique duas vezes no Ciclo Foreach.
Na caixa de diálogo Editor de Ciclo Foreach, clique em Geral e, opcionalmente, modifique o nome e a descrição do Ciclo Foreach.
Clique em Coleção e selecione um tipo de enumerador na lista Enumerador.
Especifique um enumerador e defina as opções do enumerador da seguinte maneira:
Para usar o enumerador Foreach File, forneça a pasta que contém os arquivos a serem enumerados, especifique um filtro para o nome e o tipo de arquivo e especifique se o nome de arquivo totalmente qualificado deve ser retornado. Além disso, indique se deseja recursar através de subpastas para obter mais arquivos.
Para usar o enumerador Item Foreach, clique em Colunase, na caixa de diálogo Para cada coluna de item, clique em Adicionar para adicionar colunas. Selecione um tipo de dados na lista Tipo de Dados
para cada coluna e clique em OK .Digite valores nas colunas ou selecione valores em listas.
Observação
Para adicionar uma nova linha, clique em qualquer lugar fora da célula na qual você digitou.
Observação
Se um valor não for compatível com o tipo de dados da coluna, o texto será realçado.
Para usar o enumerador Foreach ADO, selecione uma variável existente ou clique em
Nova variável na listavariável de origem do objeto ADO para especificar a variável que contém o nome do objeto ADO a enumerar e selecione uma opção de modo de enumeração. Se estiver criando uma nova variável, defina as propriedades da variável na caixa de diálogo Adicionar variável.
Para usar o enumerador Foreach ADO.NET Schema Rowset, selecione uma conexão ADO.NET existente ou clique em Nova conexão na lista Conexão e, em seguida, selecione um esquema.
Opcionalmente, clique em Definir restrições e selecione restrições de esquema, selecione a variável que contém o valor de restrição ou digite o valor de restrição e clique em OK.
Para usar o enumerador Foreach From Variable, selecione uma variável na lista Variable.
Para usar o enumerador Foreach NodeList, clique em DocumentSourceType e selecione o tipo de fonte na lista e, em seguida, clique em DocumentSource. Dependendo do valor selecionado para DocumentSourceType, selecione uma variável ou uma conexão de arquivo na lista, crie uma nova variável ou conexão de arquivo ou digite a fonte XML no Document Source Editor.
Em seguida, clique em EnumerationType e selecione um tipo de enumeração na lista. Se EnumerationType estiver Navigator, Node, ou NodeText, clique em OuterXPathStringSourceType e selecione o tipo de origem e, em seguida, clique em OuterXPathString. Dependendo do valor definido para OuterXPathStringSourceType, selecione uma variável ou uma conexão de arquivo na lista, crie uma nova variável ou conexão de arquivo ou digite a cadeia de caracteres para a expressão externa XPath (XML Path Language).
Se EnumerationType for ElementCollection, defina OuterXPathStringSourceType e OuterXPathString como descrito acima. Em seguida, clique em InnerElementType e selecione um tipo de enumeração para os elementos internos e, em seguida, clique em InnerXPathStringSourceType. Dependendo do valor definido para InnerXPathStringSourceType, selecione uma variável ou uma conexão de arquivo, crie uma nova variável ou conexão de arquivo ou digite a cadeia de caracteres para a expressão XPath interna.
Para usar o enumerador Foreach SMO, selecione uma conexão ADO.NET existente ou clique em Nova conexão na lista de Conexão e, em seguida, digite a cadeia a ser usada ou clique em Procurar. Se clicar em Procurar, na caixa de diálogo Selecionar Enumeração SMO, escolha o tipo de objeto e o tipo de enumeração, e depois clique em OK.
Opcionalmente, clique no botão Navegar (...) na caixa de texto Expressões, na página Coleção para criar expressões que atualizem valores de propriedade. Para obter mais informações, consulte Adicionar ou alterar uma expressão de propriedade.
Observação
As propriedades listadas na lista Property variam de acordo com o enumerador.
Opcionalmente, clique em Mapeamentos de Variáveis para mapear as propriedades do objeto para o valor da coleção e faça o seguinte:
Na lista Variáveis
, selecione uma variável ou clique Nova Variável para criar uma nova variável.Se você adicionar uma nova variável, defina as propriedades da variável na caixa de diálogo Adicionar variável e clique em OK.
Se utilizar o enumerador For Each Item, pode atualizar o valor do índice na lista Índice .
Observação
O valor do índice indica qual coluna no item deve ser mapeada para a variável. Somente o enumerador For Each Item pode usar um valor de índice diferente de 0.
Opcionalmente, clique em Expressões e, na página Expressions, crie expressões de propriedade para as propriedades do contêiner Foreach Loop. Para obter mais informações, consulte Adicionar ou alterar uma expressão de propriedade.
Clique OK.
Página Geral - Foreach Loop Editor
Use a página Geral da caixa de diálogo Editor de Loop Foreach para nomear e descrever um contêiner de Loop Foreach que usa um enumerador especificado para repetir um fluxo de trabalho para cada membro de uma coleção.
Para saber mais sobre o Contêiner de Loop Foreach e como configurá-lo, consulte Contêiner de Loop Foreach e Configurar um Contêiner de Loop Foreach .
Opções
Nome
Forneça um nome exclusivo para o contêiner Foreach Loop. Esse nome é usado como o rótulo no ícone de tarefa e nos logs.
Observação
Os nomes de objeto devem ser exclusivos dentro de um pacote.
Descrição
Digite uma descrição do contêiner Foreach Loop.
Página da coleção - Foreach Loop Editor
Use a página
Para saber mais sobre o contêiner de loop Foreach e como configurá-lo, consulte Contêiner de Loop Foreach e Configurar um Contêiner de Loop Foreach.
Opções estáticas
Enumerador
Selecione o tipo de enumerador na lista. Esta propriedade tem as opções listadas na tabela a seguir:
Valor | Descrição |
---|---|
Enumerador de Arquivo Foreach | Enumerar ficheiros. A seleção desse valor exibe as opções dinâmicas na seção Foreach File Enumerator. |
Enumerador de Itens Foreach | Enumerar valores em um item. A seleção desse valor exibe as opções dinâmicas na seção Foreach Item Enumerator. |
Enumerador ADO Foreach | Enumere tabelas ou linhas em tabelas. A seleção desse valor exibe as opções dinâmicas na seção Foreach ADO Enumerator. |
Foreach Enumerador de Conjunto de Linhas do Esquema ADO.NET | Enumere um esquema. A seleção desse valor exibe as opções dinâmicas na seção Foreach ADO.NET Enumerator. |
Foreach do Enumerador de Variáveis | Enumere o valor em uma variável. A seleção desse valor exibe as opções dinâmicas na seção Foreach From Variable Enumerator. |
Enumerador de lista de nós "Foreach" | Enumerar nós num documento XML. A seleção desse valor exibe as opções dinâmicas na seção Foreach Nodelist Enumerator. |
Foreach Enumerador SMO | Enumere um objeto SMO. A seleção desse valor exibe as opções dinâmicas na seção Foreach SMO Enumerator. |
Enumerador de Ficheiros Foreach HDFS | Enumere arquivos HDFS no local HDFS especificado. A seleção desse valor exibe as opções dinâmicas na seção Foreach HDFS File Enumerator. |
do Enumerador de Blob do Azure Foreach | Enumere ficheiros de blob na localização de blob especificada. A seleção desse valor exibe as opções dinâmicas na seção Foreach Azure Blob Enumerator. |
Enumerador de Ficheiros ADLS Foreach | Enumere arquivos no diretório Data Lake Store especificado. Selecionar esse valor exibe as opções dinâmicas na seção Foreach ADLS File Enumerator. |
Enumerador de Arquivos do Foreach Data Lake Storage Gen2 | Enumere arquivos no diretório Data Lake Storage Gen2 especificado. A seleção desse valor exibe as opções dinâmicas na seção Foreach Data Lake Storage Gen2 File Enumerator. |
Expressões
Clique ou expanda Expressões para exibir a lista de expressões de propriedades existentes. Clique no botão de reticências (...) para adicionar uma expressão de propriedade para uma propriedade de enumerador ou editar e avaliar uma expressão de propriedade existente.
Tópicos relacionados:Expressões do Integration Services (SSIS), Editor de Expressões de Propriedade , Expression Builder
Opções dinâmicas do enumerador
Enumerador = Enumerador de Ficheiros Foreach
Use o enumerador Foreach File para enumerar arquivos em uma pasta. Por exemplo, se o Loop Foreach incluir uma tarefa Executar SQL, você poderá usar o enumerador Arquivo Foreach para enumerar arquivos que contenham instruções SQL que a tarefa Executar SQL executará. O enumerador pode ser configurado para incluir subpastas.
O conteúdo das pastas e subpastas que o enumerador Foreach File enumera pode mudar enquanto o loop está em execução porque processos externos ou tarefas no loop adicionam, renomeiam ou excluem arquivos enquanto o loop está em execução. Essas alterações podem causar várias situações inesperadas:
Se os arquivos forem excluídos, as ações de uma tarefa no Foreach Loop podem afetar um conjunto diferente de arquivos do que os arquivos usados pelas tarefas subsequentes.
Se os arquivos forem renomeados e um processo externo adicionar automaticamente arquivos para substituir os arquivos renomeados, as ações das tarefas no Foreach Loop podem afetar os mesmos arquivos duas vezes.
Se os arquivos forem adicionados, pode ser difícil determinar quais arquivos foram afetados pelo Foreach Loop.
Pasta
Forneça o caminho da pasta raiz a ser enumerada.
Navegar
Navegue para localizar a pasta raiz.
Arquivos
Especifique os arquivos a serem enumerados.
Observação
Use caracteres curinga (*) para especificar os arquivos a serem incluídos na coleção. Por exemplo, para incluir arquivos com nomes que contenham "abc", use o seguinte filtro: *abc*.
Quando você especifica uma extensão de nome de arquivo, o enumerador também retorna arquivos que têm a mesma extensão com caracteres adicionais acrescentados. (Este é o mesmo comportamento do comando dir no sistema operacional, que também compara nomes de arquivo 8.3 para compatibilidade com versões anteriores.) Esse comportamento do enumerador pode causar resultados inesperados. Por exemplo, você deseja enumerar apenas arquivos do Excel 2003 e especificar "*.xls". No entanto, o enumerador também retorna arquivos do Excel 2007 porque esses arquivos têm a extensão, ".xlsx".
Você pode usar uma expressão para especificar os arquivos a serem incluídos em uma coleção, expandindo Expressões na página Coleção , selecionando a propriedade FileSpec e clicando no botão de reticências (...) para adicionar a expressão para a propriedade.
totalmente qualificados
Selecione esta opção para recuperar o caminho totalmente qualificado dos nomes dos ficheiros. Se os caracteres curinga forem especificados na opção Arquivos, os caminhos totalmente qualificados retornados corresponderão ao filtro.
Apenas nome
Selecione para recuperar apenas os nomes de arquivo. Se os caracteres curinga forem especificados na opção Arquivos, os nomes de arquivo retornados corresponderão ao filtro.
Nome e extensão
Selecione esta opção para recuperar os nomes de arquivo e suas extensões de nome de arquivo. Se os caracteres curinga forem especificados na opção Arquivos, o nome e a extensão dos arquivos retornados corresponderão ao filtro.
Percorrer Subpastas
Selecione para incluir as subpastas na enumeração.
Enumerador = Enumerador de Item Foreach
Use o enumerador Foreach Item para enumerar itens em uma coleção. Você define os itens na coleção especificando colunas e valores de coluna. As colunas em uma linha definem um item. Por exemplo, um item que especifica os executáveis que uma tarefa Executar Processo executa e o diretório de trabalho que a tarefa usa tem duas colunas, uma que lista os nomes dos executáveis e outra que lista o diretório de trabalho. O número de linhas determina o número de vezes que o loop é repetido. Se a tabela tiver 10 linhas, o loop se repete 10 vezes.
Para atualizar as propriedades da tarefa "Executar Processo", mapeie variáveis para colunas de itens usando o índice da coluna. A primeira coluna definida no item do enumerador tem o valor de índice 0, a segunda coluna 1 e assim por diante. Os valores das variáveis são atualizados a cada repetição do loop. As propriedades Executable e WorkingDirectory da tarefa Executar Processo podem ser atualizadas por expressões de propriedade que usam essas variáveis.
Defina os itens na coleção Para Cada Item
Forneça um valor para cada coluna na tabela.
Observação
Uma nova linha é adicionada automaticamente à tabela depois de inserir valores em colunas de linha.
Observação
Se os valores fornecidos não forem compatíveis com o tipo de dados da coluna, o texto será colorido em vermelho.
Tipo de dados da coluna
Lista o tipo de dados da coluna ativa.
Remover
Selecione um item e clique em Remover para removê-lo da lista.
Colunas
Clique para configurar o tipo de dados das colunas no item.
Tópicos Relacionados:Referência da Interface do Usuário da Caixa de Diálogo Colunas de Item para Cada
Enumerador = Enumerador ADO Foreach
Use o enumerador Foreach ADO para enumerar linhas ou tabelas em um objeto ADO ou ADO.NET armazenado em uma variável. Por exemplo, se o Loop Foreach incluir uma tarefa Script que grava um conjunto de dados em uma variável, você poderá usar o enumerador Foreach ADO para enumerar as linhas no conjunto de dados. Se a variável contiver um conjunto de dados ADO.NET, o enumerador poderá ser configurado para enumerar linhas em várias tabelas ou para enumerar tabelas.
variável de origem do objeto ADO
Selecione uma variável definida pelo usuário na lista ou clique em <Nova variável...> para criar uma nova variável.
Observação
A variável deve ter o tipo de dados Object, caso contrário, ocorrerá um erro.
Tópicos relacionados:variáveis do Integration Services (SSIS)Adicionar variável
Linhas na primeira tabela
Selecione para enumerar apenas linhas na primeira tabela.
Linhas em todas as tabelas (somente dataset ADO.NET)
Selecione para enumerar linhas em todas as tabelas. Essa opção estará disponível somente se os objetos a serem enumerados forem todos membros do mesmo conjunto de dados ADO.NET.
Todas as tabelas (apenas ADO.NET conjunto de dados)
Selecione para enumerar somente tabelas.
Enumerator = Enumerador de Foreach ADO.NET Schema Rowset
Use o enumerador Foreach ADO.NET Schema Rowset para enumerar um esquema para uma fonte de dados especificada. Por exemplo, se o Loop Foreach incluir uma tarefa Executar SQL, você poderá usar o enumerador Foreach ADO.NET Schema Rowset para enumerar esquemas como as colunas no banco de dados
Conexão
Selecione um gerenciador de conexões ADO.NET na lista ou clique em <Nova conexão...> criar um novo gerenciador de conexões ADO.NET.
Importante
O gerenciador de conexões ADO.NET deve usar um provedor .NET para OLE DB. Se estiver se conectando ao SQL Server, o provedor recomendado a ser usado será o SQL Server Native Client, listado na seção
Tópicos relacionados:ADO Connection ManagerConfigurar ADO.NET Connection Manager
Esquema
Selecione o esquema a ser enumerado.
Definir restrições
Defina as restrições a serem aplicadas ao esquema especificado.
Tópicos relacionados:Caixa de diálogo Restrições de esquema
Enumerator = Enumerador De Varíaveis Cada Um
Use o enumerador Foreach From Variable para enumerar os objetos enumeráveis na variável especificada. Por exemplo, se o Loop Foreach incluir uma tarefa Executar SQL que executa uma consulta e armazena o resultado em uma variável, você poderá usar o enumerador Foreach From Variable para enumerar os resultados da consulta.
Variável
Selecione uma variável na lista ou clique em <Nova variável...> para criar uma nova variável.
Tópicos relacionados:variáveis do Integration Services (SSIS)Adicionar variável
Enumerador = Enumerador de Foreach NodeList
Use o enumerador Foreach Nodelist para enumerar o conjunto de nós XML que resulta da aplicação de uma expressão XPath a um arquivo XML. Por exemplo, se o Loop Foreach incluir uma tarefa Script, você poderá usar o enumerador Foreach NodeList para passar um valor que atenda aos critérios de expressão XPath do arquivo XML para a tarefa Script.
A expressão XPath que se aplica ao arquivo XML é a operação XPath externa, armazenada na propriedade OuterXPathString. Se o tipo de enumeração XPath estiver definido como ElementCollection, o enumerador Foreach NodeList poderá aplicar uma expressão XPath interna, armazenada na propriedade InnerXPathString, a uma coleção de elementos.
Para saber mais sobre como trabalhar com documentos e dados XML, consulte "Empregando XML no .NET Framework" na Biblioteca MSDN.
TipoDeFonteDoDocumento
Selecione o tipo de origem do documento XML. Esta propriedade tem as opções listadas na tabela a seguir:
Valor | Descrição |
---|---|
Entrada direta | Defina a origem como um documento XML. |
Conexão de arquivo | Selecione um arquivo que contenha o documento XML. |
Variável | Defina a origem como uma variável que contenha o documento XML. |
Origem do Documento
Se Tipo de Fonte de Documento estiver definido como Entrada direta, insira o código XML ou clique no botão de reticências (...) para fornecer XML através da caixa de diálogo Editor de Fonte de Documento .
Se DocumentSourceType estiver definido como ligação de ficheiro, selecione um gestor de ligação de ficheiros ou clique em <Nova ligação...> para criar um novo gestor de ligações.
Tópicos relacionados:Gerenciador de Conexão de Ficheiros, Editor de Gerenciador de Conexão de Ficheiros
Se DocumentSourceType estiver definido como Variável, selecione uma variável existente ou clique em <Nova variável...> para criar uma nova variável.
Tópicos Relacionados:Variáveis do Integration Services (SSIS),Adicionar Variável.
EnumerationType
Selecione um tipo de enumeração na lista. Esta propriedade tem as opções listadas na tabela a seguir:
Valor | Descrição |
---|---|
Navigator | Enumerar usando um XPathNavigator. |
Nó | Enumerar nós retornados por uma operação XPath. |
NodeText | Enumerar nós de texto retornados por uma operação XPath. |
ElementCollection | Enumera nós de elemento retornados por uma operação XPath. |
OuterXPathStringSourceType
Selecione o tipo de origem da cadeia de caracteres XPath. Esta propriedade tem as opções listadas na tabela a seguir:
Valor | Descrição |
---|---|
Entrada direta | Defina a origem como um documento XML. |
|
Selecione um arquivo que contenha o documento XML. |
Variável | Defina a origem como uma variável que contenha o documento XML. |
OuterXPathString
Se OuterXPathStringSourceType estiver definido como Entrada direta, forneça a expressão XPath.
Se OuterXPathStringSourceType estiver definido como conexão de ficheiro, selecione um Gestor de Conexões de Ficheiro ou clique em <Nova Conexão...> para criar um novo gestor de conexões.
Tópicos relacionados:Gestor de Conexão de Arquivos, Editor do Gestor de Conexão de Arquivos
Se OuterXPathStringSourceType estiver definido como Variável, selecione uma variável existente ou clique em <Nova variável...> para criar uma nova variável.
Tópicos relacionados:Variáveis do Integration Services (SSIS), Adicionar variável.
TipoDeElementoInterno
Se EnumerationType estiver definido como ElementCollection, selecione o tipo de elemento interno na lista.
InnerXPathStringSourceType
Selecione o tipo de origem da cadeia de caracteres XPath interna. Esta propriedade tem as opções listadas na tabela a seguir:
Valor | Descrição |
---|---|
Entrada direta | Defina a origem como um documento XML. |
Conexão de ficheiro | Selecione um arquivo que contenha o documento XML. |
Variável | Defina a origem como uma variável que contenha o documento XML. |
InnerXPathString
Se InnerXPathStringSourceType estiver definido como entrada direta , forneça a cadeia de caracteres XPath.
Se InnerXPathStringSourceType estiver definido como Conexão de Ficheiro, selecione um Gestor de Conexões de Ficheiro ou clique em <Nova conexão...> para criar um novo gestor de conexões.
Tópicos relacionados:Gestor de Conexão de Arquivos, Editor de Gestor de Conexão de Arquivos
Se InnerXPathStringSourceType estiver definido como Variável, selecione uma variável existente ou clique em <Nova variável...> para criar uma nova variável.
Tópicos relacionados:variáveis do Integration Services (SSIS)Adicionar variável.
Enumerador = Enumerador SMO Foreach
Use o enumerador Foreach SMO para enumerar objetos do SQL Server Management Object (SMO). Por exemplo, se o Loop Foreach incluir uma tarefa Executar SQL, você poderá usar o enumerador Foreach SMO para enumerar as tabelas no banco de dados
Conexão
Selecione um gerenciador de conexões ADO.NET existente ou clique em <Nova conexão...> para criar um novo gerenciador de conexões.
Tópicos Relacionados: ADO.NET Connection Manager, Configurar ADO.NET Connection Manager
Enumerar
Especifique o objeto SMO a ser enumerado.
Procurar
Selecione a enumeração SMO.
Tópicos relacionados:Caixa de diálogo Selecionar Enumeração SMO
Enumerator = Enumerador de Ficheiros HDFS Foreach
O Foreach HDFS File Enumerator permite que um pacote SSIS enumere arquivos HDFS no local HDFS especificado. O nome de cada arquivo HDFS pode ser armazenado em uma variável e usado em tarefas dentro do Foreach Loop Container.
Hadoop Connection Manager
Especifique um Hadoop Connection Manager existente ou crie um novo, que aponte para onde os arquivos HDFS estão hospedados. Para obter mais informações, consulte Hadoop Connection Manager.
Caminho do Diretório
Especifique o nome do diretório HDFS que contém os arquivos HDFS a serem enumerados.
Filtro de nome de arquivo
Especifique um filtro de nome para selecionar arquivos com um determinado padrão de nome. Por exemplo, MySheet*.xls* inclui arquivos como MySheet001.xls e MySheetABC.xlsx.
Recuperar nome de arquivo
Especifique o tipo de nome de arquivo recuperado pelo SSIS.
Nome totalmente qualificado significa o nome completo, que contém o caminho do diretório e o nome do arquivo.
Apenas o nome significa que o nome do ficheiro é recuperado sem o caminho do diretório.
Percorrer subpastas
Especifique se deseja fazer um loop pelas subpastas recursivamente.
Na página Mapeamentos de Variáveis do editor, selecione ou crie uma variável para armazenar o nome do arquivo HDFS enumerado.
Enumerator = Foreach Azure Blob Enumerator
O Azure Blob Enumerator permite que um pacote SSIS enumere arquivos de blob no local de blob especificado. Você pode armazenar o nome do arquivo de blob enumerado em uma variável e usá-lo em tarefas dentro do contêiner de loop Foreach.
O Enumerador de Blob do Azure é um componente do SQL Server Integration Services (SSIS) Feature Pack para Azure para SQL Server 2016 (13.x). Faça o download do Feature Pack aqui.
Gestor de Conexões de Armazenamento do Azure
Selecione um Gerenciador de Conexões de Armazenamento do Azure existente ou crie um novo que se refira a uma Conta de Armazenamento do Azure.
Tópicos relacionados: Gerenciador de Conexões de Armazenamento do Azure.
Nome do contêiner de Blob
Especifique o nome do contêiner de blob que contém os arquivos de blob a serem enumerados.
do diretório Blob
Especifique o diretório de blobs que contém os ficheiros blob a serem enumerados. O diretório blob é uma estrutura hierárquica virtual.
Pesquisa recursivamente
Especifique se deseja pesquisar recursivamente em subdiretórios.
Filtro de nome de Blob
Especifique um filtro de nome para enumerar arquivos com um determinado padrão de nome. Por exemplo, MySheet*.xls\*
inclui arquivos como MySheet001.xls e MySheetABC.xlsx.
intervalo de tempo de Blob de/para filtrar
Especifique um filtro de intervalo de tempo. Os arquivos modificados após TimeRangeFrom e antes TimeRangeTo são enumerados.
Enumerador = Enumerador de Ficheiros ADLS Foreach
O ADLS File Enumerator permite que um pacote SSIS enumere arquivos no Repositório Azure Data Lake. Você pode armazenar o caminho completo do arquivo enumerado (prefixado com uma barra - /
) em uma variável e usar o caminho do arquivo em tarefas dentro do contêiner de loop Foreach.
AzureDataLakeConnection
Especifica um gerenciador de conexões do Azure Data Lake ou cria um novo que se refere a uma conta ADLS.
AzureDataLakeDirectory
Especifica o diretório ADLS que contém os arquivos a serem enumerados.
FileNamePattern
Especifica um filtro de nome de arquivo. Somente os arquivos cujos nomes correspondem ao padrão especificado são enumerados. Os curingas *
e ?
são suportados.
PesquisaRecursivamente
Especifica se a pesquisa recursiva deve ser feita no diretório especificado.
Enumerador = Enumerador de Arquivo Gen2 do Foreach Data Lake Storage
O Enumerador de Arquivos Gen2 do Storage do Data Lake permite que um pacote SSIS enumere arquivos no Azure Data Lake Storage Gen2.
AzureStorageConnection
Especifica um Gerenciador de Conexões de Armazenamento do Azure existente ou cria um novo que faz referência a um serviço Data Lake Storage Gen2.
PastaCaminho
Especifica o caminho da pasta na qual enumerar arquivos.
PesquisaRecursivamente
Especifica se a pesquisa recursiva deve ser feita dentro da pasta especificada.
Notas sobre a configuração de permissões do principal de serviço
A permissão do Data Lake Storage Gen2 é determinada tanto pelo RBAC quanto pelas ACLs .
Tenha em atenção que as ACLs são configuradas usando o ID de objeto (OID) do principal de serviço para o registo da aplicação, conforme detalhado aqui.
Isso é diferente do ID do aplicativo (cliente) que é usado com a configuração RBAC.
Quando uma entidade de segurança recebe permissões de dados RBAC por meio de uma função interna ou por meio de uma função personalizada, essas permissões são avaliadas primeiro após a autorização de uma solicitação.
Se a operação solicitada for autorizada pelas atribuições RBAC da entidade de segurança, a autorização será imediatamente resolvida e nenhuma verificação adicional de ACL será executada.
Como alternativa, se a entidade de segurança não tiver uma atribuição RBAC ou se a operação da solicitação não corresponder à permissão atribuída, serão realizadas verificações de ACL para determinar se a entidade de segurança está autorizada a executar a operação solicitada.
Para que o enumerador funcione, conceda pelo menos permissão Executar a partir do sistema de arquivos raiz, juntamente com permissão Ler para a pasta de destino.
Como alternativa, conceda pelo menos a função Leitor de Dados de Blob de Armazenamento
Página de Mapeamento de Variáveis - Editor de Loop Foreach
Use a página Variables Mappings da caixa de diálogo Foreach Loop Editor para mapear variáveis para o valor da coleção. O valor da variável é atualizado com os valores de coleta em cada iteração do loop.
Para saber como usar o contêiner de loop Foreach em um pacote do Integration Services, consulte Contêiner de loop Foreach. Para saber mais sobre como configurá-lo, consulte Configurar um contêiner de loop Foreach.
O tutorial do Microsoft SQL Server Integration Services, Criando um Tutorial de Pacote ETL Simples, inclui uma lição que ensina a adicionar e configurar um Loop Foreach.
Opções
Variável
Selecione uma variável existente ou clique em Nova variável... para criar uma nova variável.
Observação
Depois de mapear uma variável, uma nova linha é adicionada automaticamente à lista Variável.
Tópicos Relacionados: Variáveis do Integration Services (SSIS), Adicionar Variável
Índice
Se estiver a usar o enumerador Foreach Item, especifique o índice da coluna no valor da coleção que deve ser mapeado para a variável. Para outros tipos de enumeradores, o índice é somente leitura.
Observação
O índice é baseado em 0.
Excluir
Selecione uma variável e clique em Excluir.
Caixa de diálogo Restrições de esquema (ADO.NET)
Use a caixa de diálogo Restrições de Esquema para definir as restrições de esquema a serem aplicadas ao enumerador Foreach ADO.NET Schema Rowset.
Opções
Restrições
Selecione as restrições a serem aplicadas ao esquema.
Variável
Use uma variável para definir restrições. Selecione uma variável na lista ou clique em Nova variável... para criar uma nova variável.
Tópicos relacionados:Variáveis do Integration Services (SSIS)Adicionar variável
Texto
Forneça o texto para definir restrições.
Caixa de diálogo Colunas para Cada Item
Use a caixa de diálogo For Each Item Columns para definir as colunas nos itens enumerados pelo enumerador Foreach Item.
Opções
Coluna
Lista as colunas.
Tipo de dados
Selecione o tipo de dados.
Adicionar
Adicione uma nova coluna.
Remover
Selecione uma coluna e, em seguida, clique em Remover.
Selecionar enumeração SMO - Caixa de diálogo
Use a caixa de diálogo Select SMO Enumeration para especificar o objeto SMO (SQL Server Management Objects) na instância especificada do SQL Server a ser enumerada e para selecionar o tipo de enumeração.
Opções
Enumerar
Expanda o servidor e selecione o objeto SMO.
Objetos
Use o tipo de enumeração "Objects".
Preencher automaticamente
Utilize a opção Prepreencher com o tipo de enumeração Objects.
Nomes
Recorra ao tipo de enumeração Names.
URNs
Utilize o tipo de enumeração de URNs.
Localizações
Utilize o tipo de enumeração Locations. Esta opção está disponível apenas para ficheiros.
Usar expressões de propriedade com os contêineres de ciclo Foreach
Os pacotes podem ser configurados para executar simultaneamente vários executáveis. Essa configuração deve ser usada com cuidado quando o pacote inclui um contêiner Foreach Loop que implementa expressões de propriedade.
Muitas vezes, é útil implementar uma expressão de propriedade para definir o valor da propriedade ConnectionString dos gerenciadores de conexões que os enumeradores Foreach Loop usam. A expressão de propriedade de ConnectionString é definida por uma variável que mapeia para o valor de coleção do enumerador e é atualizada em cada iteração do loop.
Para evitar consequências negativas do tempo não determinante de execução paralela de tarefas no loop, o pacote deve ser configurado para executar apenas um executável de cada vez. Por exemplo, se um pacote puder executar várias tarefas simultaneamente, um contêiner de Loop Foreach que enumera arquivos na pasta, recupera os nomes de arquivo e usa uma tarefa Executar SQL para inserir os nomes de arquivo em uma tabela pode incorrer em conflitos de gravação quando duas instâncias da tarefa Executar SQL tentarem gravar ao mesmo tempo. Para obter mais informações, consulte Utilizar expressões de propriedades em pacotes.