Le Post Infeeny

Les articles des consultants et experts Infeeny

Les Data Taps une nouveauté SQL Server 2012

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.

Utilisation d'un dataviewer

Utilisation d’un dataviewer entre une source et une destination

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

Création du package Datataps.dtsx

Création du package Datataps.dtsx

Voici le contenu du Package :

Contenu du package datataps.dtsx

Contenu du package datataps.dtsx

Rentrons plus en détails. Nous avons donc :

i Exécute SQL Task Editor (SQLT – TRUNCATE TABLE stgCustomer) :
             – Connection : Base AvdentureWorks2012
             – SQLStatement : TRUNCATE TABLE stgCustomer 

Configuration Execute Sql Task Editor

Configuration Execute Sql Task Editor

i 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

 

Contenu du Data Flow Task "Alim stgCustomer"
Contenu du Data Flow Task « Alim stgCustomer »

Configuration du composant source

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

Configuration du composant de destination

Configuration du composant de destination

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

Deploiement de la solution dans le catalog SSIDB

Deploiement de la solution dans le catalogue SSIDB

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

Integration Services Deployment Wizard

Integration Services Deployment Wizard

        i Etape : Select Destination

Integration Services Deployment Wizard : Etape select destination

Integration Services Deployment Wizard : 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)
noteNote : 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.

https://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.
 

      i  Cliquez sur le bouton « Next » puis « Deploy »

Integration Services Deployment Wizard Review

Integration Services Deployment Wizard Review

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

Integration Services Deployment Wizard Results

Integration Services Deployment Wizard Results

      3. Collecte des informations pour la configuration du Data Taps

             i 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)

Valeur de l'attribut PackagePath du Data Flow Tasks

Valeur de l’attribut PackagePath du Data Flow Tasks

noteNote : 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.

Attribut PackagePath

Attribut PackagePath

        iValeur 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]

Valeur de l'attribut IdentificationString du flux de données

Valeur de l’attribut IdentificationString du flux de données

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

Base de données SSISDB

Base de données SSISDB

            i Connectez-vous à votre base SSISDB et lancez les requêtes suivantes (il faut lancer toutes les requêtes en une seule exécution):

           i  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 1 : Creation de l'instance d’exécution

Etape 1 : Creation de l’instance d’exécution

     i 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.

  i 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 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

i 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.

 Fichier Généré

 fichier généré details

note 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

Une réponse à “Les Data Taps une nouveauté SQL Server 2012

  1. Guillaume 14 août 2013 à 15 03 06 08068

    Bonjour,
    Du coup, est ce que ça remplace la sortie d’erreur de certain composant ?
    Merci

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :