Een recordsetbestemming gebruiken
van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory
De Recordset-bestemming slaat geen gegevens op in een externe gegevensbron. In plaats daarvan slaat de Recordset-bestemming gegevens op in het geheugen in een recordset die is opgeslagen in een Integration Services-pakketvariabele van het Object gegevenstype. Nadat de recordsetbestemming de gegevens heeft opgeslagen, gebruikt u doorgaans een Foreach Loop-container met de Foreach ADO-opsomming om één rij van de recordset tegelijk te verwerken. De Foreach ADO-opsomming slaat de waarde van elke kolom van de huidige rij op in een afzonderlijke pakketvariabele. Vervolgens lezen de taken die u in de Foreach Loop-container configureert deze waarden uit de variabelen en voeren ze een actie uit.
U kunt de bestemming Recordset in veel verschillende scenario's gebruiken. Hier volgen enkele voorbeelden:
U kunt een verzendtaak en de expressietaal Integration Services gebruiken om een aangepast e-mailbericht te verzenden voor elke rij in de recordset.
U kunt een scriptonderdeel gebruiken dat is geconfigureerd als een bron, in een gegevensstroomtaak, om de kolomwaarden te lezen in de kolommen van de gegevensstroom. Vervolgens kunt u transformaties en bestemmingen gebruiken om de rij te transformeren en op te slaan. In dit voorbeeld wordt de gegevensstroomtaak eenmaal uitgevoerd voor elke rij.
In de volgende secties wordt eerst het algemene proces beschreven voor het gebruik van de bestemming Recordset en ziet u vervolgens een specifiek voorbeeld van het gebruik van de bestemming.
Algemene stappen voor het gebruik van een recordsetbestemming
De volgende procedure bevat een overzicht van de stappen die nodig zijn om gegevens op te slaan op een recordsetbestemming en vervolgens de Foreach Loop-container te gebruiken om elke rij te verwerken.
Gegevens opslaan in een recordsetbestemming en elke rij verwerken met behulp van de Foreach Loop-container
Maak of open een Integration Services-pakket in SQL Server Data Tools (SSDT).
Maak een variabele die de recordset bevat die is opgeslagen in het geheugen door de bestemming Recordset en stel het type van de variabele in op Object.
Maak extra variabelen van de juiste typen om de waarden van elke kolom in de recordset te bevatten die u wilt gebruiken.
Voeg de benodigde verbindingbeheerder toe en configureer deze voor de gegevensbron die u wilt gebruiken in uw gegevensstroom.
Voeg een gegevensstroomtaak toe aan het pakket en configureer op het tabblad Gegevensstroom van SSIS Designer bronnen en transformaties om de gegevens te laden en te transformeren.
Voeg een recordsetbestemming toe aan de gegevensstroom en verbind deze met de transformaties. Voer voor de eigenschap VariableName van de bestemming Recordset de naam in van de variabele die u hebt gemaakt voor het opslaan van de recordset.
Voeg op het tabblad Controlestroom van SSIS Designer een Foreach Loop-container toe en verbind deze container na de gegevensstroomtaak. Open vervolgens de Foreach Loop Editor om de container te configureren met de volgende instellingen:
Selecteer op de pagina Verzameling de Foreach ADO Enumerator. Selecteer vervolgens voor ADO-objectbronvariabelede variabele die de recordset bevat.
Wijs op de pagina variabeletoewijzingen de op nul gebaseerde index toe van elke kolom die u wilt gebruiken voor de juiste variabele.
Bij elke herhaling van de lus vult de enumerator deze variabelen met de kolomwaarden uit de huidige rij.
Voeg in de Foreach Loop-container taken toe en configureer deze om één rij van de recordset tegelijk te verwerken door de waarden uit de variabelen te lezen.
Voorbeeld van het gebruik van de doelrecordset
In het volgende voorbeeld laadt de gegevensstroomtaak informatie over Werknemers van AdventureWorks2022 uit de tabel Sales.SalesPerson in een Recordet-bestemming. Vervolgens leest een Foreach Loop-container één rij met gegevens tegelijk en roept een taak E-mail verzenden aan. De taak E-mail verzenden maakt gebruik van expressies om een aangepast e-mailbericht te verzenden naar elke verkoper over het bedrag van de bonus.
Het project maken en de variabelen configureren
Maak in SQL Server Data Tools een nieuw Integration Services-project.
Selecteer op het SSIS-menu de optie Variabelen.
Maak in het venster Variabelen de variabelen die de recordset en de kolomwaarden uit de huidige rij bevatten:
Maak een variabele met de naam BonusRecordseten stel het bijbehorende type in op Object.
De variabele BonusRecordset bevat de recordset.
Maak een variabele met de naam EmailAddressen stel het type in op Tekenreeks.
De variabele EmailAddress bevat het e-mailadres van de verkoper.
Maak een variabele met de naam FirstNameen stel het type in op Tekenreeks.
De variabele FirstName bevat de voornaam van de verkoper.
Maak een variabele met de naam Bonusen stel het type in op Double.
De variabele Bonus bevat het bedrag van de bonus van de verkoper.
De verbindingsbeheerders configureren
Voeg in het gebied Verbindingsbeheer van de SSIS Designer een nieuw OLE DB-verbindingsbeheer toe en configureer deze die verbinding maakt met de voorbeelddatabase AdventureWorks2022.
De OLE DB-bron in de gegevensstroomtaak gebruikt dit verbindingsbeheer om gegevens op te halen.
Voeg in het gebied Verbindingsbeheer een nieuwe SMTP-verbindingsbeheerder toe en configureer deze die verbinding maakt met een beschikbare SMTP-server.
De taak E-mail verzenden in de Foreach Loop-container gebruikt dit verbindingsbeheer om e-mailberichten te verzenden.
De gegevensstroom en de doelrecordset configureren
Voeg op het tabblad Controlestroom van SSIS Designer een gegevensstroomtaak toe aan het ontwerpoppervlak.
Voeg op het tabblad Gegevensstroom een OLE DB-bron toe aan de gegevensstroomtaak en open vervolgens de OLE DB-broneditor.
Configureer op de pagina Verbindingsbeheer van de editor de bron met de volgende instellingen:
Selecteer voor OLE DB-verbindingsbeheerhet OLE DB-verbindingsbeheer dat u eerder hebt gemaakt.
Voor gegevenstoegangsmodus, selecteer SQL-opdracht.
Voer voor SQL-opdrachttekstde volgende query in:
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
Notitie
U dient de valuta waarde in de kolom Bonus om te zetten naar een float voordat u deze waarde kunt laden in een pakketvariabele waarvan het type Doubleis.
Voeg op het tabblad Gegevensstroom een recordsetbestemming toe en verbind de bestemming na de OLE DB-bron.
Open de Doeleditor voor recordseten configureer de bestemming met de volgende instellingen:
Selecteer op het tabblad Eigenschappen van componenten voor de eigenschap VariableName de optie User::BonusRecordset.
Selecteer op het tabblad Invoerkolommen alle drie de beschikbare kolommen.
De Foreach Loop-container configureren en het pakket uitvoeren
Voeg op het Control Flow tabblad van SSIS Designer een Foreach Loop-container toe en verbind de container na de Data Flow-taak.
Open de Foreach Loop Editoren configureer de container met de volgende instellingen:
Selecteer op de pagina Verzameling voor EnumeratorForeach ADO Enumeratoren selecteer ADO-objectbronvariabeleUser::BonusRecordset.
Wijs op de pagina Variable MappingsGebruiker::EmailAddress toe aan index 0, Gebruiker::FirstName aan index 1, en Gebruiker::Bonus aan index 2.
Voeg op het tabblad Controlestroom, in de Foreach-luscontainer, een Verzend-e-mailtaak toe.
Open de E-mailtaakeditoren configureer vervolgens op de pagina Mail de taak met de volgende instellingen:
Selecteer voor SmtpConnectionhet SMTP-verbindingsbeheer dat eerder is geconfigureerd.
Voer voor Vaneen geschikt e-mailadres in.
Als u uw eigen e-mailadres gebruikt, kunt u bevestigen dat het pakket correct wordt uitgevoerd. U ontvangt onbestelbare ontvangstbevestigingen voor de berichten verzonden door de taak Mail verzenden naar de fictieve verkopers van AdventureWorks2022.
Voer voor Aaneen standaard-e-mailadres in.
Deze waarde wordt niet gebruikt, maar wordt tijdens runtime vervangen door het e-mailadres van elke verkoper.
Voer voor Onderwerp"Uw jaarlijkse bonus" in.
Voor MessageSourceType, selecteer Direct Input.
Klik op de Expressies pagina van de Verzenden E-mailtaakeditorop de knop met het beletselteken (...) om de Editor voor eigenschappen-expressieste openen.
Voer in de Editor voor eigenschapsexpressiesde volgende gegevens in:
Voeg voor ToLinede volgende expressie toe:
@[User::EmailAddress]
Voeg voor de eigenschap MessageSource de volgende expressie toe:
"Dear " + @[User::FirstName] + ": The amount of your bonus for this year is $" + (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"
Voer het pakket uit.
Als u een geldige SMTP-server hebt opgegeven en uw eigen e-mailadres hebt opgegeven, ontvangt u onbestelbare ontvangstbevestigingen voor de berichten die de taak E-mail verzenden verzendt naar de fictieve verkopers van AdventureWorks2022.