Używanie miejsca docelowego zestawu rekordów
Dotyczy:SQL Server SSIS Integration Runtime w usłudze Azure Data Factory
Docelowe miejsce zestawu rekordów nie zapisuje danych do zewnętrznego źródła danych. Zamiast tego, miejsce docelowe zestawu rekordów zapisuje dane w pamięci w zestawie rekordów przechowywanym w zmiennej typu danych Object pakietu usług Integration Services. Po zapisaniu danych przez miejsce docelowe zestawu rekordów zazwyczaj używasz kontenera pętli Foreach z modułem wyliczania Foreach ADO, aby przetworzyć jeden wiersz zestawu rekordów naraz. Moduł wyliczający Foreach ADO zapisuje wartość z każdej kolumny bieżącego wiersza w osobnej zmiennej pakietu. Następnie zadania konfigurowane wewnątrz kontenera pętli Foreach odczytują te wartości ze zmiennych i wykonują za ich pomocą jakąś akcję.
Można używać miejsca docelowego dla zestawu rekordów w wielu różnych scenariuszach. Oto kilka przykładów:
Możesz użyć zadania Wyślij pocztę i języka wyrażeń usług Integration Services, aby wysłać niestandardową wiadomość e-mail dla każdego wiersza w zestawie rekordów.
Możesz użyć składnika Skrypt skonfigurowanego jako źródło w zadaniu przepływu danych, aby odczytać wartości kolumn do kolumn przepływu danych. Następnie możesz skorzystać z transformacji i lokalizacji docelowych, aby przekształcić i zapisać wiersz. W tym przykładzie zadanie przepływu danych jest uruchamiane raz dla każdego wiersza.
W poniższych sekcjach najpierw opisano ogólny proces korzystania z miejsca docelowego zestawu rekordów, a następnie przedstawiono konkretny przykład sposobu korzystania z miejsca docelowego.
Ogólne kroki korzystania z miejsca docelowego zestawu rekordów
Poniższa procedura zawiera podsumowanie kroków wymaganych do zapisania danych w miejscu docelowym zestawu rekordów, a następnie przetworzenia każdego wiersza przy użyciu kontenera Foreach Loop.
Aby zapisać dane w miejscu docelowym zestawu rekordów i przetworzyć każdy wiersz przy użyciu kontenera pętli Foreach
W SQL Server Data Tools (SSDT) utwórz lub otwórz pakiet Integration Services.
Utwórz zmienną, która będzie zawierała zestaw rekordów zapisany w pamięci przez docelowy zestaw rekordów, i ustaw typ zmiennej na Object.
Utwórz dodatkowe zmienne odpowiednich typów, aby zawierały wartości każdej kolumny w zestawie rekordów, którego chcesz użyć.
Dodaj i skonfiguruj menedżera połączeń wymaganego przez źródło danych, które ma być używane w przepływie danych.
Dodaj zadanie przepływu danych do pakietu. Na karcie Przepływ danych w SSIS Designer skonfiguruj źródła i przekształcenia, aby ładować i przekształcać dane.
Dodaj docelowe miejsce zestawu rekordów do przepływu danych i połącz z transformacjami. Dla właściwości VariableName miejsca docelowego zestawu rekordów wprowadź nazwę zmiennej utworzonej do przechowywania zestawu rekordów.
Na karcie „Przepływ sterowania” w projektancie SSIS dodaj kontener pętli „Foreach” i połącz ten kontener z zadaniem przepływu danych. Następnie otwórz Foreach Loop Editor , aby skonfigurować kontener z następującymi ustawieniami:
Na stronie Collection wybierz Foreach ADO Enumerator. Następnie dla zmiennej źródłowej ADOwybierz zmienną zawierającą zestaw rekordów.
Na stronie Mapowania zmiennych przypisz indeks zaczynający się od zera każdej kolumny, którą chcesz używać, do odpowiedniej zmiennej.
W każdej iteracji pętli moduł wyliczający wypełnia te zmienne wartościami kolumn z bieżącego wiersza.
Wewnątrz kontenera Foreach Loop dodaj i skonfiguruj zadania do przetwarzania jednego wiersza zestawu rekordów jednocześnie, odczytując wartości ze zmiennych.
Przykład użycia miejsca docelowego zestawu rekordów
W poniższym przykładzie zadanie przepływu danych ładuje informacje o pracownikach AdventureWorks2022 z tabeli Sales.SalesPerson do miejsca docelowego zestawu rekordów. Następnie kontener pętli Foreach odczytuje jeden wiersz danych naraz i wywołuje zadanie Wyślij pocztę. Zadanie Wyślij pocztę używa wyrażeń do wysyłania dostosowanej wiadomości e-mail do każdego sprzedawcy o wysokości premii.
Aby utworzyć projekt i skonfigurować zmienne
W narzędziach SQL Server Data Tools utwórz nowy projekt usług Integration Services.
W menu
SSIS wybierz pozycję zmienne . W oknie Zmienne utwórz zmienne, które będą przechowywać zestaw rekordów i wartości kolumn z bieżącego wiersza.
Utwórz zmienną o nazwie BonusRecordseti ustaw jej typ na Object.
Zmienna BonusRecordset przechowuje zestaw rekordów.
Utwórz zmienną o nazwie EmailAddressi ustaw jej typ na wartość String.
Zmienna EmailAddress przechowuje adres e-mail sprzedawcy.
Utwórz zmienną o nazwie FirstNamei ustaw jej typ na wartość String.
Zmienna FirstName zawiera imię sprzedawcy.
Utwórz zmienną o nazwie Bonusi ustaw jej typ na Double.
Zmienna bonusowa zawiera kwotę premii sprzedawcy.
Aby móc skonfigurować menedżerów połączeń
W obszarze Menedżerowie połączeń projektanta usług SSIS dodaj i skonfiguruj nowy menedżer połączeń OLE DB, który łączy się z przykładową bazą danych AdventureWorks2022.
Źródło OLE DB w zadaniu przepływu danych będzie używać tego menedżera połączeń do pobierania danych.
W obszarze Menedżerowie połączeń dodaj i skonfiguruj nowego menedżera połączeń SMTP, który łączy się z dostępnym serwerem SMTP.
Zadanie Wyślij pocztę w kontenerze pętli Foreach będzie używać tego menedżera połączeń do wysyłania wiadomości e-mail.
Aby skonfigurować przepływ danych i miejsce docelowe zestawu rekordów
W karcie Przepływ sterowania projektanta usług SSIS dodaj zadanie Przepływu danych do powierzchni projektowej.
Na karcie przepływu danych dodaj źródło OLE DB do zadania Przepływu danych, a następnie otwórz edytor źródłowy OLE DB.
Na stronie menedżera połączeń edytora skonfiguruj źródło przy użyciu następujących ustawień:
W przypadku menedżera połączeń OLE DB , wybierz menedżera połączeń OLE DB, którego wcześniej utworzyłeś.
W przypadkutrybu dostępu do danych
wybierz polecenie SQL .Dla tekstu polecenia SQL wprowadź następujące zapytanie:
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
Notatka
Musisz przekonwertować wartość waluty
w kolumnie Bonus na zmienną double .
Na karcie przepływu danych dodaj docelowy zestaw rekordów i połącz go ze źródłem OLE DB.
Otwórz edytor docelowy zestawu rekordów i skonfiguruj lokalizację docelową przy użyciu następujących ustawień:
Na karcie Właściwości składnika dla właściwości VariableName wybierz User::BonusRecordset.
Na karcie Kolumny wejściowe zaznacz wszystkie trzy dostępne kolumny.
Aby skonfigurować kontener Foreach Loop i uruchomić pakiet
Na karcie karty przepływu sterowania w Projektancie SSIS dodaj kontener pętli Foreach i połącz kontener z zadaniem przepływu danych.
Otwórz Edytor pętli foreachi skonfiguruj kontener przy użyciu następujących ustawień:
Na stronie Collection dla Enumeratorwybierz pozycję Foreach ADO Enumerator, a w zmiennej źródłowej obiektu ADO wybierz User::BonusRecordset.
Na stronie mapowania zmiennych mapuj User::EmailAddress do indeksu 0, User::FirstName do indeksu 1, a User::Bonus do indeksu 2.
Na karcie Przepływ Sterowania, wewnątrz kontenera pętli ForEach, dodaj zadanie Wyślij wiadomość e-mail.
Otwórz edytor zadań wysyłania poczty
, a następnie na stronie poczty skonfiguruj zadanie przy użyciu następujących ustawień: W przypadku SmtpConnection wybierz wcześniej skonfigurowanego menedżera połączeń SMTP.
W przypadku Zwprowadź odpowiedni adres e-mail.
Jeśli używasz własnego adresu e-mail, możesz potwierdzić, że pakiet działa pomyślnie. Otrzymasz nieuprawnione potwierdzenia dotyczące wiadomości wysłanych przez zadanie Wyślij pocztę do fikcyjnych sprzedawców AdventureWorks2022.
W obszarze od dowprowadź domyślny adres e-mail.
Ta wartość nie będzie używana, ale zostanie zastąpiona podczas działania przez adres e-mail każdego sprzedawcy.
W przypadku tematuwprowadź "Twój roczny bonus".
W przypadku MessageSourceTypewybierz Direct Input.
Na Expressions strony Send Mail Task Editorkliknij przycisk wielokropka (...), aby otworzyć edytor wyrażeń właściwości .
W edytorze wyrażeń właściwości wprowadź następujące informacje:
W przypadku ToLinedodaj następujące wyrażenie:
@[User::EmailAddress]
Dla właściwości MessageSource dodaj następujące wyrażenie:
"Dear " + @[User::FirstName] + ": The amount of your bonus for this year is $" + (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"
Uruchom pakiet.
Jeśli określono prawidłowy serwer SMTP i podano własny adres e-mail, otrzymasz nieuprawnione potwierdzenia dla wiadomości, które zadanie Wyślij pocztę wysyła do fikcyjnych sprzedawców AdventureWorks2022.