Archive

Posts Tagged ‘SSIS’

Composants additionnels SSIS

February 25th, 2013 9 comments

SSIS a l’avantage d’être assez ouvert et de pouvoir créer ses propres composants. Notamment lorsque les composants de base ne suffisent pas pour satisfaire nos besoins client, ou pour simplifier un process ETL qui serait bien trop lourd.

C’est dans ce cadre que 5 composants SSIS “made in Homsys” ont vu le jour au fil du temps, et peuvent s’avérer bien utiles dans certains cas.

2 sources de flux de données :

  • Dim Temps Source
  • Dim Géo FR Source

3 transformations :

  • Proper Case
  • Compteur
  • Recherche sur Intervalle

L’ensemble du package est téléchargeable ici :
SSISHomsysComponents_v1.zip

Tous les composants sont dans une seule bibliothèque (DLL) et s’installe facilement. Il existe une version pour SSIS 2005, et une autre pour SSIS 2008.
Chaque composant possède une interface graphique pour le paramétrage, et la doc associée explique leur utilisation.

Plutôt qu’un long discours, je vous invite à parcourt le guide fourni dans le package …

A votre disposition pour d’éventuelles remarques/améliorations/nouvelles idées …

Categories: Trucs & astuces Tags: ,

Le programme de Microsoft pour 2012 [1/2]

January 27th, 2012 1 comment

On en saura sans doute beaucoup plus à l’occasion des Microsoft Techdays 2012 (prévus les 7,8 et 9 Février prochain), mais voici déjà une brève présentation des différents produits et évolutions qui vont désormais constituer l’écosystème BI autour de SQL-Server 2012. SQL-Server “Denali” – c’est son nom de code – est prévu en version commerciale pour la fin de l’année. (Pour l’heure il n’est disponible qu’en Release Candidate depuis le site officiel). Petit tour d’horizon en deux parties.

Mont McKinley ou "Denali"

Le mont McKinley, ou "Denali" en langue locale athapascane, plus haut sommet d'Amérique du Nord, culmine à 6194m

1.1/ SQL-Server 2012 aka “Denali”

Pour sa mouture 2012 de SQL-Server, Microsoft met en avant 2 fonctionnalités nouvelles pour son SGBD:

  • Le AlwaysOn qui est une solution de reprise en cas de sinistre (disaster recovery plan) afin de garantir une haute disponibilité de la base de données. Cette fonctionnalité est sensée garantir un “failover” deux fois plus rapide en cas de sinistre. Voir cette vidéo de présentation.
  • Les ColumnStore Index (projet “Apollo”) pour proposer de meilleures performances sur des requêtes de type jointure en étoile. Ces indexes colonnes viennent enrichir la liste des solutions d’optimisation et de tuning existantes sur les précédentes versions (indexes, indexes cluster, statistics…). Plus d’info dans ce livre blanc sur les bénéfices d’Apollo.

On notera aussi d’autres innovations intéressantes sur SQL-Server 2012:

  • Le Change Data Capture (CDC) qui supporte maintenant les bases de données Oracle
  • Le SSMA (SQL Server Migration Assistant), qui permet d’automatiser la migration de base de données non SQL Server vers SQL Server
  • Juneau: une nouvelle interface de développement rassemblant Visual Studio et Management Studio dans la même IDE
  • La fonction FileTable permettant de créer un objet base de données lié à un fichier localisé dans un dossier du système de fichier.
  • Etc…

1.2/ BI Semantic Model (BISM)

La vraie nouveauté conceptuelle de SQL-Server 2012 est l’arrivée du BI Semantic Model (ou BISM). Il s’agit là d’un vrai modèle Business de l’entreprise qui vient rassembler et enrichir les précédentes notions d’UDM (SSAS) et de report model (Report Builder).

Ce modèle est composé de 3 couches:

  • une couche d’accès aux données offrant un accès en ROLAP, MOLAP, Vertipaq (nouveau serveur OLAP en mémoire, faisant partie du projet Apollo), ou direct query
  • une couche Business logique qui offre une structuration des données soit en OLAP via SSAS et MDX ou bien via powerpivot et DAX
  • une couche data model qui supporte les données tabulaires et multi-dimensionnelles

