Je vais aujourd’hui vous faire partager un sujet qui est dans ma to-do list depuis plusieurs mois et dont je me sers très souvent : l’instruction MERGE en SQL.
Cette instruction est apparue avec SQL Server 2008 et permet de combiner plusieurs opérations DML (Data Modification Language -> INSERT, UPDATE, DELETE) en une seule instruction. Elle est très pratique pour synchroniser 2 tables entre elles. Voici les principaux éléments à mettre en place, que je vais appliquer à un exemple :
J’ai récemment eu besoin de manipuler des données SQL du type VARCHAR(MAX) via SSIS. Dans SQL Server, ce type permet de stocker des données de type chaîne de caractères d’une taille jusqu’à 2 Go. Voilà le scénario que je souhaitais réaliser :
Une procédure stockée me retourne une donnée de type VARCHAR(MAX) représentant un contenu XML J’appelle cette procédure dans une tâche de type “Script Task” et je stock le résultat dans une variable J’utilise cette variable en tant que paramètre entrant dans une OleDB Source d’un DataFlow Je récupère le résultat via une OleDB Destination A 1ère vue, ce scénario ne pose pas de soucis particulier, mais nous allons voir que SSIS a une gestion très partielle du type de données VARCHAR(MAX).
J’ai été récemment confronté à un problème avec l’utilisation de SSIS et je souhaite vous faire partager l’astuce qui m’a permis de m’en sortir ;)
Le projet sur lequel je travaille utilise de nombreux traitements SSIS pour importer de la donnée et la manipuler (traitements, calculs…). Ces traitements utilisent le plus souvent un Data Flow composé d’une source OleDB et d’une procédure stockée. Le problème est le suivant : certaines de mes procédures stockées utilisent des tables temporaires et dans ce cas, SSIS n’est pas capable de générer le mapping entre les colonnes sources et les colonnes cibles !
Suite à la rédaction d’un “Guide du développeur” pour ma boite, j’ai eu l’idée de rédiger un article référençant les bonnes pratiques en C#/.NET. L’idée n’est pas de faire une énième liste comme il en existe des dizaines sur le net, mais d’essayer d’apporter des astuces pertinentes et argumentées par rapport à mon expérience. Et surtout, ce que je souhaiterais, c’est d’avoir des retours sur VOS astuces, VOUS lecteurs de mon blog, basées sur VOS expériences.
En .NET, il arrive encore régulièrement d’avoir à développer des services Windows pour réaliser des traitements. Du coup, se pose rapidement la question du débogage et de ses problèmes… Il est en effet nécessaire de régulièrement démarrer/arrêter le service, ainsi que de l’installer/désinstaller, et ces opérations demandent de passer par différents outils en ligne de commande (installutil, net start…). Cela devient très vide rébarbatif et est chronophage, mais heureusement, il existe quelques astuces très simples pour résoudre ces soucis !
Aujourd’hui, je souhaite partager avec vous une petite astuce très simple et rapide. Lors de mes projets, j’ai souvent besoin de mesurer la durée d’exécution d’un bloc de code pour générer des statistiques ou faire de l’optimisation de performance. Généralement, j’utilise la classe C# “Stopwatch” qui fait très bien le job mais est un peu lourde à utiliser toute seule. Je me suis donc amusé à écrire un petit outil me permettant de faciliter et simplifier cette tâche :
Une astuce qui commence à dater un peu mais qui est toujours d’actualité, notamment pour les applications d’entreprises qui fonctionnent encore sur des vieilles versions d’Internet Explorer :) Internet Explorer a toujours été un calvaire pour les développeurs web. Entre les problèmes de compatibilité, les comportements spécifiques, ses « bizarreries » et ses « curiosités »… Pour les styles, il existe pourtant quelques astuces très pratiques permettant de gagner du temps et d’économiser ses nerfs.