Créer une pause dans un package SSIS

Créer une pause dans un package SSIS avec une requête T-SQL.

L’ETL SSIS de Microsoft ne propose pas de composant natif dédié pour créer une pause paramétrable, 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 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. En effet avec le composant SSIS Script Task, utiliser les fonctions temps pour calculer et attendre le temps souhaité.

1. Comment ajouter une pause dans un package SSIS ?

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.

2. Ajouter et paramétrer le composant Execute SQL Task

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.

2.1 Ajouter les composants SSIS à gérer

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 le package SSIS
Ajouter une tâche SQL pour créer une pause dans le package SSIS

2.2 Configurer la tâche SQL avec le temps de pause

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.

WAITFOR DELAY '00:00:05'; 
Sélectionner la base de données et ajouter le code TSQL Server pour attendre 5 secondes
Sélectionner la base de données et ajouter le code T-SQL

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

4. Conclusion sur les pauses SSIS avec du code SQL

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.

Autres tutoriels sur la gestion des packages SSIS

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*