Dans cet article nous allons découvrir les Data Taps, nouveauté sql server 2012.
Les data taps se rapprochent des data viewers que nous utilisons durant la phase de développement pour analyser les données qui transitent dans un data flow tasks.

Contrairement au dataviewer les data taps sont utilisables qu’en production et permettent d’extraire les données dans un fichier .csv .
Intérêt des Data Taps :
Avec les data taps il n’est plus nécessaire d’exporter un package de son environnement de production afin de pouvoir le débogger en développement.De plus, les développeurs n’ont plus besoin d’avoir accès au server de production pour analyser les données qui causent des anomalies.
L’utilisation des data taps passe par l’exécution de procédures stockées dans le catalogue SSISDB.
Voici les étapes à suivre :
– Etape 1 : Création de l’instance d’exécution pour le package
Utilisation de la procédure stockée : catalog.create_execution
– Etape 2 : Ajout du data taps
Utilisation de la procédure stockée :
catalog.add_data_tap ou catalog. add_data_tap_by_guid
– Etape 3 : Exécution du package
Utilisation de la procédure stockée : catalog.start_execution
Maintenant voyons comment cela fonctionne :
1. Creation du package
Créez un nouveau package et renommez le DataTaps.dtsx

Voici le contenu du Package :

Rentrons plus en détails. Nous avons donc :
Exécute SQL Task Editor (SQLT – TRUNCATE TABLE stgCustomer) :
– Connection : Base AvdentureWorks2012
– SQLStatement : TRUNCATE TABLE stgCustomer

Data Flow Task (DTF – Alim stgCustomer)
OLE DB Source : SRC – Sales Customer
– Base : AdventureWorks2012
– Table : Sales.Customer
OLE DB Destination : DEST – stgCustomer
– Base : AdventureWorks2012
– Table : dbo.stgCustomer
Code source de création de la table stgCustomer :
USE [AdventureWorks2012]
GO
CREATE TABLE [dbo].[stgCustomer](
[CustomerID][int] NULL,
[PersonID][int] NULL,
[StoreID][int] NULL,
[TerritoryID][int] NULL,
[AccountNumber][varchar] (20) NULL,
[ModifiedDate][datetime] NULL
) ON [PRIMARY]
GO

2. Déploiement du projet
Cliquez-droit sur le nom du projet puis sur « Deploy »

Dans la fenêtre « Integration Services Deployment Wizard »,
Cliquez sur le bouton Next

Etape : Select Destination

i. Dans le champ « Server Name », entrez le nom de votre server où se trouve votre base catalogue SSISDB. (1)
ii. Au niveau du champ « path », cliquez sur le bouton « Browse ». (2)
Note : Si votre catalogue n’est pas créé je vous invite à suivre un très bon article écrit pas Laila Tabii, dans lequel vous trouverez à l’étape 5, les étapes de déploiement et donc le catalogue SSIS.
http://mcnextpost.com/category/decisionnel/tutorial-bi/
iii. Sélectionnez le dossier SSISDB (3)
iv. Cliquez sur le bouton « New Folder » et crée un nouveau dossier. (4)
Nommez le « MSBIDatataps » (5)
Sélectionnez le dossier et cliquez sur le bouton OK.
Cliquez sur le bouton « Next » puis « Deploy »

Une fois le process fini cliquez sur bouton « Close ».

3. Collecte des informations pour la configuration du Data Taps
Valeur de l’attribut « PackagePath »
i. Ouvrez les propriétés du package « DFT – Alim stgCustomer » (touche F4)
ii. Notez (dans un wordpad) la valeur de la propriété PackagePath du package. (dans notre exemple ci-dessous c’est \Package\DFT – Alim stgCustomer)

Note : On peut aussi prendre la proriété ID si on utilise la procédure stockée catalog.add_data_tap_by_guid.
Dans notre exemple nous allons utiliser la procédure stockée catalog.add_data_tap où seule la propriété PackagePath nous est utile.