Ces BI semantic models pourront être créés à partir de Visual Studio ou de PowerPivot.

Vous l’aurez compris, Microsoft tente une nouvelle fois de présenter une alternative métier crédible à la  notion d'”univers” cher à Business Objects. En l’intégrant avec toutes ses technologies existantes (ce qui n’était pas le cas de feu les report models), il semble cette année mettre toutes les chances de son coté. A voir si les BISM tiennent le choc sur le gros volumes.

A noter qu’il n’est pas prévu pour l’instant de possibilité de migrer des UDM en BISM.

BI Semantic Model architecture

Le BISM dans le nouveau écosystème SQL-Server 2012

1.3/ Integration Services

Les nouveautés 2012 concernant l’intégration de données sont articulées autour d’outils complémentaires à SSIS: Data Quality Services et le déjà célèbre Master Data Services.

  • Data Quality Services (DQS): c’est un outil destiné à maintenir et améliorer la qualité des données de l’entreprise en provenance de sources tierces (clients, fournisseurs, …).
    • DQS permet aussi la modélisation métier des données. Par le biais d’une interface client il sera possible de créer des bases de connaissance (type thésaurus).
    • Ces bases contiendront des règles d’épuration, de validation ainsi que les données de référence. DQS est aussi un outil précieux pour le recherche de doublons et dans l’évolution des bases de connaissance.
    • Enfin, les différentes règles de nettoyage pourront être utilisées au niveau les flux de données dans Integration services (SSIS) via un nouveau composant.
  • Master Data Services (MDS) qui existait déjà dans la version précédente de SQL-Server a été grandement amélioré. Il permet de définir les données de références, de gérer les métadonnées. Grâce à son intégration comme plugin d’Excel, il permet de filtrer et modifier les données avant de les visualiser dans Excel. On regrettera qu’il n’existe apparemment toujours pas de système de “lock” pour gérer les accès simultanés…

1.4/ Analysis Services

SSAS est indiscutablement le parent pauvre des nouveautés de cette version Denali. Tellement pauvre que dans la foulée de la présentation l’an dernier son sort a agité la blogosphère spécialisée (voir cet article entre autre). De nombreux experts ont caressée l’hypothèse que Microsoft soit en train de s’employer à mettre son moteur OLAP sur une voie de garage.

Il est vrai que le manque de souplesse des modèles UDM sous-jacents à SSAS a souvent été pointé du doigt tant il représentait une difficulté à résoudre les problématiques métiers les moins standards. Cela a conduit les experts du monde entier à “tordre” l’outil dans tous les sens afin de faire rentrer une logique métier calquée sur du relationnel, dans une modélisation multi-dimensionnelle.

C’est dans cette perspective qu’il faut voir l’arrivée de BISM, Vertipaq et DAX. Ces outils sont destinés à compléter SSAS plus qu’à le remplacer. Car comme cela a été exprimé plus haut, les volumes très importants de données nécessiteront toujours de “dénormaliser” et de passer en dimensionnel. Ces “concurents” au couple SSAS/MDX permettront juste de se simplifier la vie pour modéliser des problématiques métiers relationnelles sur des volumes faibles.

La suite de cet article sur les nouveautés de SQL-Server 2012 sera publiée début Février. Au programme: Reporting Services, Crescent, PowerPivot, Barcelona et Azure !

Liens utiles :

Outil de gestion des fichiers de configuration de SSIS

November 28th, 2011 No comments

La gestion des fichiers de configuration en XML de SSIS n’est pas chose aisée. Il n’est pas facile de les modifier à la main, et les re-générer à chaque modification est un processus assez lourd. Quand en plus on doit gérer plusieurs fichiers de configuration en fonction des différents environnements de développement, recette, production… cette tâche devient rapidement compliquée et source d’erreurs.

