Exemple de package d'exécution d'instructions SQL en boucle

L'exemple de package d'exécution d'instructions SQL en boucle utilise un conteneur de boucle Foreach pour parcourir itérativement des instructions SQL enregistrées dans des fichiers texte dans un dossier. Les instructions Transact-SQL créent pour chacun des cinq territoires de ventes valides aux États-Unis une table dans la base de données AdventureWorks. La valeur de la collection de l'énumérateur de fichier Foreach correspond à une variable. Cette variable est utilisée dans une expression de propriété pour mettre à jour la valeur de la chaîne de connexion dans le Gestionnaire de connexions de fichiers avec chaque énumération.

Les données contenues dans le fichier texte présentent plusieurs problèmes : certains codes postaux ont été interprétés incorrectement comme des valeurs numériques, d'où l'absence de leurs zéros non significatifs, et les identificateurs de certains secteurs de vente ne sont pas valides. Le flux de données du package détecte et corrige les codes postaux incorrects, écrit dans un fichier les lignes de données contenant un territoire de ventes non valide et ventile les lignes de données valides entre les cinq tables créées à cet effet dans la base de données AdventureWorks.

Lorsque le package est exécuté à nouveau, les tables sont tronquées avant que les données ne soient insérées.

Si vous exécutez l'exemple sur une version non anglaise de Windows, vous devrez peut-être remplacer le nom de dossier Program Files par sa traduction pour pouvoir ouvrir ou exécuter l'exemple.

ms160815.note(fr-fr,SQL.90).gifImportant :
Les exemples sont fournis uniquement à titre éducatif. Ils ne sont pas destinés à être utilisés dans un environnement de production et n'ont pas été testés à cet usage. Microsoft ne fournit aucun support technique pour ces exemples.

Configuration requise

Avant d'exécuter cet exemple de package, assurez-vous que les conditions suivantes sont respectées :

  • L'exemple de package et les fichiers de données qu'il utilise doivent être installés sur le disque dur local.
  • Vous devez avoir installé la base de données AdventureWorks et y bénéficier des autorisations administratives.
  • Si vous comptez seulement exécuter l'exemple de package à partir de la ligne de commande, vous devez installer SQL Server 2005 Integration Services (SSIS).
  • Si vous avez l'intention d'ouvrir et d'exécuter le package dans le Concepteur SSIS, vous devez installer Business Intelligence Development Studio.

Pour plus d'informations sur l'installation des exemples, consultez la rubrique « Installation des exemples de packages Integration Services » dans la documentation en ligne de SQL Server 2005. Pour vous procurer la dernière version des exemples, y compris les nouveaux exemples publiés après la version d'origine de SQL Server 2005, consultez Exemples et exemples de base de données SQL Server 2005 (avril 2006).

Emplacement de l'exemple de package

Si les exemples ont été installés à l'emplacement par défaut, l'exemple de package d'exécution d'instructions SQL en boucle se trouve dans le dossier suivant :

C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\

Les fichiers suivants sont nécessaires pour exécuter cet exemple de package.

Fichier Description

ExecuteSQLStatementsInLoop.dtsx

Fichier du package.

Customer.txt

Fichier de données source.

CustomersWithInvalidTerritoryID.txt

Fichier où sont écrites les données non valides.

CreateProspectTableTerr1.sql

Instruction Transact-SQL qui crée la table Territory1.

CreateProspectTableTerr2.sql

Instruction Transact-SQL qui crée la table Territory2.

CreateProspectTableTerr3.sql

Instruction Transact-SQL qui crée la table Territory3.

CreateProspectTableTerr4.sql

Instruction Transact-SQL qui crée la table Territory4.

CreateProspectTableTerr5.sql

Instruction Transact-SQL qui crée la table Territory5.

Exécution de l'exemple

Le package peut être exécuté soit à partir de la ligne de commande à l'aide de l'utilitaire dtexec, soit dans Business Intelligence Development Studio.

Si vous utilisez une version non anglaise de Windows, vous devrez peut-être mettre à jour la propriété ConnectionString de tous les gestionnaires de connexions de fichiers utilisés dans le package pour pouvoir exécuter comme il se doit l'exemple de package. Pensez à vérifier que le chemin d'accès utilisé dans le gestionnaire de connexions est valide sur votre ordinateur et, si besoin est, modifiez le chemin d'accès pour utiliser le nom traduit du dossier Program Files.

Pour cet exemple, il est possible que vous deviez mettre à jour « Program Files » dans la propriété ConnectionString des gestionnaires de connexions CreateTableSQL, Customers et CustomersWithInvalidTerritoryID.

