Partilhar via


Usar um destino de conjunto de registros

Se aplica a:SQL Server SSIS Integration Runtime à Azure Data Factory

O destino Recordset não salva dados em uma fonte de dados externa. Em vez disso, o destino Recordset salva dados na memória em um conjunto de registros armazenado em uma variável de pacote do Integration Services do tipo de dados Object. Depois que o destino Recordset salva os dados, você normalmente usa um contêiner Foreach Loop com o enumerador Foreach ADO para processar uma linha do conjunto de registros de cada vez. O enumerador ADO Foreach salva o valor de cada coluna da linha atual em uma variável de pacote separada. Em seguida, as tarefas que você configura dentro do contêiner Foreach Loop leem esses valores das variáveis e executam alguma ação com elas.

Você pode usar o destino Recordset em muitos cenários diferentes. Eis alguns exemplos:

  • Você pode usar uma tarefa Enviar Email e a linguagem de expressão do Integration Services para enviar uma mensagem de email personalizada para cada linha do conjunto de registros.

  • Você pode usar um componente de Script configurado como uma fonte, dentro de uma tarefa de Fluxo de Dados, para transferir os valores de uma coluna para as colunas do fluxo de dados. Em seguida, você pode usar transformações e destinos para transformar e salvar a linha. Neste exemplo, a tarefa Fluxo de Dados é executada uma vez para cada linha.

As seções a seguir primeiro descrevem o processo geral de uso do destino Recordset e, em seguida, mostram um exemplo específico de como usar o destino.

Etapas gerais para usar um destino de conjunto de registros

O procedimento a seguir resume as etapas necessárias para salvar dados em um destino Recordset e, em seguida, usar o contêiner Foreach Loop para processar cada linha.

Para salvar dados em um destino Recordset e processar cada linha usando o contêiner Foreach Loop

  1. No SSDT (SQL Server Data Tools), crie ou abra um pacote do Integration Services.

  2. Crie uma variável que conterá o conjunto de registros salvo na memória pelo destino Recordset e defina o tipo da variável como Object.

  3. Crie variáveis adicionais dos tipos apropriados para conter os valores de cada coluna no conjunto de registros que você deseja usar.

  4. Adicione e configure o gerenciador de conexões exigido pela fonte de dados que você planeja usar em seu fluxo de dados.

  5. Adicione uma tarefa Fluxo de Dados ao pacote e, na guia Fluxo de Dados do Designer SSIS, configure fontes e transformações para carregar e transformar os dados.

  6. Adicione um destino Recordset ao fluxo de dados e conecte-o às transformações. Para a propriedade VariableName do destino Recordset, insira o nome da variável que você criou para armazenar o conjunto de registros.

  7. Na guia Fluxo de Controle do Designer SSIS, adicione um contentor de "Foreach Loop" e conecte este contentor depois da tarefa de Fluxo de Dados. Em seguida, abra o Foreach Loop Editor para configurar o contêiner com as seguintes configurações:

    1. Na página Collection, selecione o Foreach ADO Enumerator. Em seguida, para a variável de origem do objeto ADO , selecione a variável que contém o conjunto de registos.

    2. Na página Mapeamentos de Variáveis, mapeie o índice baseado em zero de cada coluna que você deseja usar para a variável apropriada.

      Em cada iteração do loop, o enumerador preenche essas variáveis com os valores de coluna da linha atual.

  8. Dentro do contêiner Foreach Loop, adicione e configure tarefas para processar uma linha do conjunto de registros de cada vez, lendo os valores das variáveis.

Exemplo de uso do destino do conjunto de registros

No exemplo a seguir, a Tarefa Fluxo de Dados carrega informações sobre funcionários do AdventureWorks2022 da tabela Sales.SalesPerson em um destino Recordset. Em seguida, um contêiner Foreach Loop lê uma linha de dados de cada vez e chama uma tarefa Enviar email. A tarefa Enviar Email usa expressões para enviar uma mensagem de email personalizada para cada vendedor sobre o valor de seu bônus.

Para criar o projeto e configurar as variáveis

  1. No SQL Server Data Tools, crie um novo projeto do Integration Services.

  2. No menu SSIS, selecione Variáveis.

  3. Na janela Variáveis, crie as variáveis que manterão o conjunto de registros e os valores de coluna da linha atual:

    1. Crie uma variável chamada BonusRecordsete defina seu tipo como Object.

      A variável BonusRecordset contém o conjunto de registros.

    2. Crie uma variável chamada EmailAddresse defina seu tipo como String.

      A variável EmailAddress contém o endereço de e-mail do vendedor.

    3. Crie uma variável chamada FirstNamee defina seu tipo como String.

      A variável FirstName contém o primeiro nome do vendedor.

    4. Crie uma variável chamada Bônuse defina o seu tipo como Double.

      A variável de Bônus contém o valor do bônus do vendedor.

