vendredi 3 février 2012

[SSIS] Data Taps dans SSIS 2012

On continue la série d'articles sur les nouveautés SSIS dans SQL Server 2012 avec les data taps.



On a tous utilisé lors du développement de packages SSIS les data viewers qui nous permettaient de voir les données qui transitaient au sein d'un dataflow. Un des soucis des data viewers était leur utilisation limitée à la phase de développement : on ne pouvait pas l'utiliser sur nos environnements de productions. De plus lors de plantages, il nous arrivait de redescendre les packages sur notre environnement de développement et d'activer ces fameux data viewers, mais la désynchronisation des données entre les deux environnements compliquaient le travail de débogage.

Pour remédier à cela, Microsoft implémente dans SSIS 2012 les data taps. Ils permettent comme les data viewers de récupérer les données qui transitent, mais, en plus de les insérer dans des fichiers CSV. Autre avantage, ils ne nécessitent pas d'intervenir sur le package en lui-même, mais juste sur leur script d'exécution.

On imagine aisément leur utilisation lors d'un plantage en production pour vérifier les données réellement chargées.

En pratique

J'utilise comme support un package tout simple contenant un simple dataflow de chargement de données.


J'ai ainsi dans mon package deux data flow path :




On va voir que les noms des data flow path sont utiles par la suite.


Il ne reste alors qu'à scripter une instance d'exécution de mon package et d'ajouter les data taps et enfin de l'exécuter réellement. Pour cela on utilise 3 nouvelles procédure stockées :

  • [catalog].[create_execution]
  • [catalog].[add_data_tap]
  • [catalog].[start_execution]


L'architecture de mon projet SSIS est la suivante :

Le script est le suivant :


J'ai créé ici 2 data taps, les valeurs de paramètres à renseigner sont assez explicites quand on regarde l'arborescence du projet SSIS. Les noms des data flow path sont à renseigner ici. 

Il n'y a guère la valeur de la variable @task_package_path qui peut sembler plus obscure. On trouve la valeur à renseigner dans les propriétés du data flow task :



J'ai juste spécifié des noms de fichiers csv pour la variable @data_filename sans spécifier de dossier, il crée donc par défaut les fichiers dans le répertoire C:\Program Files\Microsoft SQL Server\110\DTS\DataDumps

Après exécution, on retrouve bien nos deux fichiers de données dans le répertoire mentionné.



Conclusion

C'est vraiment une fonctionnalité intéressante qui risque d'être beaucoup utilisée sur les projets en cas d'anomalie de production. C'est le genre de petite nouveauté qui "ne mange pas de pain" mais qui montre l'évolution dans le bon sens d'Integration Services.

1 commentaire:

  1. Thanks for you comment in my blog. I have updated my post with that information!

    Merci pour votre commentaire sur mon blog. J'ai mis à jour mon post avec cette information!

    RépondreSupprimer