Je vous mets donc à disposition cet outil éprouvé dans plusieurs projets BI. Cet outil est une interface web développée en asp qui vous permet de gérer simplement les différents fichiers de configurations de SSIS et ce quel que soit le nombre d’environnements différents.

L’outil permet de déclarer des environnements, de créer de nouvelles variables et de modifier les valeurs associées à ces variables pour chacun des environnements. Vous pouvez directement comparer, pour une variable, sa valeur dans chacun des environnements.

Les modifications ne sont prises en compte que lors de leur validation et une sauvegarde des fichiers est effectuée avant leur ré-écriture.

Les variables déjà présentes dans les fichiers de configuration sont automatiquement intégrées. Vous n’avez donc pas à déclarer les variables que vous avez déjà définies.

Vous n’aurez donc plus à toucher les fichiers de configuration XML, l’outil vous offre une interface simple et efficace pour les manipuler.

Archive à télécharger :
SSISConfig.zip

Déclaration des environnements :
Déclaration des environnements

Liste des variables et affichage de leur valeur dans chacun des environnements :
Liste des variables et affichage de leur valeur dans chacun des environnements

Création d’une nouvelle variable :
Création d’une nouvelle variable :

Modification de la valeur d’une variable :
Modification de la valeur d’une variable :

Validation des modifications :
Validation des modifications

Sauvegarde automatique des anciennes versions des fichiers :
Sauvegarde automatique des anciennes versions des fichiers

Categories: Divers Tags:

Réaliser un système décisionnel avec SQL Server 2008 R2

July 16th, 2010 No comments

Sébastien Fantini, expert Microsoft au sein d’Homsys, publie un des premiers ouvrages en français sur la nouvelle suite BI de Microsoft : “Business Intelligence avec SQL Server 2008 R2 – Maîtrisez les concepts et réalisez un système décisionnel”.

Il s’adresse à tous les membres d’une équipe décisionnelle : chef de projet, architecte, développeur ETL, développeur de rapports, assistance à la maîtrise d’ouvrage (AMOA). Les concepts clés du décisionnel sont détaillés tout au long du livre et mis en application concrètement au travers d’un cas. Ainsi, au cours des différents chapitres, le lecteur va utiliser les différents outils de la suite SQL Server pour bâtir progressivement le système décisionnel d’une société virtuelle, Distrisys. L’ouvrage regorge de solutions concrètes et professionnelles et de bonnes pratiques issues des retours d’expérience de l’auteur. Sont abordés les sujets suivants : – L’architecture des serveurs et le choix des licences – La modélisation de l’entrepôt de données – La conception du cube Analysis Services – La réalisation des différents types de flux d’alimentation ETL avec Integration Services – L’utilisation d’Excel et de PowerPivot pour exploiter les données décisionnelles – La réalisation de rapports opérationnels et décisionnels avec Reporting Services.

Nouveauté juillet 2010 aux Editions ENI – Lien Amazon

La gestion des logs avec SSIS

February 1st, 2010 4 comments

Pouvoir être en mesure de suivre la bonne exécution des traitements batch SSIS est primordiale.

Plusieurs solutions permettent de répondre à ce besoin de suivi :

  1. La méthode manuelle : Management Studio propose un historique d’exécution des jobs
  2. L’utilisation de tâches SQL permettant de renseigner une table de log
  3. L’utilisation des logs standards SSIS

La solution 2. est très souvent rencontrée sur les projets par simple méconnaissance de la 3.

Cet article décrit donc comment mettre en place en quelques minutes un suivi des traitements SSIS performant.

L’activation des logs s’effectue pour chaque package dans le menu SSIS\Enregistrement (Logging en version anglaise)

Les étapes à réaliser sont les suivantes :

  1. Choisir dans la liste déroulante type de fournisseur, où seront stockés les logs (base de données, fichier XML,…) puis cliquer sur le bouton Ajouter. Personnellement, je préconise le stockage SQL Server qui permet une exploitation aisée de ces données
  2. Cocher la case à cocher devant le nom du package
  3. Activer la case à cocher devant le fournisseur SQL Server
  4. Sélectionner la base de données hébergeant la table de log

clip_image002

