Använd en datasetdestination
gäller för:SQL Server
SSIS Integration Runtime i Azure Data Factory
Recordsetens destination sparar inte data till en extern datakälla. I stället sparar målet för postuppsättningen data i minnet i en postuppsättning som lagras i en Integration Services-paketvariabel av datatypen objekt. När postuppsättningsmålet har sparat data använder du vanligtvis en Foreach Loop-container med Foreach ADO-uppräknaren för att bearbeta en rad i postuppsättningen i taget. Foreach ADO-uppräknaren sparar värdet från varje kolumn i den aktuella raden i en separat paketvariabel. Sedan läser de uppgifter som du konfigurerar i Foreach Loop-containern dessa värden från variablerna och utför vissa åtgärder med dem.
Du kan använda Recordset-destinationen i många olika scenarier. Här följer några exempel:
Du kan använda en skicka-e-post-uppgift och uttrycksspråket för Integration Services för att skicka ett anpassat e-postmeddelande för varje rad i postuppsättningen.
Du kan använda en skriptkomponent som konfigurerats som en källa i en dataflödesaktivitet för att läsa kolumnvärdena i kolumnerna i dataflödet. Sedan kan du använda omvandlingar och destinationer för att omvandla och spara raden. I det här exemplet körs dataflödesaktiviteten en gång för varje rad.
I följande avsnitt beskrivs först den allmänna processen med att använda Recordset-destinationen och visar sedan ett specifikt exempel på hur du använder destinationen.
Allmänna steg för att använda ett datasättsmål
Följande procedur sammanfattar de steg som krävs för att spara data till en Recordset-destination, och använda Foreach Loop-containern för att bearbeta varje rad.
För att spara data till en Recordset-destination och bearbeta varje rad med Foreach Loop-containern
I SQL Server Data Tools (SSDT) skapar eller öppnar du ett Integration Services-paket.
Skapa en variabel som ska innehålla postuppsättningen som har sparats i minnet av Recordset-destinationen och ställ in variabelns typ till Object.
Skapa ytterligare variabler av lämpliga typer som ska innehålla värdena för varje kolumn i postuppsättningen som du vill använda.
Lägg till och konfigurera anslutningshanteraren som krävs av den datakälla som du planerar att använda i ditt dataflöde.
Lägg till en dataflödesaktivitet i paketet och på fliken Dataflöde i SSIS Designer konfigurerar du källor och transformeringar för att läsa in och transformera data.
Lägg till en Recordset-destination i dataflödet och anslut den till transformationerna. För egenskapen VariableName för recordset-målet anger du namnet på variabeln som du skapade för att lagra postuppsättningen.
På fliken Kontrollflöde i SSIS Designer lägger du till en Foreach Loop-container och ansluter den här containern efter dataflödesaktiviteten. Öppna sedan Foreach Loop Editor för att konfigurera containern med följande inställningar:
På sidan Collection väljer du Foreach ADO Enumerator. För ADO-objektkällans variabelväljer du sedan variabeln som innehåller postuppsättningen.
På sidan variabelmappningar mappas det nollbaserade indexet för varje kolumn som du vill använda till lämplig variabel.
På varje iteration av loopen fyller uppräknaren dessa variabler med kolumnvärdena från den aktuella raden.
I Foreach Loop-containern lägger du till och konfigurerar uppgifter för att bearbeta en rad i postuppsättningen i taget genom att läsa värdena från variablerna.
Exempel på användning av Recordset-destinationen
I följande exempel läser dataflödesaktiviteten in information om anställda på AdventureWorks2022 från tabellen Sales.SalesPerson till en postuppsättning. Sedan läser en Foreach Loop-container en rad med data i taget och anropar en Skicka e-post-uppgift. Aktiviteten Skicka e-post använder uttryck för att skicka ett anpassat e-postmeddelande till varje säljare om beloppet för deras bonus.
Så här skapar du projektet och konfigurerar variablerna
Skapa ett nytt Integration Services-projekt i SQL Server Data Tools.
På menyn SSIS väljer du Variabler.
I fönstret Variabler skapar du de variabler som ska innehålla datasetet och kolumnvärdena från den aktuella raden:
Skapa en variabel med namnet BonusRecordsetoch ange dess typ till Object.
Variabeln BonusRecordset innehåller postuppsättningen.
Skapa en variabel med namnet EmailAddressoch ange dess typ till String.
Variabeln EmailAddress innehåller säljarens e-postadress.
Skapa en variabel med namnet FirstNameoch ange dess typ till String.
Variabeln FirstName innehåller säljarens förnamn.
Skapa en variabel med namnet Bonusoch ange dess typ till Double.
Variabeln Bonus innehåller beloppet för säljarens bonus.
Så här konfigurerar du anslutningshanterare
I området Anslutningshanterare i SSIS Designer lägger du till och konfigurerar en ny OLE DB-anslutningshanterare som ansluter till AdventureWorks2022-exempeldatabasen.
OLE DB-källan i dataflödesaktiviteten använder anslutningshanteraren för att hämta data.
I området Anslutningshanterare lägger du till och konfigurerar en ny SMTP-anslutningshanterare som ansluter till en tillgänglig SMTP-server.
Uppgiften Skicka e-post i Foreach Loop-containern använder anslutningshanteraren för att skicka e-postmeddelanden.
Att konfigurera dataflödet och Recordset-målet
På fliken Kontrollflöde i SSIS Designer lägger du till en dataflödesaktivitet på designytan.
På fliken dataflöde lägger du till en OLE DB-källa i dataflödesaktiviteten och öppnar sedan OLE DB-källredigeraren.
På sidan Anslutningshanteraren i redigeraren konfigurerar du källan med följande inställningar:
För OLE DB-anslutningshanterarenväljer du den OLE DB-anslutningshanterare som du skapade tidigare.
För Dataåtkomstlägeväljer du SQL-kommando.
Ange följande fråga för SQL-kommandotext:
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
Obs
Du måste konvertera värdet valuta i kolumnen Bonus till en flyttal innan du kan läsa in värdet i en paketvariabel vars typ är Double.
På fliken Dataflöde, lägg till ett postuppsättningsmål och anslut målet efter OLE DB-källan.
Öppna målredigeraren recordsetoch konfigurera målet med följande inställningar:
På fliken Component Properties, för egenskapen VariableName, välj User::BonusRecordset.
På fliken indatakolumner markerar du alla tre tillgängliga kolumnerna.
Så här konfigurerar du Foreach Loop-containern och kör paketet
På fliken Kontrollflöde i SSIS Designer lägger du till en Foreach Loop-container och ansluter containern efter dataflödesaktiviteten.
Öppna Foreach Loop Editoroch konfigurera containern med följande inställningar:
På sidan Collection för Enumerator, välj Foreach ADO Enumerator, och för ADO-objektkällvariabel, välj User::BonusRecordset.
På sidan Variabelmappningar mappar du Användare::E-postadress till index 0, Användare::Förnamn till index 1 och Användare::Bonus till index 2.
På fliken Kontrollflöde lägger du till en Skicka e-post-uppgift i Foreach Loop-containern.
Öppna Skicka e-postaktivitetsredigerarenoch konfigurera sedan uppgiften med följande inställningar på sidan E-post:
För SmtpConnectionväljer du den SMTP-anslutningshanterare som konfigurerades tidigare.
Ange en lämplig e-postadress för Från.
Om du använder din egen e-postadress kan du bekräfta att paketet körs korrekt. Du får kvitton som inte kan levereras för de meddelanden som skickas av uppgiften Skicka e-post till de fiktiva säljarna i AdventureWorks2022.
För Tillanger du en standardadress för e-post.
Det här värdet kommer inte att användas, utan kommer istället att ersättas under körning av varje säljares e-postadress.
För Ämneanger du "Din årliga bonus".
För MessageSourceTypeväljer du Direct Input.
På sidan uttryck i Send Mail Task Editorklickar du på ellipsknappen (...) för att öppna redigeraren för egenskapsuttryck.
I redigeraren för egenskapsuttryckanger du följande information:
Lägg till följande uttryck för ToLine:
@[User::EmailAddress]
Lägg till följande uttryck för egenskapen MessageSource:
"Dear " + @[User::FirstName] + ": The amount of your bonus for this year is $" + (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"
Kör paketet.
Om du har angett en giltig SMTP-server och angett din egen e-postadress får du olevererbara kvitton för de meddelanden som uppgiften Skicka e-post skickar till de fiktiva säljarna i AdventureWorks2022.