Megosztás:


Rekordhalmaz célhelyének használata

A következőkre vonatkozik:SQL Server SSIS integrációs modul az Azure Data Factoryben

A Rekordhalmaz célhelye nem menti az adatokat külső adatforrásba. Ehelyett a Rekordhalmaz célhelye a memóriába menti az adatokat egy olyan rekordhalmazba, amely az Objektum adattípus egy Integration Services-csomagváltozójában van tárolva. Miután a Rekordhalmaz célhely mentette az adatokat, általában egy Foreach Loop-tárolót használ a Foreach ADO enumerátorral a rekordhalmaz egy sorának feldolgozásához egyszerre. A Foreach ADO enumerátor az aktuális sor minden oszlopából egy külön csomagváltozóba menti az értéket. Ezután a Foreach Loop-tárolóban konfigurált feladatok beolvassák ezeket az értékeket a változókból, és végrehajtanak velük valamilyen műveletet.

A Rekordhalmaz célhelyét számos különböző forgatókönyvben használhatja. Íme néhány példa:

  • A Levelek küldése feladat és az Integration Services kifejezésnyelv használatával testre szabott e-mail üzenetet küldhet a rekordhalmaz minden sorához.

  • Egy adatforrásként konfigurált szkriptösszetevővel egy adatfolyam-feladaton belül beolvashatja az oszlopértékeket az adatfolyam oszlopaiba. Ezután átalakításokat alkalmazva és célhelyeket használva alakíthatja át és mentheti a sort. Ebben a példában az adatfolyam-feladat minden sorhoz egyszer fut.

A következő szakaszok először a Rekordhalmaz célhelyének használatának általános folyamatát ismertetik, majd egy konkrét példát mutatnak a célhely használatára.

A rekordhalmaz célhelyének használatának általános lépései

Az alábbi eljárás összefoglalja azokat a lépéseket, amelyek szükségesek ahhoz, hogy adatokat mentsen egy Rekordhalmaz-célhelyre, majd a Foreach Loop-tárolóval dolgozza fel az egyes sorokat.

Adatok mentése a Rekordhalmaz célhelyére, és az egyes sorok feldolgozása a Foreach Hurok tárolóval

  1. Az SQL Server Data Tools (SSDT) alkalmazásban hozzon létre vagy nyisson meg egy Integration Services-csomagot.

  2. Hozzon létre egy változót, amely tartalmazza a Rekordhalmaz célhelye által a memóriába mentett rekordhalmazt, és állítsa a változó típusát Objektum.

  3. Hozzon létre további változókat a megfelelő típusok közül, amelyek tartalmazzák a használni kívánt rekordhalmaz egyes oszlopainak értékeit.

  4. Adja hozzá és konfigurálja az adatfolyamban használni kívánt adatforráshoz szükséges kapcsolatkezelőt.

  5. Adjon hozzá egy adatfolyam-feladatot a csomaghoz, és az SSIS Designer Adatfolyam lapján konfiguráljon forrásokat és átalakításokat az adatok betöltéséhez és átalakításához.

  6. Adjon hozzá egy Rekordhalmaz-célhelyet az adatfolyamhoz, és csatlakoztassa az átalakításokhoz. A rekordhalmaz célhelyének VariableName tulajdonságához adja meg annak a változónak a nevét, amelyet a rekordhalmaz tárolásához hozott létre.

  7. Az SSIS Designer Control Flow lapján adjon hozzá egy Foreach Loop-tárolót, és csatlakoztassa ezt a tárolót az adatfolyam-feladat után. Ezután nyissa meg a Foreach Hurokszerkesztő a tároló konfigurálásához a következő beállításokkal:

    1. A Gyűjtemény lapon válassza ki a Foreach ADO Enumerator lehetőséget. Ezután ADO objektumforrás változójánakesetében válassza ki a rekordhalmazt tartalmazó változót.

    2. A változóleképezések lapon képezheti le a megfelelő változóhoz használni kívánt oszlopok nullaalapú indexét.

      A ciklus minden iterációján az enumerátor feltölti ezeket a változókat az aktuális sor oszlopértékeivel.

  8. A Foreach Loop-tárolóban adjon hozzá és konfiguráljon feladatokat a rekordhalmaz egy sorának egyszerre történő feldolgozásához a változók értékeinek beolvasásával.

Példa a Rekordhalmaz célhelyének használatára

Az alábbi példában az adatfolyam-feladat betölti az AdventureWorks2025-alkalmazottak adatait a Sales.SalesPerson táblából egy Rekordhalmaz-célhelyre. Ezután egy Foreach Loop-tároló egyszerre egy adatsort olvas be, és meghív egy Küldési e-mail feladatot. A Levelek küldése feladat kifejezésekkel testre szabott e-mailt küld minden értékesítőnek a bónusz összegéről.

A projekt létrehozása és a változók konfigurálása

  1. Az SQL Server Data Toolsban hozzon létre egy új Integration Services-projektet.

  2. Az SSIS menüben válassza Változóklehetőséget.

  3. A Változók ablakban hozza létre a rekordhalmazt és az aktuális sor oszlopértékeit tartalmazó változókat:

    1. Hozzon létre egy BonusRecordsetnevű változót, és állítsa be a típusát Objektum.

      A BonusRecordset változó tartalmazza a rekordhalmazt.

    2. Hozzon létre egy EmailAddressnevű változót, és állítsa be a típusát Karakterlánc.

      A EmailAddress változó tartalmazza az értékesítő e-mail-címét.

    3. Hozzon létre egy névvel ellátott, FirstNamenevű változót, és állítsa be a típusát Sztring.

      A FirstName változó az értékesítő utónevét tartalmazza.

    4. Hozzon létre egy változót, Bónusz, és állítsa be a típusát a Dupla.

      A Bónusz változó az értékesítő bónuszának összegét tartalmazza.