Valeur de l’attribut « IdentificationString »
Dans le DataFlow, DTF – Alim stgCustomer,
i.Cliquez-droit sur le flux de donnée (Flèche bleu entre la source et la destination).
ii. Allez dans le propriété (touche F4).
iii. Notez la valeur de la propriété « IdentificationString » (Dans notre exemple ci-dessous c’est Paths[SRC – Sales Customer.OLE DB Source Output]

Dans SSMS (SQL Server Management Studio) , connectez-vous au serveur qui contient votre base catalogue « SSISDB ».

Connectez-vous à votre base SSISDB et lancez les requêtes suivantes (il faut lancer toutes les requêtes en une seule exécution):
Etape 1 : Tout d’abord écrire la requete qui nous permettra de creer une instance d’exécution avec la procedure stockée « create_execution »
DECLARE @execution_id bigint;
EXEC catalog.create_execution ( ou EXEC [SSISDB].[catalog].[create_execution])
@folder_name=’MSBIDatataps‘,
@project_name=’DataTapsDemo‘,
@package_name=‘DataTaps.dtsx’,
@execution_id=@execution_id OUTPUT;
Avec :
@execution_id : Il s’agit de l’ID de l’exécution qui contient le package.
@folder_name : Il s’agit du nom du dossier qui contient le package à exécuter.
@project_name : Il s’agit du nom du projet qui contient le package à exécuter.
@package_name : Il s’agit du nom du package à exécuter.

Etape 2 : Puis créons la requête qui nous permettra de créer notre data tap en utilisant la procédure stockée catalog.add_data_tap.
EXEC catalog.add_data_tap (ou EXEC [SSISDB].[catalog].[add_data_tap])
@execution_id=@execution_id,
@task_package_path=‘\Package\DFT – Alim stgCustomer’,
@dataflow_path_id_string=‘Paths[SRC – Sales Customer.OLE DB Source Output]’,
@data_filename=‘stgCustomerDataTap.csv’;
Avec :
@task_package_path : Il s’agit du chemin d’accès du Data Flow Task, que nous avions noté précédemment, depuis la propriété « PackagePath » du Data Flow.
@dataflow_path_id_string : Il s’agit de la chaine d’identification du Data Flow, que nous avions noté précédemment, de la propriété « IdentificationString » recueillit précédemment.
@data_filename : Il s’agit du nom du fichier qui sera généré avec les données exportés.
Dans le cas d’une boucle For ou Foreach, des fichiers distincts sont générés.
@max_rows : Il s’agit du nombre de ligne à exporter dans le fichier durant l’exécution du data tap.
Si ce paramètre n’est pas spécifié toutes les lignes seront prises en compte.
@data_tap_id : Retourne l’exécution ID.
Enfin, la requête qui exécutera le package en utilisant la procédure stockée catalog.start_execution.
EXEC catalog.start_execution @execution_id; (ou [SSISDB].[catalog].[start_execution] )
Voici donc l’ensemble des requêtes à lancer en même temps :
DECLARE @execution_id bigint;
EXEC [SSISDB].[catalog].[create_execution]
@folder_name=‘MSBIDatataps’,
@project_name=‘DataTapsDemo’,
@package_name=‘DataTaps.dtsx’,
@execution_id= @execution_id OUTPUT;
EXEC [SSISDB].[catalog].[add_data_tap]
@execution_id = @execution_id,
@task_package_path = ‘\Package\DFT – Alim stgCustomer’,
@dataflow_path_id_string = ‘Paths[SRC – Sales Customer.OLE DB Source Output]’,
@data_filename = ‘stgCustomerDataTap.csv’ ;
— @Max_rows = 1000 (facultatif) ;
EXEC [SSISDB].[catalog].[start_execution] @execution_id;
Note : Vous pouvez télécharger le script sql générique de la creation des datataps.
Les informations d’utilisation sont indiqués dans le fichier.
Télécharger ici
Le fichier maintenant généré et se trouve dans le dossier <lecteur>:\Microsoft SQL Server\110\DTS\DataDumps folder .
On y trouve bien le fichier stgCustomerDataTap.csv avec les données qui ont transités de la source à la destination.
Notes :
- L’ajout des data taps impacte les performances d’exécution du package, il faut donc les utiliser seulement pour le débogage.
- Si vous avez beaucoup de lignes dans votre flux de données, il est conseillé de limiter le nombre de ligne dans le data taps avec la propriété Max_rows.
En effet cela pourrait agir sur la performance et générer un fichier trop lourd. - On peut supprimer un data taps en utilisant la procédure stockée catalog.remove_data_tap.
Conclusion :
Les Data Taps peuvent être très utiles en cas d’erreurs en production et peuvent permettre de gagner un temps non négligeable dans les processus de développement et de débogage.
Tutorial rédigé par Harry KANCEL
Bonjour,
Du coup, est ce que ça remplace la sortie d’erreur de certain composant ?
Merci