Para configurar os gerenciadores de conexões

  1. Na área Gerenciadores de Conexões do Designer SSIS, adicione e configure um novo gerenciador de conexões OLE DB que se conecte ao banco de dados de exemplo AdventureWorks2022.

    A fonte OLE DB na tarefa Fluxo de Dados usará esse gerenciador de conexões para recuperar dados.

  2. Na área Gerenciadores de Conexões, adicione e configure um novo gerenciador de conexões SMTP que se conecte a um servidor SMTP disponível.

    A tarefa Enviar Email dentro do contêiner Foreach Loop usará esse gerenciador de conexões para enviar e-mails.

Para configurar o fluxo de dados e o destino do conjunto de registros

  1. Na guia Fluxo de Controle do Designer SSIS, adicione uma tarefa de Fluxo de Dados à área de desenho.

  2. Na guia Fluxo de Dados, adicione uma fonte OLE DB à tarefa de Fluxo de Dados e, em seguida, abra o Editor de Fonte OLE DB .

  3. Na página do Gerenciador de Conexões do editor, configure a fonte com as seguintes configurações:

    1. Para gerenciador de conexões OLE DB, selecione o gerenciador de conexões OLE DB que você criou anteriormente.

    2. Para modo de acesso a dados, selecione comando SQL.

    3. Para de texto do comando SQL, insira a seguinte consulta:

      SELECT     Person.Contact.EmailAddress, Person.Contact.FirstName, CONVERT(float, Sales.SalesPerson.Bonus) AS Bonus  
      FROM         Sales.SalesPerson INNER JOIN  
                            Person.Contact ON Sales.SalesPerson.SalesPersonID = Person.Contact.ContactID  
      

      Observação

      Você tem que converter o valor da moeda na coluna Bônus num flutuante antes de poder carregar esse valor numa variável de pacote cujo tipo é Double.

  4. Na guia de Fluxo de Dados, adicione um destino Recordset e conecte o destino após a origem OLE DB.

  5. Abra o Recordset Destination Editore configure o destino com as seguintes configurações:

    1. Na aba Propriedades do Componente, na propriedade VariableName, escolha User::BonusRecordset.

    2. Na guia Colunas de Entrada, selecione as três colunas disponíveis.

Para configurar o contêiner Foreach Loop e executar o pacote

  1. Na guia Fluxo de Controle de do Designer SSIS, adicione um contêiner de Loop Foreach e conecte o contêiner após a tarefa Fluxo de Dados.

  2. Abra o Foreach Loop Editore configure o contêiner com as seguintes configurações:

    1. Na página Collection, para Enumerator, selecione Foreach ADO Enumerator, e para variável de origem do objeto ADO, selecione User::BonusRecordset.

    2. Na página Mapeamentos de Variáveis, mapeie User::EmailAddress para o índice 0, User::FirstName para o índice 1 e User::Bonus para o índice 2.

  3. Na guia Fluxo de Controle, no contêiner Foreach Loop, adicione a tarefa Enviar Email.

  4. Abra o Editor de Tarefas Enviar Correio e, em seguida, na página de Correio , configure a tarefa com as seguintes definições:

    1. Para SmtpConnection, selecione o gerenciador de conexões SMTP que foi configurado anteriormente.

    2. Para de, insira um endereço de e-mail apropriado.

      Se você usar seu próprio endereço de e-mail, poderá confirmar que o pacote é executado com sucesso. Você receberá recibos não entregues pelas mensagens enviadas pela tarefa Enviar e-mail aos vendedores fictícios do AdventureWorks2022.

    3. Para a, insira um endereço de email padrão.

      Este valor não será utilizado, mas será substituído em tempo de execução pelo endereço de e-mail de cada vendedor.

    4. Para Assunto, insira "O seu bónus anual".

    5. Para MessageSourceType, selecione Entrada Direta.

  5. Na página Expressões do Editor de Tarefas Enviar Email, clique no botão de reticências (...) para abrir o Editor de Expressões de Propriedades .

  6. No Property Expressions Editor, insira as seguintes informações:

    1. Para ToLine, adicione a seguinte expressão:

      @[User::EmailAddress]  
      
    2. Para a propriedade MessageSource, adicione a seguinte expressão:

      "Dear " +  @[User::FirstName] + ": The amount of your bonus for this year is $" +  (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"  
      
  7. Execute o pacote.

    Se você tiver especificado um servidor SMTP válido e fornecido seu próprio endereço de email, receberá recibos não entregues para as mensagens que a tarefa Enviar Email envia aos vendedores fictícios do AdventureWorks2022.