Remarque : Il n’est pas possible de choisir le nom de la table dans laquelle les logs seront stockés. SSIS 2005 les stocke dans la table sysdtslog90, SSIS 2008 dans sysssislog.

L’onglet Détails permet ensuite de spécifier le niveau de finesse dans le suivi des traitements :

Afin d’éviter des logs trop volumineux, je recommande de tracer uniquement les événements suivants :

  • OnPreExecute : Trace le début d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle
  • OnPostExecute : Trace la fin d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle
  • OnError : Trace toutes les erreurs survenues aux niveaux Flux de contrôle et Flux de données

clip_image002[5]

Les principaux champs de la table de logs sont les suivants :

  • Event : événement qui a généré le log (OnPreExecute, OnPostExecute ou OnError)
  • Computer : ordinateur qui l’a exécuté
  • Operator : utilisateur qui l’a exécuté (permet par exemple de différencier une exécution automatique effectuée par l’agent SQL Server d’une exécution manuelle de rattrapage)
  • Source : étape du flux qui a généré le log
  • SourceId : Identifiant de l’élément (package, tâche de contrôle…) ayant généré le log
  • executionId : identifiant unique de l’exécution
  • Starttime : début de l’événement qui a généré le log
  • Endtime : fin de l’événement qui a généré le log
  • Message : détails de l’événement (notamment les messages d’erreurs sur l’événement OnError)
    En quelques clics nous avons ainsi paramétré le stockage de l’information relative à l’exécution des flux SSIS. Ces données peuvent maintenant être requêtées en SQL ou utilisées via du reporting.

    A noter qu’une ligne est écrite dans la table de log pour chaque événement: début d’une tâche, fin d’une tâche ou erreur. Les données doivent donc être manipulées pour obtenir une ligne du type: nom de la tâche, date de début, date de fin et statut d’exécution.

    Homsys propose ainsi un ensemble de tableaux de suivi développés sous Reporting Services. Cet aspect sera présenté dans un prochain article…

Les modèles de package SSIS

January 18th, 2010 2 comments

Fonctionnalité souvent méconnue et sous utilisée : SSIS (SQL Server Integration Services) permet de créer des modèles de package qui intègrent les éléments récurrents d’un projet.

Pourquoi utiliser des modèles de package :

Un modèle de package pourra par exemple contenir les éléments suivants :

  • Cartouche d’en tête documentant le flux (description du flux, date de création, auteur…)
  • Activation des logs d’audit des traitements
  • Connexion vers les bases de données du projet
  • Variables communes (nom du serveur DWH, chemin de stockage des fichiers sources, chemin de l’archivage…)
  • Utilisation du fichier de configuration qui permet l’alimentation dynamique des variables communes
  • Propriété delayValidation valant True afin d’éviter les ralentissements à l’ouverture des packages

La mise en place de ces éléments permet ainsi un gain de temps intéressant, une homogénéisation des différents développements (les variables communes auront le même nom dans l’ensemble des packages) ainsi qu’un risque d’anomalie réduit (erreur de paramétrage des connexions, du fichier de configuration…).

Comment développer un package modèle ?

Un package modèle est un package SSIS standard dans lequel les éléments communs auront été implémentés. Ce package doit ensuite être copié dans le répertoire :

C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems

Comment utiliser un package modèle :

L’utilisation du modèle de package s’effectue via les étapes suivantes :

Cliquer droit sur le projet puis Ajouter\Nouvel Element :

clip_image002

Utiliser un modèle de package Etape 1

Ajouter l’élément Package_model_SSIS :

clip_image004

Utiliser un modèle de package Etape 2

Categories: Trucs & astuces Tags: , , ,

La gestion des doublons avec SSIS

January 12th, 2010 2 comments

Plusieurs techniques existent permettant de détecter et traiter des lignes en doublon avec Microsoft SQL Server Integration Services (SSIS).

La plupart des ressources sur le web proposent de gérer ce point uniquement avec du SQL dans la source de données, certaines proposent même de passer par des tables temporaires.