A kapcsolatkezelők konfigurálása

  1. Az SSIS Designer Kapcsolatkezelő területén adjon hozzá és konfiguráljon egy új OLE DB kapcsolatkezelőt, amely csatlakozik az AdventureWorks2025 mintaadatbázishoz.

    Az adatfolyam-feladat OLE DB-forrása ezt a kapcsolatkezelőt fogja használni az adatok lekéréséhez.

  2. A Kapcsolatkezelők területen adjon hozzá és konfiguráljon egy új SMTP-kapcsolatkezelőt, amely egy elérhető SMTP-kiszolgálóhoz csatlakozik.

    A Foreach Loop tárolóban található Levelek küldése feladat ezt a kapcsolatkezelőt fogja használni az e-mailek küldéséhez.

Az adatfolyam és a rekordhalmaz célhelyének konfigurálása

  1. Az SSIS Designer Control Flow lapján adjon hozzá egy adatfolyam-feladatot a tervezőfelülethez.

  2. Az Adatfolyam lapon adjon hozzá egy OLE DB-forrást az adatfolyam-feladathoz, majd nyissa meg az OLE DB-forrásszerkesztőt.

  3. A szerkesztő Connection Manager lapján konfigurálja a forrást a következő beállításokkal:

    1. Az OLE DB kapcsolatkezelőesetében válassza ki a korábban létrehozott OLE DB kapcsolatkezelőt.

    2. Adatelérési módesetén válassza SQL-parancslehetőséget.

    3. A SQL parancsszöveghez, írja be a következő lekérdezést:

      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  
      

      Jegyzet

      A bónusz oszlopban lévő pénznem értékét át kell alakítania egy lebegőpontos, mielőtt betöltené az értéket egy olyan csomagváltozóba, amelynek típusa Dupla.

  4. Az Adatfolyam lapon adjon hozzá egy Rekordhalmaz-célhelyet, és csatlakoztassa a célhelyet az OLE DB-forrás után.

  5. Nyissa meg a Rekordhalmaz célszerkesztő, és konfigurálja a célhelyet a következő beállításokkal:

    1. Az Összetevő tulajdonságai lapon a VariableName tulajdonsághoz válassza ki a Felhasználó::BonusRecordsetelemet.

    2. A Beviteli oszlopok lapon jelölje ki mind a három elérhető oszlopot.

A Foreach Loop-tároló konfigurálása és a csomag futtatása

  1. Az SSIS Designer Control Flow lapján vegyen fel egy Foreach Loop-tárolót, és csatlakoztassa a tárolót az adatfolyam-feladat után.

  2. Nyissa meg a Foreach Hurokszerkesztő, és konfigurálja a tárolót a következő beállításokkal:

    1. A Gyűjtemény lapon Enumeratoresetében válassza a Foreach ADO Enumeratorlehetőséget, ADO-objektum forrásváltozójánakesetében pedig válassza Felhasználó::BonusRecordsetlehetőséget.

    2. A Változóleképezések lapon képezze le a Felhasználó::EmailAddress-t az 0 index értékre, a Felhasználó::FirstName-t az 1 index értékre, és a Felhasználó::Bónusz-t az 2 index értékre.

  3. A Control Flow lapon, a Foreach Loop tárolóban adjon hozzá egy Küldési e-mail feladatot.

  4. Nyissa meg a Küldési feladatszerkesztő, majd a Posta lapon konfigurálja a feladatot az alábbi beállításokkal:

    1. SmtpConnectionesetében válassza ki a korábban konfigurált SMTP-kapcsolatkezelőt.

    2. A Feladómezőben adja meg a megfelelő e-mail-címet.

      Ha saját e-mail-címét használja, ellenőrizheti, hogy a csomag sikeresen fut-e. Ön kézbesíthetetlen visszaigazolásokat fog kapni az AdventureWorks2025 fiktív értékesítőinek a Levelek küldése feladat által küldött üzenetekről.

    3. A mezőben adja meg az alapértelmezett e-mail-címet.

      Ez az érték nem kerül felhasználásra, hanem futásidőben az egyes értékesítők e-mail-címére lesz lecserélve.

    4. Az Tárgymezőbe írja be az "Éves bónusz" kifejezést.

    5. MessageSourceTypeesetében válassza a Közvetlen bevitelilehetőséget.

  5. A KifejezésekKüldési feladatszerkesztőlapján kattintson a három pontra (...) a Tulajdonságkifejezések szerkesztőmegnyitásához.

  6. A Tulajdonságkifejezések szerkesztőadja meg a következő adatokat:

    1. ToLineesetén adja hozzá a következő kifejezést:

      @[User::EmailAddress]  
      
    2. A MessageSource tulajdonsághoz adja hozzá a következő kifejezést:

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

    Ha egy érvényes SMTP-kiszolgálót adott meg, és megadta a saját e-mail-címét, kézbesíthetetlen visszaigazolásokat fog kapni azokról az üzenetekről, amelyeket a Levelek küldése feladat az AdventureWorks2025 fiktív értékesítőinek küld.