Pour exécuter le package à l'aide de dtexec

  1. Ouvrez une fenêtre d'invite de commandes.

  2. Utilisez la commande Changer de répertoire, cd, pour basculer vers le répertoire C:\Program Files\Microsoft SQL Server\90\DTS\Binn, l'emplacement de dtexec.

  3. Tapez la commande suivante :

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\ExecuteSQLStatementsInLoop Sample\ExecuteSQLStatementsInLoop\ExecuteSQLStatementsInLoop.dtsx"
    
  4. Appuyez sur Entrée.

Pour plus d'informations sur l'exécution du package à l'aide de l'utilitaire dtexec, consultez la rubrique « Utilitaire dtexec » dans la documentation en ligne de SQL Server 2005.

Pour exécuter le package dans Business Intelligence Development Studio

  1. Ouvrez Business Intelligence Development Studio.

  2. Dans le menu Fichier, pointez sur Ouvrir, puis cliquez sur Projet/Solution.

  3. Recherchez le dossier ExecuteSQLStatementsInLoop Sample et double-cliquez sur le fichier nommé ExecuteSQLStatementsInLoop.sln.

  4. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur ExecuteSQLStatementsInLoop.dtsx dans le dossier SSIS Packages, puis cliquez sur Exécuter le package.

ms160815.note(fr-fr,SQL.90).gifImportant :
Si vous ouvrez l'exemple de package d'exécution d'instructions SQL en boucle dans le concepteur SSIS avant d'exécuter le package pour la première fois, la tâche de flux de données affiche un avertissement. Cet avertissement se produit parce que les tables SQL Server qu'utilise le package n'existent pas encore ; elles sont créées lorsque vous exécutez le package pour la première fois. Si vous avez exécuté le package au moins une fois, l'avertissement n'apparaît pas lorsque vous rouvrez le package dans le concepteur SSIS. Le package s'exécute correctement malgré l'avertissement.

Composants de l'exemple

Le tableau suivant répertorie les tâches, les conteneurs, les sources, les transformations, les destinations et les gestionnaires de connexions Integration Services qui sont utilisés dans l'exemple.

Élément Fonction

Boucle Foreach

Le conteneur de boucles Foreach Run SQL Statements utilise l'énumérateur Foreach File pour parcourir de manière itérative les fichiers qui contiennent des instructions Transact-SQL. Le conteneur de boucle Foreach contient une tâche d'exécution SQL.

Tâche d'exécution SQL

Cette tâche d'exécution SQL, Create Tables, se connecte à la base de données AdventureWorks et exécute cinq instructions Transact-SQL qui créent des tables.

Tâche de flux de données

La tâche de flux de données Extract-Clean-Load Data exécute le flux de données qui extrait les données d'un fichier texte, nettoie et distribue les données, puis les charge dans des tables de la base de données AdventureWorks.

Source du fichier plat

La source du fichier plat, Extract data, extrait les données du fichier texte.

Transformation de fractionnement conditionnel

La transformation de fractionnement conditionnel, Direct Rows by TerritoryID, dirige les lignes vers différentes sorties selon la valeur de leur colonne TerritoryID. Les lignes dont la colonne TerritoryID contient des valeurs non valides sont dirigées vers la sortie par défaut.

Transformation de colonne dérivée

La transformation de colonne dérivée, Fix Postal Code, nettoie les codes postaux en ajoutant un zéro de tête aux codes postaux de quatre caractères.

Destination OLE DB

Cinq destinations OLE DB chargent les données dans cinq tables de territoire différentes.

Gestionnaire de connexions de fichiers

Le gestionnaire de connexions de fichiers Create Tables SQL se connecte aux fichiers qui contiennent des instructions SQL CREATE TABLE.

Gestionnaires de connexions de fichiers plats

Le Gestionnaire de connexions de fichiers, Customers, se connecte au fichier texte qui contient les données sources.

Le Gestionnaire de connexions de fichiers, CustomsWithInvalidTerritoryId, se connecte au fichier texte dans lequel le package écrit les données non valides.

Gestionnaire de connexions OLE DB

Le Gestionnaire de connexions OLE DB, (local).AdventureWorks, établit la connexion à la base de données AdventureWorks sur le serveur local.

Résultats de l'exemple

Pour voir les résultats d'exécution de l'exemple de package d'exécution d'instructions SQL en boucle, ouvrez une fenêtre de requête dans SQL Server Management Studio, tapez ou copiez la requête Transact-SQL suivante, puis exécutez-la.

SELECT * FROM AdventureWorks.dbo.Territory1
SELECT * FROM AdventureWorks.dbo.Territory2
SELECT * FROM AdventureWorks.dbo.Territory3
SELECT * FROM AdventureWorks.dbo.Territory4
SELECT * FROM AdventureWorks.dbo.Territory5

Cette requête extrait les données qui ont été lues dans le fichier texte et chargées dans des tables SQL Server.