Je vous propose ici une solution rapide à mettre en œuvre tout en bénéficiant des avantages de SSIS en termes de maintenance, de performance et de lisibilité en phase de développement.

Cette solution répond au besoin suivant :

  • Ma table cible doit être alimentée avec des lignes uniques par rapport à une clé,
  • Dans le cas où des doublons sont rencontrés, l’une des lignes doit être conservée,
  • Les doublons peuvent être identifiés et éventuellement stockés dans une table de rejet.

Ce cas est notamment rencontré lorsque l’on charge un référentiel client. Souvent, la base client doit être la plus complète possible mais dans le cas où la donnée serait dupliquée, on ne souhaite ni dupliquer le client ni perdre la trace de son existence. On appliquera alors une règle fonctionnelle permettant de déterminer la version du client à conserver en cas de doublon (le numéro de création le plus élevé ou la date de mise à jour la plus récente par exemple).

clip_image002

1 : Contrôle de doublon avec conservation de l’une des lignes du doublon

1) DOUBLON : Source contenant potentiellement des doublons

2) Contrôle doublon : Recherche effectuée avec les paramétrages spécifiques suivants :

a. Onglet Général : « Rediriger les lignes en erreur vers la sortie sans correspondance »

b. Onglet Connexion : requête sur la même table que la source DOUBLON permettant de renvoyer l’ensemble des lignes qui ne sont pas en doublon et, pour les lignes en doublon, la ligne qui devra être conservée. La requête est construite comme suit :

select CLE, max(COND) COND from doublon group by CLE

Où CLE correspond à la ou les colonnes constituant la clé sur laquelle le test d’unicité est effectué, COND correspond au critère permettant de choisir la ligne à conserver en cas de doublon (numéro de création, date de mise à jour…). Selon les cas, le Max peut être remplacé par un Min.

c. Onglet Colonne : Faire la jointure sur la ou les colonnes CLE et COND

3) Le flux de sortie « Sortie de recherche avec correspondance » fournit les lignes non doublonnées ainsi que la ligne devant être conservée en cas de doublon.

4) Le flux de sortie « Sortie de recherche sans correspondance » fournit les lignes qui sont doublonnées, qui pourront ensuite être insérées dans une table de rejet.

Remarque : Dans le cas où la présence de doublons doit interrompre le chargement, on pourra implémenter un compteur de nombre de lignes sur la branche « sortie sans correspondance » qui, s’il est différent de 0 bloquera la suite de l’exécution.

Autres solutions permettant de traiter des doublons :

  • Utilisation du composant MSDN : http://msdn.microsoft.com/fr-fr/library/ms160916%28SQL.90%29.aspx (je ne l’ai personnellement pas testé).
  • Utilisation de la tâche de Tri et de l’option « Supprimer les lignes avec valeurs de tri en double » : L’avantage de cette solution est sa simplicité de mise en œuvre, son inconvénient est qu’elle ne permet pas de récupérer les lignes en doublon.
  • Utilisation des composants multidiffusion, agrégation, jointure pour reproduire un fonctionnement identique à la requête SQL présente dans le lookup de la solution présentée ci-dessus. L’avantage de cette solution est qu’elle est uniquement basée sur l’utilisation de composants SSIS, son inconvénient est qu’elle est un peu plus longue à développer et ses performances sont un peu moins bonnes.
Categories: Trucs & astuces Tags: ,

SSIS : Lenteurs extrêmes à l’ouverture/exécution de BIDS

January 4th, 2010 No comments

Vous avez peut-être déjà rencontré un problème d’extrème lenteur à l’ouverture de BI Developement Studio (BIDS), lors de développement de flux SSIS.

Symptômes :

Le problème se manifeste par un “blocage technique” de Visual Studio (avec perte de la main) d’une durée de 8 à 15 minutes lorsque :

  • l’on ouvre un fichier de flux SSIS (*.dtsx)
  • l’on lance une exécution de flux SSIS (*.dtsx) en mode debug, (l’attente déclenchant généralement un timeout sur le “fork” du processus de debug de Visual Studio cf. ci-après)

