Créer une pause dans un package SSIS

Créer une pause dans un package SSIS avec une requête T-SQL et la fonction WAIT FOR DELAY.

L’ETL SSIS de Microsoft ne propose pas de composant natif dédié pour créer une pause dans un package SSIS. Qu’elle soit de quelques secondes ou quelques minutes dans un flux de contrôle entre 2 séquences par exemple. Pour marquer un temps d’arrêt entre l’exécution de plusieurs tâches SSIS, de requêtes SQL, ou de conteneurs, une bonne alternative est de créer une boucle en code C#, basée sur le temps. De la même manière, avec le composant SSIS Script Task, il est possible d’utiliser les fonctions de temps pour paramétrer la pause et attendre le temps souhaité.

Toutefois une solution encode plus simple est d’utiliser la tâche Execute SQL Task et la fonction T-SQL WAITFOR DELAY. Ou encore de programmer le moment auquel le package doit être finir son exécution. Cette page liste tous les tutoriels pour apprendre les bases de Microsoft SSIS.

Voici un exemple de script Transact-SQL pour ajouter simplement une pause de quelques secondes, minutes ou quelques heures avant de passer au composant suivant. Il permet par exemple d’attendre qu’une copie de fichiers ou de chargement se finisse totalement. Pour cela, paramétrer les heures, les minutes et les secondes directement dans le code SQL ou en dur dans une variable SSIS.

1. Ajouter et paramétrer les composant SSIS

Pour commencer, créer un projet SSIS avec Visual Studio 2019. Ensuite, configurer une connexion OLE DB vers une base de données SQL Server, ici c’est une base locale et c’est donc localhost qui est utilisé comme serveur. Puis ajouter les composants suivants :

  1. Un premier flux de données.
  2. Le composant Execute SQL Task (Exécution de tâche SQL) entre les deux flux de données pour temporiser l’exécution.
  3. Le deuxième flux de données SSIS.
Ajouter une tâche SQL pour créer une pause dans un package SSIS
Ajouter une tâche SQL pour créer une pause dans un package SSIS

2. Configurer la tâche SSIS d’exécution de code SQL

Configurer le composant avec une requête T-SQL pour attendre le temps souhaité, avec un format de type : HH:MM:SS, dans cet ordre :

  • Heures
  • Minutes
  • Secondes

Utiliser cet exemple de code SQL pour créer une pause de 5 secondes avec un script T-SQL.

WAITFOR DELAY '00:00:05'; 
Sélectionner la base et ajouter le code SQL pour créer une pause de 5 secondes
Sélectionner la base et ajouter le code SQL pour créer une pause de 5 secondes

3. Exécuter le package SSIS et observer le temps de pause

Une fois la pause en place, exécuter le package contenant les flux de données et observer le temps de pause de 5 secondes.

Le package SSIS fait une pause de 5 secondes puis passe à la tâche suivante
Le package SSIS fait une pause de 5 secondes puis passe à la tâche suivante

Une fois la pause terminée, les tâches suivantes s’exécutent normalement. Il est également possible de gérer ce script également avec des variables SSIS pour plus de flexibilité.

Fin d'exécution avec succès du package SSIS avec une pause
Fin d’exécution avec succès du package SSIS avec une pause

Conclusion sur les pauses dans les packages SSIS

Utiliser un script SQL Server est le moyen le plus simple d’implémenter une pause dans un package SSIS. Il ne permet pas de régler les besoins plus complexes comme attendre le dépôt d’un fichier texte par exemple. Mais le script peut être utilisé dans une boucle avec des contraintes de précédence et des variables pour parvenir à la solution.

Exécuter un package SSIS en ligne de commande avec DTExec

Autres tutoriels sur la gestion des packages SSIS

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *