Utiliser une destination de jeu d'enregistrements
S’applique à :SQL Server SSIS Integration Runtime dans Azure Data Factory
La destination d'ensemble d'enregistrements n'enregistre pas les données sur une source de données externe. Elle enregistre les données en mémoire dans un ensemble d’enregistrements stocké dans une variable de package Integration Services de type Object. Une fois que la destination d'ensemble d'enregistrements a sauvegardé les données, vous devez en général utiliser un conteneur de boucles Foreach avec l'énumérateur ADO Foreach pour traiter une par une les lignes de l'ensemble d'enregistrements. L'énumérateur ADO Foreach enregistre la valeur de chaque colonne de la ligne actuelle dans une variable de package distincte. Ensuite, les tâches que vous configurez à l'intérieur du conteneur de boucles Foreach lisent les valeurs contenues dans ces variables et effectuent certaines actions sur ces valeurs.
Vous pouvez utiliser la destination d'ensemble d'enregistrements dans de nombreux scénarios différents. Voici quelques exemples :
Vous pouvez utiliser une tâche Envoyer un message et le langage d’expression Integration Services pour envoyer un message électronique personnalisé pour chaque ligne de l’ensemble d’enregistrements.
Vous pouvez utiliser un composant Script configuré en tant que source à l'intérieur d'une tâche de flux de données pour lire les valeurs de colonne dans les colonnes du flux de données. Vous pouvez ensuite utiliser des transformations et des destinations pour transformer et enregistrer la ligne. Dans cet exemple, la tâche de flux de données s'exécute une fois pour chaque ligne.
Les sections suivantes décrivent tout d'abord le processus général d'utilisation de la destination d'ensemble d'enregistrements et présentent ensuite un exemple spécifique d'utilisation de la destination.
Étapes générales d'utilisation d'une destination d'ensemble d'enregistrements
La procédure suivante résume les étapes requises pour enregistrer des données dans une destination d'ensemble d'enregistrements, puis l'utilisation du conteneur de boucles Foreach pour traiter chaque ligne.
Pour enregistrer des données dans une destination d'ensemble d'enregistrements et traiter chaque ligne à l'aide du conteneur de boucles Foreach
Dans SQL Server Data Tools (SSDT), créez ou ouvrez un package Integration Services.
Créez une variable qui contiendra l'ensemble d'enregistrements enregistré en mémoire par la destination d'ensemble d'enregistrements et définissez le type de la variable sur Object.
Créez des variables supplémentaires avec les types appropriés pour contenir les valeurs de chaque colonne de l'ensemble d'enregistrements que vous souhaitez utiliser.
Ajoutez et configurez le gestionnaire de connexions requis par la source de données que vous envisagez d'utiliser dans votre flux de données.
Ajoutez une tâche de flux de données au package et, sous l'onglet Flux de données du concepteur SSIS, configurez des sources et des transformations pour le chargement et la transformation des données.
Ajoutez une destination d'ensemble d'enregistrements au flux de données et connectez-la aux transformations. Pour la propriété VariableName de la destination d'ensemble d'enregistrements, entrez le nom de la variable que vous avez créée pour contenir l'ensemble d'enregistrements.
Sous l'onglet Flux de contrôle du concepteur SSIS, ajoutez un conteneur de boucles Foreach et connectez ce conteneur à la tâche de flux de données. Ouvrez ensuite l' Éditeur de boucle Foreach pour configurer le conteneur avec les paramètres suivants :
Dans la page Collection , sélectionnez l'énumérateur ADO Foreach. Puis, pour Variable source de l'objet ADO, sélectionnez la variable qui contient l'ensemble d'enregistrements.
Dans la page Mappage de variables , mappez l’index de base zéro de chaque colonne que vous souhaitez utiliser à la variable appropriée.
Sur chaque itération de la boucle, l'énumérateur remplit les variables avec les valeurs de colonne de la ligne actuelle.
À l'intérieur du conteneur de boucles Foreach, ajoutez et configurez des tâches destinées à traiter une par une les lignes de l'ensemble d'enregistrements en lisant les valeurs des variables.
Exemple d'utilisation de la destination d'ensemble d'enregistrements
Dans l’exemple suivant, la tâche de flux de données charge des informations relatives aux employés AdventureWorks2022 de la table Sales.SalesPerson dans une destination d’ensemble d’enregistrements. Un conteneur de boucles Foreach lit ensuite les lignes de données une par une et appelle une tâche Envoyer un message. La tâche Envoyer un message électronique utilise des expressions pour envoyer un message électronique personnalisé à chaque vendeur sur le montant de son bonus.
Pour créer le projet et configurer les variables
Dans SQL Server Data Tools (SSDT), créez un nouveau projet Integration Services.
Dans le menu SSIS , sélectionnez Variables.
Dans la fenêtre Variables , créez les variables qui contiendront l'ensemble d'enregistrements et les valeurs de colonne de la ligne actuelle :
Créez une variable nommée BonusRecordsetet définissez son type sur Object.
La variable BonusRecordset contient le jeu d’enregistrements.
Créez une variable nommée EmailAddresset définissez son type sur String.
La variable EmailAddress contient l’adresse e-mail du vendeur.
Créez une variable nommée FirstNameet définissez son type sur String.
La variable FirstName contient le prénom du vendeur.
Créez une variable nommée Bonuset définissez son type sur Double.
La variable Bonus contient le montant de la prime du vendeur.
Pour configurer les gestionnaires de connexions
Dans la zone Gestionnaires de connexions du concepteur SSIS, ajoutez et configurez un nouveau gestionnaire de connexions OLE DB qui se connecte à l’exemple de base de données AdventureWorks2022.
La source OLE DB dans la tâche de flux de données utilisera ce gestionnaire de connexions pour extraire les données.
Dans la zone Gestionnaires de connexions, ajoutez et configurez un nouveau gestionnaire de connexions SMTP qui se connecte à un serveur SMTP disponible.
La tâche Envoyer un message à l'intérieur du conteneur de boucles Foreach utilisera ce gestionnaire de connexions pour envoyer des courriers électroniques.
Pour configurer le flux de données et la destination d'ensemble d'enregistrements
Sous l'onglet Flux de contrôle du concepteur SSIS, ajoutez une tâche de flux de données à l'aire de conception.
Sous l'onglet Flux de données tab, add an OLE DB source to the Flux de données task, and then open the Éditeur de source OLE DB.
Dans la page Gestionnaire de connexions de l'éditeur, configurez la source avec les paramètres suivants :
Pour Gestionnaire de connexions OLE DB, sélectionnez le gestionnaire de connexions OLE DB que vous venez de créer.
Pour Mode d'accès aux données, sélectionnez Commande SQL.
Pour Texte de la commande SQL, entrez la requête suivante :
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
Notes
Vous devez remplacer la valeur currency de la colonne Bonus par float pour pouvoir charger cette valeur dans une variable de package de type Double.
Sous l'onglet Flux de données , ajoutez une destination d'ensemble d'enregistrements et connectez-la à la source OLE DB.
Ouvrez l' Éditeur de destination d'ensemble d'enregistrementset configurez la destination avec les paramètres suivants :
Dans l’onglet Propriétés du composant , pour la propriété VariableName , sélectionnez User::BonusRecordset.
Sous l'onglet Colonnes d'entrée , sélectionnez les trois colonnes disponibles.
Pour configurer le conteneur de boucles Foreach et exécuter le package
Sous l'onglet Flux de contrôle du concepteur SSIS, ajoutez un conteneur de boucles Foreach et connectez-le à la tâche de flux de données.
Ouvrez l' Éditeur de boucle Foreachet configurez le conteneur avec les paramètres suivants :
Sur la page Collection , pour Énumérateur, sélectionnez Énumérateur ADO Foreach, et pour Variable source de l’objet ADO, sélectionnez User::BonusRecordset.
Sur la page Mappage de variables , mappez la variable User::EmailAddress à l’index 0, la variable User::FirstName à l’index 1 et la variable User::Bonus à l’index 2.
Sous l'onglet Flux de contrôle , à l'intérieur du conteneur de boucles Foreach, ajoutez une tâche Envoyer un message.
Ouvrez l' Éditeur de tâche Envoyer un message, puis dans la page Courrier , configurez la tâche avec les paramètres suivants :
Pour SmtpConnection, sélectionnez le gestionnaire de connexions SMTP qui a été préalablement configuré.
Pour De, entrez une adresse e-mail appropriée.
Si vous utilisez votre propre adresse de messagerie, vous pourrez vérifier que le package s'est exécuté avec succès. Vous recevrez des accusés de non-remise pour les messages envoyés par la tâche Envoyer un message aux vendeurs fictifs d’AdventureWorks2022.
Pour À, entrez une adresse e-mail par défaut.
Cette valeur ne sera pas utilisée, mais sera remplacée au moment de l'exécution par l'adresse de messagerie de chaque vendeur.
Pour Objet, entrez « Votre prime annuelle ».
Pour MessageSourceType, sélectionnez Entrée directe.
Dans la page Expressions de l’Éditeur de tâche Envoyer un message, cliquez sur le bouton de sélection (...) pour ouvrir l’Éditeur d’expressions de la propriété.
Dans l' Éditeur d'expressions de la propriété, entrez les informations suivantes :
Pour ToLine, ajoutez l'expression suivante :
@[User::EmailAddress]
Pour la propriété MessageSource , ajoutez l'expression suivante :
"Dear " + @[User::FirstName] + ": The amount of your bonus for this year is $" + (DT_WSTR, 12) @[User::Bonus] + ". Thank you!"
Exécutez le package.
Si vous avez spécifié un serveur SMTP valide et avez fourni votre propre adresse e-mail, vous recevrez des accusés de non-remise pour les messages envoyés par la tâche Envoyer un message aux vendeurs fictifs d’AdventureWorks2022.