Ce blocage est indépendant du processus (normal) de vérification des lots du package, qui intervient une fois les 8/15 minutes de blocage technique passées.

Ce problème persiste :

  • au changement de user
  • au changement de machines
  • à la bascule des fichiers et/ou bases de données en local

Le retard à l’exécution est parfois tellement important que le « fork » du thread de debug par rapport au thread de Visual Studio, passe en « time out », provoquant le message d’erreur suivant :

071708_1347_SSISLenteur1

Une fois que le « fork » a échoué une fois, toute les autres tentatives échoueront venant s’ « empiler » par process ID :

071708_1347_SSISLenteur2

Pour qu’un nouveau test d’exécution de flux en mode debug soit de nouveau effectif, il faut réinitialiser les paramètres utilisateur de Visual Studio :

  • Menu Démarrer -> Exécuter -> ‘devenv /resetsettings

Analyse :

Une analyse poussée du problème a permis de se rendre compte :

  • lorsque le problème se manifeste, une connexion HTTP est effectuée vers un serveur distant de Microsoft (crl.microsoft.com) visible avec la commande MS-DOS NETSTAT
  • cette connexion est bloquée en attente de réponse (statut SYN_SENT) (voir la copie d’écran ci-jointe)
  • au bout des 10 à 15 minutes d’attente cette connexion se ferme et le fichier s’ouvre/s’exécute -> cette connexion en attente est à l’origine du problème
  • CRL veut dire “Certificate Revocation List“, et cette connexion automatique est une vérification de licence/certificat
  • une ouverture/exécution de flux à partir d’une connexion avec un compte local (hors domaine) sur les machines concernées par le problème, ne pose pas de souci -> avec un compte local la vérification de licence n’est pas effectuée

pic1

Il semble donc qu’il s’agisse soit d’un problème de domaine utilisateur, soit de proxy/firewall qui refuse la connexion HTTP vers le site de vérification de licence.
Le compte local doit être considéré comme “suffisamment sûr” par Microsoft pour ne pas effectuer de vérification de certificat.

En attendant, l’installation du SP2 de SQL-Server 2005 sur le poste ne change rien au problème ci-dessus.

Solution/Palliatif :

Au final on peut désactiver cette vérification de certificat en effectuant les opérations suivantes :

  1. Dans les options avancées d’Internet Explorer décocher les cases “Vérification de révocations des certificats”
  2. Changer la valeur de la base de registre [HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing]< de ‘23c00‘ à ‘23e00

(source : http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=125768 )

Ces manipulations, semblent corriger définitivement le problème (par contre la première est à effectuer pour chaque utilisateur utilisant le poste). En attente d’une plus ample utilisation pour confirmation.
Les utilisateurs appartenant à des domaines sont probablement configurés pour faire ces vérifications de certificats par défaut, tandis que les utilisateurs locaux ne les font pas, ce qui peut expliquer les différences que nous constations.

Sources :

Categories: Trucs & astuces Tags: , , , ,

Utilisation de la tâche de chargement en bloc sous SSIS

October 5th, 2009 No comments

La tâche SSIS (Microsoft SQL Server Integration Services) de chargement en bloc est utile pour charger un fichier plat dans une table d’une base de données dans les 2 cas suivants:

  • Le chargement d’un fichier volumineux
  • Le chargement d’un fichier à champs fixes contenant un nombre de colonnes important (ce qui permet un gain de temps non négligeable en phase de développement)

clip_image002

Tâche d’insertion en bloc

    Son utilisation n’étant pas toujours triviale, voici une description des différentes étapes à suivre :

  • 1) Création d’une connexion vers le fichier texte à charger
  • 2) Utilisation de la tâche d’insertion en bloc (présente dans le flux de contrôle)
  • 3) Paramétrage de l’onglet Connexion de la tâche d’insertion en bloc
  • 4) Paramétrage de l’onglet Options de la tâche d’insertion en bloc
Etape 3) Paramétrage de l’onglet Connexion de la tâche d’insertion en bloc:

