Commande SQL

SQL Command exécute une ou plusieurs commandes SQL pour chaque enregistrement dans le dataflow. Vous pouvez utiliser SQL Command pour effectuer les tâches suivantes :

  • Exécuter des instructions INSERT/UPDATE complexes, comme des instructions comportant des sous-requêtes/jointures avec d'autres tables
  • Mettre des tables à jour après y avoir inséré/mis à jour des données pour conserver l'intégrité du référentiel
  • Mettre à jour ou supprimer un enregistrement dans une base de données avant le chargement d'un enregistrement de remplacement
  • Mettre plusieurs tables à jour en une seule transaction

Vous pouvez exécuter des commandes SQL supplémentaires avant et après l'exécution des commandes SQL principales, ainsi qu'appeler des procédures stockées.

Remarque : Les procédures stockées appelées à partir de SQL Command ne doivent pas utiliser de paramètres OUT.
Remarque : Une amélioration significative des performances peut être obtenue en utilisant plusieurs instances d'exécution de la commande SQL. Pour indiquer plusieurs instances d'exécution, cliquez sur le bouton Exécution.

Général

L'onglet Général permet d'indiquer les instructions SQL dynamiques à exécuter une fois pour chaque enregistrement. La table suivante répertorie les options disponibles dans l'onglet Général.

Option Description

Connexion

Sélectionnez la connexion de base de données à utiliser. Vos choix varient en fonction des connexions qui sont définies dans le Gestionnaire de connexion de Management Console. Si vous devez établir une nouvelle connexion à la base de données, ou en modifier ou supprimer une existante, cliquez sur Gérer.

Si vous ajoutez ou modifiez une connexion de base de données, remplissez ces champs :
Nom de la connexion
Saisissez le nom de la connexion.: Ce nom est entièrement de votre choix.
Pilote de la base de données
Sélectionnez le type de base de données approprié.
Options de connexion
Indiquez l'hôte, le port, l'instance, le nom d'utilisateur et le mot de passe à utiliser pour vous connecter à la base de données.

Instructions SQL

Entrez les instructions SQL à exécuter pour chaque enregistrement dans le dataflow. Lorsque vous commencez à taper, une fenêtre contextuelle renseignée automatiquement affichera les commandes SQL valides. Séparez les instructions SQL par un point virgule (;).

Pour spécifier une valeur d'un champ de dataflow, utilisez la syntaxe suivante :

${<field name>}

<field name> est le nom d'un champ du dataflow.

Par exemple :

UPDATE MyDatabase.dbo.customer
SET name=${Name}
WHERE id=${ID};

Dans cet exemple, ${Name} est remplacé par la valeur du champ Nom du dataflow et ${ID} est remplacé par la valeur du champ ID du dataflow.

Remarque : Les requêtes doivent utiliser le nom entièrement qualifié. Par exemple, MyDatabase.dbo.customer.

Traitement de la transaction

Indique si les enregistrements doivent être traités par lots ou tous à la fois. L'un des éléments suivants :

Taille des lots
Regroupe les enregistrements dans des lots de la taille que vous spécifiez et traite un lot à la fois.
Ensemble de l'exécution
Crée un grand lot pour tous les enregistrements et traite toutes les transactions simultanément.

Traitement de l'erreur

Indique ce qu'il faut faire si une erreur est détectée lors de l'exécution des commandes SQL. L'un des éléments suivants :

Impossible d'arrêter le dataflow lors de l'erreur
Le dataflow continue de s'exécuter si la base de données renvoie une erreur lors de l'exécution des commandes SQL.
Arrêter le dataflow après ce nombre d'erreurs
Le dataflow arrêtera de s'exécuter après que la base de données a renvoyé le nombre d'erreurs indiqué.
Remarque : S'il existe une erreur de syntaxe dans le SQL, le dataflow se terminera toujours quel que soit le paramètre que vous choisissez ici.
En outre, vous pouvez éventuellement écrire des enregistrements d'erreur dans un récepteur en connectant le port d'erreur SQL Command au type de récepteur de votre choix. Le port d'erreur est le triangle blanc à droit de l'icône du stage dans le dataflow. Par exemple, pour écrire des enregistrements d'erreur dans un fichier plat, vous devez connecter le port d'erreur SQL Command à un stage Write to File, comme indiqué ici :

.

SQL avant/après traitement

L'onglet SQL avant/après traitement permet d'indiquer les instructions SQL à exécuter une fois par exécution de dataflow, et non une fois par enregistrement comme c'est le cas avec le SQL que vous indiquez dans l'onglet Général. La table suivante répertorie les options disponibles dans l'onglet SQL avant/après traitement.

Option Description

Pre-SQL

Saisissez au moins une instruction SQL à exécuter avant de traiter les enregistrements entrant dans le stage. Les instructions SQL que vous saisissez ici sont exécutées une fois par exécution après que le dataflow démarre son exécution et avant que le stage SQL Command ne traite les premiers enregistrements.

Un exemple d'utilisation du SQL avant traitement serait de créer une table pour les enregistrements qui seront traités.

Autocommit pre-SQL

Cochez cette case pour valider les instructions SQL avant traitement, avant d'exécuter les instructions SQL dans l'onglet Général.

SI vous ne cochez pas cette case, les instructions SQL avant traitement seront validées dans la même transaction que les instructions SQL dans l'onglet Général.

Remarque : SI vous ne cochez ni la case Validation automatique des instructions SQL avant traitement ni Validation automatique des instructions SQL après traitement, toutes les instructions SQL du stage sont validées dans une transaction.
Post-SQL

Saisissez au moins une instruction SQL à exécuter une fois tous les enregistrements traités. Les instructions SQL que vous saisissez ici sont exécutées une fois par exécution après que le stage SQL Command est terminé mais avant que le dataflow ne se termine.

Un exemple d'utilisation du SQL avant traitement serait de créer un index après le traitement des enregistrements.

Autocommit post-SQL

Cochez cette case pour valider les instructions SQL après traitement dans leur propre transaction après que les commandes SQL dans l'onglet Général sont validées.

SI vous ne cochez pas cette case, les instructions SQL après traitement seront validées dans la même transaction que les instructions SQL dans l'onglet Général.

Remarque : SI vous ne cochez ni la case Validation automatique des instructions SQL avant traitement ni Validation automatique des instructions SQL après traitement, toutes les instructions SQL du stage sont validées dans une transaction.

L'onglet Exécution

L'onglet Exécution affiche Options de stage et vous offre la possibilité de définir les valeurs par défaut des options de stage.

Nom du champ

Description

Options de stage
Cette section répertorie les options de dataflow utilisées dans la requête SQL de ce stage et vous permet de fournir une valeur par défaut pour toutes ces options. La colonne Nom répertorie les options, tandis que vous pouvez saisir les valeurs par défaut dans la colonne Valeur correspondante.
Remarque : La valeur par défaut fournie ici est également affichée dans la section Map dataflow options to stages de la boîte de dialogue Options de dataflow. La boîte de dialogue vous permet également de modifier la valeur par défaut. En cas de conflit des valeurs par défaut fournies pour une option via Options de stage, Options de dataflow et Job Executor, l’ordre de priorité est le suivant : valeur fournie via Job Executor > valeur définie via la boîte de dialogue Options de dataflow > valeur saisie via Options de stage.