Ce tutoriel a pour but de vous prsenter les services d'intgration de donnes de Microsoft SQL Server 2005, soit SSIS.
Introduction...................................................................................................................................................................3 I - Qu'est-ce que SSIS?.............................................................................................................................................. 3 II - L'environnement SSIS............................................................................................................................................3 II-A - Cration d'un projet SSIS............................................................................................................................. 3 II-B - L'espace de travail SSIS...............................................................................................................................4 II-C - La boite outils SSIS...................................................................................................................................5 III - Notre exemple de projet SSIS..............................................................................................................................6 III-A - Objectifs........................................................................................................................................................6 III-B - Notre source de donnes : un fichier plat................................................................................................... 6 III-C - Destination de l'import : Base de donnes MS SQL Server....................................................................... 6 IV - Gestion des sources de donnes........................................................................................................................ 7 IV-A - Cration d'une tche................................................................................................................................... 7 IV-B - Gestion de la source de donnes............................................................................................................... 8 V - Transformation des donnes............................................................................................................................... 11 V-A - Principes de notre transformation de donnes.......................................................................................... 11 V-B - Script de transformation............................................................................................................................. 11 VI - Destination des donnes.................................................................................................................................... 14 VI-A - Configuration de la destination des donnes : Base de donnes MS SQL Server................................... 14 VI-B - Import des donnes et vrifications.......................................................................................................... 17 VII - Dploiement du package SSIS......................................................................................................................... 17 Conclusion..................................................................................................................................................................20 Liens utiles................................................................................................................................................................. 21 Remerciements.......................................................................................................................................................... 21
-2Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Introduction
Afin de garder un systme d'information cohrent et de simplifier la vie des informaticiens, Microsoft SQL Server 2005 est dot d'un nouvel outil d'intgration de donnes (d'une source en passant par une transformation optionnelle des donnes, vers une destination) appell SSIS. Il permet de communiquer des donnes de systmes d'information diffrents ce qui reprsente bien les besoins actuels en terme de systme d'information, de transfert de donnes et permet de garder une cohrence. Prenons le cas d'une entreprise qui dispose d'une application. Celle-ci me gnre des donnes, dans notre cas sous forme de fichier plat, que nous souhaitons intgrer dans notre base de donnes. Notre problmatique tant de rcuprer ces informations, de vrifier leurs formats s'ils correspondent ou non aux formats de donnes de notre destination et enfin de les intgrer. Bien entendu, si notre application nous avait gnr un autre type de source de donnes, cela fonctionne aussi car SSIS gre plusieurs types de sources de donnes tels que les fichiers plats, les fichiers Excel, XML mais nous dcouvrirons tout cela plus tard. Nous allons explorer SSIS tout d'abord travers une prsentation. Nous nous familiariserons ensuite avec l'environnement de conception et d'utilisation de SSIS. Enfin, nous raliserons un exemple de projet SSIS complet.
De plus, savoir manipuler Visual Studio et connatre quelques notions de base en base de donnes (en particulier les types de donnes existants) est un plus.
-3Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Crez alors votre nouveau projet de type Integration Services. Dcouvrons alors notre environnement de travail SSIS, que nous allons dtailler :
Comme nous pouvons le constater dans l'explorateur de solution, notre projet contient ds sa cration un package : package.dtx. C'est dans ce package que nous droulerons de manire ordonne la slection, la transformation et l'importation des donnes.
Le Control Flow ou flux de contrle : permet de contrler, d'ordonner et dissocier les tches raliser par le package.
Le Data Flow ou flux de donnes : permet de contrler, d'ordonner et dissocier les flux de donnes traiter. C'est cette tape que la slection, la transformation et l'insertion des donnes sont ralises.
L'Event Handlers ou gestionnaire d'vnements : Des vnements peuvent tre associs aux lments du package. Cet onglet permet donc de grer les vnements comme par exemple un traitement spcifique suite une gestion d'erreurs.
Le Package Explorer ou explorateur de package : permet par dfinition d'explorer le package travers une arborescence. Celle-ci est trs utile en particulier lors d'importants projets SSIS, ou si le package se compose de nombreux lments.
-4Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Divers contrles ou tches sont pr-existants comme les tches de flux de donnes, de nettoyage d'historique ou encore de sauvegarde de base de donnes, etc. Au niveau flux de donnes, celle-ci se trouve organise en 3 parties : les composants source, les composants transformation et enfin les composants destination.
Nous avons notre disposition divers types de composants source comme les fichiers Excel, les fichiers plats, XML, etc. De mme nous avons plusieurs composants transformations que nous verrons ultrieurement et enfin les composants destinations tels que des fichiers plats, excel ou encore SQL Server.
-5Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Ce fichier plat a ce qu'on appelle des donnes d'entte, ici le libell des colonnes des donnes gnres. Il possde des donnes que nous allons ignorer, comme la premire colonne, car elle n'est pas prendre en compte dans l'insertion. De plus, certaines donnes devront subir des transformations avant d'tre importes car elles ne correspondent pas au format de destination. Enfin, notons que les donnes gnres ont un sparateur "|".
http://fablain.developpez.com/tutoriel/ssis/
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Client]( [IdClient] [int] IDENTITY(1,1) NOT NULL, [NomClient] [nvarchar](50) COLLATE French_CI_AS NOT NULL, [PrenomClient] [nvarchar](50) COLLATE French_CI_AS NULL, [DateNaiss] [datetime] NOT NULL, [NbreEnfant] [int] NOT NULL, [DateInterview] [datetime] NOT NULL ) ON [PRIMARY]
Une tche permet d'encapsuler tout un traitement de donnes de la source, en passant par la transformation jusqu' la destination. Il est intressant de diviser en tches chaque traitement pour une question d'organisation dans un premier temps, mais aussi de rapidit d'excution car l'on peut excuter une tche parmi d'autres de manire spcifique. Enfin, diviser en tches est aussi intressant lors de l'excution du package car lorsqu'une erreur survient, cela ne bloque pas l'excution des autres tches si celles-ci n'ont aucune erreur spcifique. Pour crer une nouvelle tche, faites glisser le composant sur l'espace de travail. Nous la renommerons traitement client :
-7Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Comme dit prcdemment, nous pouvons constater qu'il est possible (clic droit) d'excuter une tche voulue sans que cela n'influe sur les autres.
Ensuite, il nous faut crer une source de donnes. Dans notre cas c'est un fichier plat donc nous allons faire glisser le composant Flat file Source ou source fichier plat sur notre espace de travail. Bien entendu si notre source de donnes est diffrente, nous choisirons le composant correspondant.
Nous renommerons notre source de donnes en TestSSIS. Ensuite, il nous faut ouvrir la source de donnes afin de lui affecter notre fichier et nos conditions en double cliquant sur celle-ci. Cela nous amne cette fentre ou bien entendu nous allons cliquer sur new.
Ci-dessous, nous affectons notre fichier TestSSIS notre composant source. Notons que nous avons mis 1 le nombre de lignes d'entte ignorer, car le libell des colonnes (en premire ligne du fichier) n'est pas une donne prendre en compte :
-8Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Passons dans l'onglet colums ou colonnes de notre fentre. Nous pouvons constater qu'un premier aperu des donnes est disponible et que notre ligne d'entte a bien t ignore. Notons aussi que SSIS est intelligent, il a reconnu de lui mme le sparateur de donnes prsent dans le fichier source. Bien entendu il y en a d'autres possibles dans la liste de slection comme ";", tabulation ou autres.
Passons dans l'onglet advanced ou avanc de notre fentre. A cette tape, nous renommons, affectons un type et une taille nos colonnes. Nous n'effectuons cette action que pour les colonnes que nous garderons par la suite. Souvenez-vous que la premire colonne du fichier (colonne 0 ici) est un code que nous ne souhaitons pas importer. Vos types de colonnes doivent tre identiques aux types des colonnes de votre table si vous insrez vos donnes dans une base de donnes. Anticipons la transformation. Toutes les colonnes transformer, dans notre cas, resteront de type String afin de les manipuler (les dates et les entiers signs) en tant que chanes de caractres dans notre script de transformation.
-9Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Nous validons le traitement du fichier puis nous retournons la fentre initiale au niveau de l'onglet colums ou colonne. C'est ici que nous slectionnons les colonnes qui nous intressent. Par consquent, nous dcocherons uniquement la colonne 0 :
Nous validons entirement la connexion notre source de donnes. A noter que la petite croix rouge prsente en cas d'erreur (normal la cration de la source de donnes) a disparu une fois celle-ci attribue. De mme, notre manager de connexion (en bas) nous indique bien que le fichier TestSSIS a t pris en compte. En cas de modification, nous pouvons accder directement notre fichier plat en cliquant sur le fichier du manager de connexion.
- 10 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Avant de commencer la transformation, nous devons relier notre fichier source de donnes notre composant Script. Pour cela il suffit de faire glisser la flche verte jusqu'a notre composant Script comme dcrit ci-dessous :
Dbutons la transformation de donnes en double cliquant sur notre composant. Nous commencerons par l'onglet colonnes d'entres o nous slectionnons les colonnes transformer et uniquement celles-ci :
- 11 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Dans l'onglet Inputs and Outputs, nous pouvons retrouver en entre les colonnes slectionnes prcdemment :
Nous ajoutons une colonne intermdiaire pour chaque colonne transformer. Nos colonnes transformes porteront le nom T_nomdecolonne afin de les dissocier :
En plus du nom, il nous faut modifier le type de chaque colonne transforme. Celuici doit correspondre au type de nos colonnes de base de donnes (datetime, int, etc.).
- 12 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Aprs cela, nous pouvons passer concrtement au script en se rendant sur l'onglet Script puis Design Script :
Une nouvelle fentre Visual Studio For Applications s'ouvre. C'est la o nous allons programmer notre script de transformation. A noter que ce script est en VB.NET.
Voici le code, par exemple, pour manipuler nos donnes dans notre cas : Script de transformation
' Microsoft SQL Server Integration Services user script component ' This is your new script component in Microsoft Visual Basic .NET ' ScriptMain is the entrypoint class for script components Imports Imports Imports Imports Imports System System.Data System.Math Microsoft.SqlServer.Dts.Pipeline.Wrapper Microsoft.SqlServer.Dts.Runtime.Wrapper
Public Class ScriptMain Inherits UserComponent Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) ' ' Add your code here ' 'Transformation de la date de naissance If Not Row.DateNaiss_IsNull Then Dim annee As Integer = Integer.Parse(Row.DateNaiss.Substring(0, 4)) Dim mois As Integer = Integer.Parse(Row.DateNaiss.Substring(4, 2)) Dim jour As Integer = Integer.Parse(Row.DateNaiss.Substring(6, 2))
- 13 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Script de transformation
End If
'Transformation du nombre d'enfant If Not Row.NombreEnfant_IsNull Then Dim isNegativ As Boolean = Row.NombreEnfant.Contains("-") Dim nb As String = Row.NombreEnfant.Replace("-", String.Empty) Dim res As Integer = Integer.Parse(nb) If isNegativ Then res = -res End If Row.TNombreEnfant = res End If 'Transformation de la date d'interview If Not Row.DateInterview_IsNull Then Dim annee As Integer = Integer.Parse(Row.DateInterview.Substring(0, 4)) Dim mois As Integer = Integer.Parse(Row.DateInterview.Substring(4, 2)) Dim jour As Integer = 1 Row.TDateInterview = New DateTime(annee, mois, jour) End If End Sub End Class
Bien entendu, ce type de transformation reste un exemple, mme sur le principe. En effet, il est aussi possible selon les circonstances d'utiliser ce qu'on appelle les colonnes drives, avec lequel est fourni un assistant de manipulation de donnes si vous n'tes pas trs l'aise avec le VB.net. Cet assistant regroupe les principales fonctions connues sur les dates, les chanes de caractres ou autres.
VI - Destination des donnes VI-A - Configuration de la destination des donnes : Base de donnes MS SQL Server
Nous avons gr notre source de donnes, nous avons programm notre script de transformation, maintenant nous allons configurer l'import. Notre cible est une table client d'une base de donnes MS SQL Server 2005. Nous utiliserons, du fait de la base de donnes Microsoft SQL Server, le composant SQL Server Destination.
- 14 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Nous faisons donc glisser le composant SQL Server Destination lui mme reli notre script (flche verte), que nous allons configurer en double cliquant sur celui-ci :
Remplir les lments demands reste assez intuitif. Cependant, si vous ne disposez pas au premier lancement de votre chane de connexion, il vous est possible d'en crer une comme suit :
Il nous faut slectionner le serveur, le type d'authentification choisie ainsi que la base de donnes voulue. Dans l'onglet manager de connexion, nous spcifions la connexion utiliser ainsi que la table destination de notre base de donnes. Dans notre cas, la table client :
- 15 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Au niveau de l'onglet Mapping, SSIS arrive associer les bonnes colonnes entre elles. Mais concernant les colonnes transformes, il faut les spcifier nous mme comme ci-dessous :
A noter que notre manager de connexion, en plus de notre fichier nous a ajout (en bas) notre connexion notre base de donnes. Il suffit de modifier cette donne pour que la modification de destination s'effectue dans tout le package.
- 16 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
En cas d'erreur, le composant en erreur ou bloquant s'affiche en rouge. Il est possible de voir le dtail de cette erreur dans un nouvel onglet qui est apparu lors de l'excution : l'onglet Progress. Cet onglet droule tape par tape l'excution et donne les messages d'erreurs. La premire vrification possible dans Visual Studio est donc de voir tous nos composants s'orner de vert. Mais nous pouvons aussi vrifier dans notre base de donnes si l'insertion a bien t effective. Voici l'tat de notre table avant excution de notre package SSIS :
- 17 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Nous validons donc cette modification. Ensuite, il nous faut regnrer le projet. Nous vrifions que la modification a bien t prise en compte dans notre projet Visual Studio comme suit :
Il y a bien un dossier deployement, qui lui-mme contient ce qui nous intresse, savoir le fichier SSIS_tutoriel.SSISDeploymentManifest dans notre cas. Afin de dbuter le dploiement, nous allons ouvrir ce fichier qui va nous diriger vers un assistant de dploiement de package.
Dans notre cas, nous choisirons File System Deployement. Selon vos besoins et suivant la description qui peut vous aider, vous devrez choisir l'un ou l'autre.
Continuons l'assistant. Nous laissons le chemin par dfaut pour le dploiement de notre package. Puis nous continuons.
- 18 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Nous arrivons sur une fentre intermdiaire nous demandant de confirmer. Bien entendu nous confirmons :
Voil, grce cet assistant, nous venons de deployer notre package. Vrifions que tout s'est correctement droul. Nous nous connecterons notre serveur l'aide d'SQL Server Management Studio en slectionnant Integration Services en type de serveur :
- 19 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Notre package existe bien dans notre arborescence. C'est dj une bonne nouvelle. Nous allons l'excuter (clic droit Run Package) afin de constater que nous avons le mme rsultat :
Aprs excution, tout s'est droul comme prvu, les 11 lignes de notre fichier importer sont correctement arrives destination. Et si nous ne sommes toujours pas certains, il suffit de vrifier les donnes dans notre table.
Conclusion
Nous venons de parcourir quelques fonctionnalits vitales pour la cration d'un package SSIS. Bien entendu, il suffit de regarder de plus prs la bote outils pour constater qu'il en existe de nombreuses autres. Nous avons trait de SSIS et de son dploiement en "manuel". Cependant, si vous souhaitez automatiser l'excution du package (en batch), il vous faudra vous pencher davantage sur les fonctionnalits du service SQL Server Agent, qui permet de rgler trs facilement une frquence, une priode, etc. d'excution.
- 20 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/
Liens utiles
Microsoft Visual Studio Developper/Enterprise Edition Microsoft SQL Server 2005 Standard/Enterprise Edition Microsoft TechNet SQL Server Integraiton Services
Remerciements
Je remercie Dut et Pedro pour leurs corrections ainsi que pcaboche et Ditch pour leurs remarques constructives.
- 21 Copyright 2007 Fleur-Anne BLAIN. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts. Cette page est dpose la SACD.
http://fablain.developpez.com/tutoriel/ssis/