image Tâche d’insertion en bloc – Onglet Connexion

  • Connexion : Choisir la connexion vers la base de données dans laquelle les données seront chargées.
  • DestinationTable : Choisir le nom de la table dans laquelle les données seront insérées. La table devra contenir l’ensemble des colonnes présentes dans le fichier.
  • File : Connexion vers le fichier plat source.
  • Format : Spécifier la valeur Utiliser un fichier pour charger un fichier dont le format est décrit dans un fichier de format .fmt. Pour les fichiers au format délimité sélectionner le format Spécifier.

Options pour les fichiers au format champs fixes :

  • FormatFile : Définir le chemin d’accès vers le fichier .fmt décrivant le format du fichier.

Options pour les fichiers au format délimité :

  • RowDelimiter : Définir les caractères séparateurs de lignes (en général {CR}{LF} en environnement windows).
  • ColumnDelimiter  : Définir les caractères séparateurs de colonnes

clip_image002[5]Le chemin utilisé vers le fichier de format dans la propriété FormatFile doit être au format UNC (Universal Naming Convention): \\NomServeur\Partage.

Etape 4) Paramétrage de l’onglet Option de la tâche d’insertion en bloc

clip_image006

Tâche d’insertion en bloc – Onglet Options

  • Options : Décocher les différents contrôles.
  • SortedDate : Laisser la valeur non renseignée par défaut.
  • MaxErrors : Laisser la valeur 0
  • CadePage : Spécifier la valeur RAW
  • DataFileType : Spécifier la valeur char
  • BatchSize : Laisser la valeur 0
  • LastRow : Laisser la valeur 0
  • FirstRow : Laisser la valeur 1 (sauf si le fichier contient un en-tête qui ne doit pas être chargé)

Exemple de fichier .fmt:

Le fichier .fmt permet de décrire le format du fichier à charger. Il liste les colonnes contenues dans le fichier ainsi que leurs caractéristiques. Sa construction est en général rapide à partir d’un document excel décrivant les colonnes du fichier (pour ceux qui le souhaitent, j’ai un exemple de fichier permettant la génération automatique de fichier fmt à partir de formules excel).

Voici un exemple de fichier .fmt  simple :

10.0

2

1 SQLCHAR 0 3 “”       1 CH1 French_CI_AS

2 SQLCHAR 0 5 “\r\n” 2 CH2 French_CI_AS

  • La première ligne correspond à la version SQL Server utilisée (10.0 pour la version 2008, 9.0 pour la version 2005, 8.0 pour la version 2000 et 7.0 pour la version SQL 7…)
  • La deuxième ligne précise le nombre de colonnes présentes dans le fichier
  • Les lignes suivantes décrivent chaque colonne du fichier en précisant : la position de la colonne, SQLCHAR, 0, le nombre de caractères de la colonne, le numéro de la colonne, le nom de la colonne, la collation (FRENCH_CI_CI_AS).

clip_image002[6]La dernière ligne du fichier doit être un retour à la ligne.

Lclip_image001a génération du fichier fmt peut être également effectuée automatiquement à partir de la table cible en utilisant la commande bcp.

Générer un fichier .fmt à partir de la commande bcp:

Ouvrir une fenêtre d’Invite de commande et exécuter la commande suivante :

bcp NomBaseDeDonnées.Schéma.NomTable format nul -c -f

CHGT_BLOC.fmt -T -S NomServeur\NomInstance

image Exemple d’utilisation de la commande BCP

Conclusion:

Ce composant a l’avantage d’être performant. Il a par contre l’inconvénient d’être difficile à auditer en cas d’erreur. En effet, si le fichier source ne respecte pas strictement le format décrit, le fichier sera rejeté en bloc sans possibilité d’identifier la ligne ou la colonne ayant généré une erreur. Il n’est pas possible également de placer une visionneuse sur les données pour suivre le chargement.

Ce composant n’est donc à utiliser que sur des fichiers dont la structure est connue et bien maîtrisée. Pour des fichiers non volumineux et contenant un nombre de colonnes raisonnables, on préférera utiliser le chargement classique via des sources OLE DB.