<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="fr">
  
  <title type="html">Business Geek</title>
  <subtitle type="html">Journal d'un consultant en informatique, spécialisé en technologies Microsoft (et le tout à Toulouse)</subtitle>
  
  <link href="http://blog.djeepy1.net/" rel="alternate" type="text/html" title="Journal d'un consultant en informatique, spécialisé en technologies Microsoft (et le tout à Toulouse)" />
  <updated>2009-11-10T01:09:52+01:00</updated>
  <author>
    <name>Jean-Pierre Riehl</name>
  </author>
  <id>urn:md5:7103</id>
  <generator uri="http://www.dotclear.net/">Dotclear</generator>
  
    
  <link rel="self" href="http://feeds.feedburner.com/djeepy1" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry>
    <title>Que la force du Design soit avec vous</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/enDgzlbpINo/Que-la-force-du-Design-soit-avec-vous" rel="alternate" type="text/html" title="Que la force du Design soit avec vous" />
    <id>urn:md5:4cbc9e00ca8f8bd897c70fa308ed5648</id>
    <updated>2009-08-06T08:49:00+02:00</updated>
    <author><name>Djeepy1</name></author>
            
    <content type="html">    &lt;p&gt;&amp;lt;séquence type=&amp;quot;promotion&amp;quot;&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/bewise/vertice-design.jpg" alt="" style="float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0;" title="vertice-design.jpg, août 2009" /&gt;Vertice Design est un studio graphique
spécialisé dans le design et l'ergonomie d'applications web, windows et
mobile.&lt;/p&gt;
&lt;p&gt;Les équipes maîtrisent des outils variés tels que la gamme Expression de
Microsoft, la gamme CS4 d'Adobe, 3ds Max, Nova...&lt;/p&gt;
&lt;p&gt;En plus de la réalisation d'interfaces graphiques originales et à votre
image, Vertice Design propose des formations afin d'acquérir des compétences
sur des logiciels tels que Expression Web, Blend, Silverlight, Flash,
Expression Design, Illustrator...&lt;/p&gt;
&lt;p&gt;N'hésitez pas à aller visiter leur site internet pour en savoir plus :
&lt;a href="http://www.verticedesign.com/"&gt;http://www.verticedesign.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;/séquence&amp;gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/enDgzlbpINo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/08/06/Que-la-force-du-Design-soit-avec-vous#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/424398</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/08/06/Que-la-force-du-Design-soit-avec-vous</feedburner:origLink></entry>
    
  <entry>
    <title>Renouvellement MVP</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/YbjmZg9RtpQ/Renouvellement-MVP" rel="alternate" type="text/html" title="Renouvellement MVP" />
    <id>urn:md5:3aef07ed40fbe59ea99154449a6dd1af</id>
    <updated>2009-07-09T10:31:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
            
    <content type="html">    &lt;p&gt;Bonjour à tous,&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/bandeaux/MVP-portrait.png" alt="" style="float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0;" title="MVP-portrait.png, juil 2008" /&gt;Comme je suis actuellement en vacances
depuis 2 semaines avec des difficultés à trouver des accès Wi-Fi (rendez-vous
compte, je suis au McDo..), je n'ai pas pu annoncer la bonne nouvelle... Je
suis renouvelé MVP SQL.&lt;/p&gt;
&lt;p&gt;Voila, je suis content de moi. Je vais reprendre un peu les publications et
migrer mon blog vers une autre plate-forme (qui sera référencée par Google par
exemple). Je vais aussi préparer activement l'arrivée des prochaines
versions de SQL Server comme Gemini.&lt;/p&gt;
&lt;p&gt;Je compte bien aussi retourner au MVP Summit 2010...s'il y en a un.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : Concernant mon absence sur ce blog depuis quelques temps, ce n'est pas
dû à des vacances à rallonge mais à de nouvelles responsabilités chez Bewise
plus importantes et donc plus chronophages. Mais ne vous impatientez pas, je
reviens bientôt sur plein de sujets passionants autour du décionnel et de la
gestion des données &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/YbjmZg9RtpQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/07/09/Renouvellement-MVP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/417133</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/07/09/Renouvellement-MVP</feedburner:origLink></entry>
    
  <entry>
    <title>Améliorer le tableau croisé dynamique de Excel</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/uStjfMWMBw4/Ameliorer-le-tableau-croise-dynamique-de-Excel" rel="alternate" type="text/html" title="Améliorer le tableau croisé dynamique de Excel" />
    <id>urn:md5:18946945a0a8ff8e61f7b922cbd6c523</id>
    <updated>2009-05-28T00:00:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
            
    <content type="html">    &lt;p&gt;J'ai souvent eu des questions d'utilisateurs avancés
d'&lt;strong&gt;Excel&lt;/strong&gt; pour enrichir l'utilisation du &lt;strong&gt;tableau croisé
dynamique&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Même si nativement, Excel est sans doute le meilleur client Analysis
Services, il lui reste quelques lacunes, qui nécessitent souvent l'intervention
des équipes informatiques. Un exemple est l'ajout de calculs simples (ratio,
sommes, etc.).&lt;/p&gt;
&lt;p&gt;Pour faire cela, on doit écrire un membre calculé en MDX qui prend en charge
le calcul. Je vous avais montré comment en ajouter un dans Report Builder 2.0
&lt;a href="http://blog.djeepy1.net/post/2009/01/21/Report-Builder-20-Creer-un-membre-calcule-sans-passer-par-SSAS"&gt;
dans un précédent post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Maintenant, la même opération est possible directement dans Excel grâce à un
&lt;strong&gt;add-in&lt;/strong&gt; qui vient de sortir sur CodePlex :
&lt;strong&gt;OlapPivotTableExtend&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/business-intelligence/.addinexcel_m.jpg" alt="" style="margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block;" title="addinexcel.png, mai 2009" /&gt;Vous pouvez trouver toutes les infos et le
télécharger ici : &lt;a href="http://www.codeplex.com/OlapPivotTableExtend"&gt;http://www.codeplex.com/OlapPivotTableExtend&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il y a évidemment plein d'autres fonctionnalités :
&lt;strong&gt;recherche&lt;/strong&gt;, &lt;strong&gt;bibliothèque de calcul&lt;/strong&gt;, etc. L'une
de mes préférées est sans aucun doute de pouvoir récupérer la &lt;strong&gt;requête
MDX&lt;/strong&gt; générée, chose qu'il fallait faire avec du code VBA ou bien un
Profiler.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/uStjfMWMBw4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/05/19/Ameliorer-le-tableau-croise-dynamique-de-Excel#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/403520</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/05/19/Ameliorer-le-tableau-croise-dynamique-de-Excel</feedburner:origLink></entry>
    
  <entry>
    <title>BDC2009 - Debriefing</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/BpUlT-vQpjA/BDC2009-Debriefing" rel="alternate" type="text/html" title="BDC2009 - Debriefing" />
    <id>urn:md5:b4e1e6785f146794f03123056b162aff</id>
    <updated>2009-04-26T22:25:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/bandeaux/logo_bewise.jpg" alt="" style="float: left; margin-top: 0; margin-right: 1em; margin-bottom: 1em; margin-left: 0;" title="logo_bewise.jpg, jan 2008" /&gt;L'événement annuel organisé par Bewise a eu
lieu ce mardi. Pour la 3eme fois, ce fût un succès.&lt;/p&gt;
&lt;p&gt;Cette année, nous avons dépassé les &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;500 participants&lt;/span&gt; (décomptage en cours). Merci à
tous pour votre participation. C'est encourageant de voir que les nouvelles
technologies déplacent autant de monde, signe que l'investissement informatique
n'est pas si morose en cette période de crise.&lt;/p&gt;
&lt;p&gt;Laurent Cotton et moi-même avons assuré les sessions plénières qui avaient
pour thème une présentation des outils mis en place pour traiter les données de
la BDC (inscriptions - évaluations). Cela nous a permis de parler de
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;MOSS&lt;/span&gt;
(Sharepoint) et de &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Business Intelligence&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;J'ai pu présenter l'intérêt de se lancer dans un projet décisionnel afin
d'obtenir des capacités d'analyse des données élevées, même avec une forte
volumétrie et un modèle complexe. J'ai pu aussi montrer la facilité de créer
des rapports plus ou moins complexes en quelques clics, sans avoir recours à un
outil de développement.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/events/bdc/BDC2009-pleniere.PNG" alt="" style="float: right; margin-top: 0; margin-right: 0; margin-bottom: 1em; margin-left: 1em;" title="BDC2009-pleniere.PNG, avr 2009" /&gt;En période de crise, un projet
décisionnel peut être un formidable levier. Il permet de produire de la valeur
ajoutée (marge, CA, prospection, productivité, etc.) à partir de vos
données. &lt;/p&gt;
&lt;p&gt;C'est ce que j'ai montré avec l'analyse des données de la BDC.&lt;/p&gt;
&lt;p&gt;Evidemment, vous pourrez retrouver très bientôt la session en &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;webcast&lt;/span&gt;. &lt;/p&gt;
&lt;p&gt;Concernant le code des démos, étant donné qu'une bonne partie des
applications présentées sont des applications internes, utilisant les données
des participants, je vais être obligé de faire des extracts pas forcément
utilisables.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/BpUlT-vQpjA" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/04/26/BDC2009-Debriefing#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/397415</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/04/26/BDC2009-Debriefing</feedburner:origLink></entry>
    
  <entry>
    <title>TechDays 2009 - Présentation générale SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/soj5Ya0anRU/TechDays-2009-Presentation-generale-SQL-Server-2008" rel="alternate" type="text/html" title="TechDays 2009 - Présentation générale SQL Server 2008" />
    <id>urn:md5:046e774ee1b4f66eadc3290c535c7693</id>
    <updated>2009-04-12T09:37:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;La session que j'ai co-animée aux &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;TechDays 2009&lt;/span&gt; (avec Patrick Guimonnet et Christophe
Laporte) est maintenant disponible en webcast.&lt;/p&gt;
&lt;p&gt;Si vous n'avez pas pu venir ou si vous souahitez la revoir, suivez ce lien
: &lt;a href="http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?eID=1b96e365-db8a-4339-91b6-c217c9a15423"&gt;http://www.microsoft.com/france/vision/mstechdays09/Webcast.aspx?eID=1b96e365-db8a-4339-91b6-c217c9a15423&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le sujet est simple : &lt;span class="Apple-style-span" style="text-decoration: underline;"&gt;Présentation générale de SQL Server
2008&lt;/span&gt;. &lt;/p&gt;
&lt;p&gt;C'est une session &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Découverte&lt;/span&gt; (Level 100) donc je ne fais que survoler
les fonctionnalités de la nouvelle version, ce qui est déjà difficile en 1h.
Cette session a été aussi le lieu pour le témoignage client de &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Christophe Laporte&lt;/span&gt;, DBA
d'Index Multimédia qui est venu faire un retour sur la &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;migration&lt;/span&gt; qu'il a opéré et
les &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;gains&lt;/span&gt;
apportés par la nouvelle version de la base de données.   &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/soj5Ya0anRU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/04/12/TechDays-2009-Presentation-generale-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/392780</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/04/12/TechDays-2009-Presentation-generale-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Server 2008 Service Pack 1</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/DTfKeZHC9NM/SQL-Server-2008-Service-Pack-1" rel="alternate" type="text/html" title="SQL Server 2008 Service Pack 1" />
    <id>urn:md5:05db28f27f93aea871a7325ed49fc04a</id>
    <updated>2009-04-12T09:10:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;Le &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;SP1&lt;/span&gt; de
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;SQL Server
2008&lt;/span&gt; est disponible. En anglais et en Français (ainsi que d'auters
langues évidemment).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19"&gt;
http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les habituels frileux des nouvelles versions n'auront plus d'excuse pour
passer à SQL Server 2008.&lt;/p&gt;
&lt;p&gt;Qu'apporte ce Service Pack :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Des corrections de bugs évidemment (d'où l'importance de remonter les infos
sur &lt;a href="https://connect.microsoft.com" target="_blank"&gt;Connect&lt;/a&gt;) - je
ne pense pas avoir le temps de vous en détailler...&lt;/li&gt;
&lt;li&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Report Builder
2.0&lt;/span&gt; en mode click-once (je sais que du monde l'attendait :-))&lt;/li&gt;
&lt;li&gt;La possibilité d'inclure le SP1 dans une installation de base ce qui permet
d'installer SQL Server 2008 ET le SP1 en une fois (accélération des migrations
sur des environnements de production) - cette fonctionnalité s'appelle
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Splistream&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : Je ne suis pas très attentif et assidu ces derniers temps en
partie à cause d'une BDC 2009 à préparer, d'un projet de Business Intelligence
en cours et d'autres raisons qu'il est prématuré d'annoncer. Je m'en excuse
dans ce billet. D'autant plus que j'ai des milliers de sujets dans les
cartons...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/DTfKeZHC9NM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/04/12/SQL-Server-2008-Service-Pack-1#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/392773</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/04/12/SQL-Server-2008-Service-Pack-1</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise Day Conference 2009</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/4Z9qPFAkg2I/Bewise-Day-Conference-2009" rel="alternate" type="text/html" title="Bewise Day Conference 2009" />
    <id>urn:md5:710b48b800dd97f56a8c3db6e3e5844c</id>
    <updated>2009-04-08T07:24:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject><dc:subject>Bewise Developer Conference</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img src="http://blog.djeepy1.net/public/events/bdc/.bdc_2009_m.jpg" alt="" style="margin-top: 0; margin-right: auto; margin-bottom: 0; margin-left: auto; display: block;" title="bdc_2009.png, avr 2009" /&gt;&lt;/p&gt;
&lt;p&gt;Encore une fois, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Bewise&lt;/span&gt; vous propose dans le sud-ouest une journée
de conférences techniques sur les Technologies Microsoft en renouvellant sa
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Bewise Day
Conference&lt;/span&gt;.  &lt;/p&gt;
&lt;p&gt;Principal relai en région, la &amp;quot;BDC&amp;quot; a pour but de vous présenter les
nouveautés dans l'univers Microsoft mais aussi de vous parler et d'échanger sur
les dernières technos.&lt;/p&gt;
&lt;p&gt;Si vous n'êtes pas encore inscrit, inscrivez-vous vite : &lt;a href="http://bdc2009.bewise.fr/"&gt;http://bdc2009.bewise.fr/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Vous aurez noté que le nom de cette journée a changé. Ce n'est plus la
Bewise Developper Conference mais la &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Bewise Day Conference&lt;/span&gt;. Cette année, cet événement
n'est plus centré autour des développeurs mais inclut tous les &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;professionnels IT&lt;/span&gt;. Il ne
sera plus seulement question de code, de langage et de data mais on parlera
aussi maintenant de virtualisation, de consolidation IT, de communication
unifiée.&lt;/p&gt;
&lt;p&gt;Pour ma part, j'ai le plaisir de co-animer la session plénière avec mon
collègue &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Laurent
Cotton&lt;/span&gt;, MVP Sharepoint. Nous vous présenterons les technologies
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;MOSS&lt;/span&gt; et
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;SQL Server&lt;/span&gt;,
certes moins bling-bling, mais une réalité bien présente en entreprise.
Evidemment, nous ne pourrons pas nous empêcher de montrer un peu de code et de
technologies plus sexys avec, entre autres, une table &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Surface&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Vous pourrez aussi me retrouver au stand Décisionnel &amp;amp; Gestion des
Données entourés d'experts sur le sujet. Côté Bewise, m'accompagneront
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Sébastien
Pertus&lt;/span&gt;, MVP SQL, &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Philippe Lonvaud&lt;/span&gt;, consultant décisionnel,
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Julien Duprat&lt;/span&gt;,
spécialiste SSIS et &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Nicolas Caillard&lt;/span&gt;, spécialiste Reporting. Côté
Microsoft, viendront nous épauler &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Lionel Billon&lt;/span&gt;, chef de produit SQL Server,
&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Pascal Belaud&lt;/span&gt;,
évangéliste Data et &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Eric Ortiz&lt;/span&gt;, chef de produit &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;BizTalk&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Cet événement sera aussi pour Bewise l'occasion de souffler ses 10 bougies,
symbole de 10 ans d'accompagnement dans vos projets.&lt;/p&gt;
&lt;p&gt;Toutes les infos : &lt;a href="http://bdc2009.bewise.fr/"&gt;http://bdc2009.bewise.fr/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/4Z9qPFAkg2I" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/04/08/Bewise-Day-Conference-2009#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/391611</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/04/08/Bewise-Day-Conference-2009</feedburner:origLink></entry>
    
  <entry>
    <title>MVP Summit 2009 - Tourisme à Seattle</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/z0R27pPBPp8/MVP-Summit-2009-Tourisme-a-Seattle" rel="alternate" type="text/html" title="MVP Summit 2009 - Tourisme à Seattle" />
    <id>urn:md5:fa83743e5f6f560d68aef23a3c3f75af</id>
    <updated>2009-03-09T21:09:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>MVP Summit 2009</dc:subject>
        <dc:subject>Summit09</dc:subject>    
    <content type="html">    &lt;p&gt;Avec mes collègues Bewisiens, nous avons profité du Summit pour rester 2
jours de plus à &lt;strong&gt;Seattle&lt;/strong&gt; et faire un peu de tourisme
; autant capitaliser sur les 13h de trajet.&lt;/p&gt;
&lt;p&gt;Plus tôt (le dimanche matin), nous étions allés sur &lt;strong&gt;Pike&lt;/strong&gt;,
le célèbre marché public de Seattle où l'on trouve à foison des produits de la
mer (&lt;strong&gt;saumons, crabes géants, huîtres&lt;/strong&gt;, etc.), des fruits et
légumes (eh oui, même aux Etats-Unis) et de l'artisanat (plus ou moins
local).&lt;/p&gt;
&lt;p&gt;&lt;img title="mvp-summit-09-tourisme01.JPG, mar 2009" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/events/mvp-summit/mvp-summit-09-tourisme01.JPG" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Jeudi, nous avons eu un temps affreux : &lt;strong&gt;neige, froid, vent,
brouillard&lt;/strong&gt;... Un vrai temps de Seattle. Nous sommes passés par l'étape
obligée à savoir le &lt;strong&gt;Space Needle&lt;/strong&gt;. Malheureusement, le temps ne
nous a pas permis de profiter du panorama.&lt;/p&gt;
&lt;p&gt;Nous avons fait un tour en monorail puis l'&lt;strong&gt;underground tour&lt;/strong&gt;
(visite des sous-sols de Seattle).&lt;/p&gt;
&lt;p&gt;Nous avons beaucoup marché (n'est-ce pas Patrice) et vu &lt;strong&gt;West
Seattle&lt;/strong&gt; et &lt;strong&gt;Downtown&lt;/strong&gt; de long en large, en faisant un
peu de shopping au passage.&lt;/p&gt;
&lt;p&gt;Le vendredi, le temps était magnifique. Un ciel bleu dégagé mais quand même
4°C au compteur. Nous avons fait un tour à &lt;strong&gt;Capitol Hill&lt;/strong&gt; en
suivant Broadway Avenue. Je dois dire que je suis très déçu car les guides
mentionnent ce quartier comme une étape intéressante et pourtant, nous n'y
avons rien vu de particulier si ce n'est une statue en bronze de Jimmy Hendrix
et un restaurant à pancakes.&lt;br /&gt;
Nous avons ensuite embarqué pour une croisière sur &lt;strong&gt;Lake Union&lt;/strong&gt;
(le lac qui arrive au milieu de Seattle), &lt;strong&gt;Salmon Bay&lt;/strong&gt; (le
chenal qui conduit à la mer), &lt;strong&gt;Puget Sound&lt;/strong&gt; (le bras de mer qui
longe West Seattle) et pour revenir par &lt;strong&gt;Elliot Bay&lt;/strong&gt; (le front
de mer - waterfront) avec une vue magnifique sur Downtown Seattle.&lt;/p&gt;
&lt;p&gt;La croisière était vraiment un beau moment, partagé avec un MVP Sharepoint,
&lt;strong&gt;Renaud Comte&lt;/strong&gt; ( - Renaud, enchanté de te connaître, ce fût un
plaisir et, non, je l'affirme, les DBA ne sont pas des &amp;quot;Tatas&amp;quot; et savent gérer
5To de données et + sans avoir besoin de Sharepoint pour les remplir – cf.
&lt;a href="http://christophelaporteatwork.spaces.live.com/"&gt;le blog d’un ami
DBA&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img title="mvp-summit-09-tourisme02.JPG, mar 2009" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/events/mvp-summit/mvp-summit-09-tourisme02.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Nous avons fini la journée par un peu de ballade dans Downtown et encore du
shopping.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Aujourd'hui, le temps est redevenu conforme à la région à savoir neige et
brouillard. Je suis [NDM : samedi] à l'aéroport avec Patrice et nous
attendons l'embarquement pour l'Europe.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/z0R27pPBPp8" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/03/09/MVP-Summit-2009-Tourisme-a-Seattle#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/334823</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/03/09/MVP-Summit-2009-Tourisme-a-Seattle</feedburner:origLink></entry>
    
  <entry>
    <title>MVP Summit 2009 - Attendee Party</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/AjiAawoIq2s/MVP-Summit-2009-Attendee-Party" rel="alternate" type="text/html" title="MVP Summit 2009 - Attendee Party" />
    <id>urn:md5:14cd3c513750be0c3790a53cc302ddc8</id>
    <updated>2009-03-09T13:37:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>MVP Summit 2009</dc:subject>
        <dc:subject>Summit09</dc:subject>    
    <content type="html">    &lt;p&gt;Comme dans tous les événements Microsoft, il y a une soirée organisée pour
les participants. Comme l'an passé, la soirée avait lieu au &lt;strong&gt;E.M.P
(Experience Music Project)&lt;/strong&gt;, un musée dédié à la musique (et qui
héberge le musée de la science fiction) créé par Paul Allen.&lt;/p&gt;
&lt;p&gt;Il y avait un groupe de rock pour la musique même si la majeure partie de la
soirée était en mode &lt;strong&gt;karaoké&lt;/strong&gt; où les MVP du monde entier ont pu
dévoiler leurs talents de chanteur. Comme il n'y avait pas de chanson française
dans le répertoire, nous n'avons pas tenté notre chance ;-).&lt;/p&gt;
&lt;p&gt;&lt;img title="MVP-Summit-09-Karen.JPG, mar 2009" style="FLOAT: left; MARGIN: 0 1em 1em 0" height="179" alt="" src="http://blog.djeepy1.net/public/events/mvp-summit/MVP-Summit-09-Karen.JPG" width="200" /&gt;Lors de la soirée, j'ai pu me faire photographier avec Karen
Young, MVP Lead worldwide, et sa tenue très ... “&lt;strong&gt;Guitar Hero
Rock'n'Roll&lt;/strong&gt;”.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;See you next Summit Karen &lt;img src="/themes/default/smilies/smile.png" alt=":)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/AjiAawoIq2s" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/03/09/MVP-Summit-2009-Attendee-Party#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/334819</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/03/09/MVP-Summit-2009-Attendee-Party</feedburner:origLink></entry>
    
  <entry>
    <title>MVP Summit 2009 - Bilan</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/go1JTA88zKg/MVP-Summit-2009-Bilan" rel="alternate" type="text/html" title="MVP Summit 2009 - Bilan" />
    <id>urn:md5:d97f663be72ee471e3e16babe90c41f2</id>
    <updated>2009-03-09T13:01:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>MVP Summit 2009</dc:subject>
        <dc:subject>Summit09</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="mvp-summit-09.png, mar 2009" style="DISPLAY: block; MARGIN: 0 auto" height="286" alt="" src="http://blog.djeepy1.net/public/events/mvp-summit/mvp-summit-09.png" width="500" /&gt;&lt;/p&gt;
&lt;p&gt;Je vous rappelle que cet événement est sous &lt;strong&gt;NDA&lt;/strong&gt; donc ne
vous attendez pas à avoir des informations sur les sessions auxquelles j'ai
participé. Je vais plutôt vous faire un retour sur mon premier Summit.&lt;/p&gt;
&lt;p&gt;Niveau organisation, les américains sont vraiment au top. Comme à la PDC
l'an dernier, tout est bien séquencé, il y a beaucoup de monde pour vous aider
et répondre aux questions, il y a à manger et à boire partout... Bref, on se
sent en de bonnes mains. Mais ce n'est pas le propos de cet événement, parlons
un peu technique.&lt;/p&gt;
&lt;p&gt;Je suis allé principalement (pour ne pas dire exclusivement) aux sessions
&lt;strong&gt;Business Intelligence&lt;/strong&gt;. J'ai pu découvrir et rencontrer les
&lt;strong&gt;PM (Product manager)&lt;/strong&gt; des différents modules de SQL Server.
J'ai pu proposer des choses mais c'est très difficile car la communauté
anglophone (et surtout nord-américaine) est très présente et influente du fait
de leur facilité à communiquer. C'est d'ailleurs mon grand regret dans ce
Summit : mon niveau d'anglais ; je ne suis pas mauvais mais il me manque encore
quelques heures de vol.&lt;/p&gt;
&lt;p&gt;Autre aspect important du Summit, le &lt;strong&gt;Networking&lt;/strong&gt;. C'est en
effet l'endroit idéal pour rencontrer les autres MVP de sa spécialité (ou les
autres MVP de son pays). En revanche, la première année, c'est difficile car on
ne connait personne et bien souvent personne ne vous connait (sauf à publier en
anglais :() donc on y va un peu au pif. Heureusement pour moi, &lt;a href="http://blogs.codes-sources.com/christian/"&gt;&lt;strong&gt;Christian
Robert&lt;/strong&gt;&lt;/a&gt;, qui en est à son troisième, m'a aidé dans cette tâche
(merci Christian).&lt;br /&gt;
Pour aider, le groupe SQL organisait un dîner dans un restaurant italien chic
de Bellevue (le Maggiano's), idéal pour les rencontres. J'ai donc pu rencontrer
entre autres Erland, Henn, Konstantin, Dimple, Simon, James, etc.&lt;/p&gt;
&lt;p&gt;J'ai pu aussi rencontrer des Microsoftees français et discuter de choses et
d'autres. Parmi eux il y avait Julien Codorniou (« &lt;em&gt;allez l'aviron&lt;/em&gt; »,
il comprendra), Olivier Matrat, Jean-François Peyroux, ...&lt;/p&gt;
&lt;p&gt;Je vous ferez un petit billet à part sur l'Attendee Party.&lt;/p&gt;
&lt;p&gt;Et pour conclure, je rappellerai le but premier de ce type d'événement. Le
Summit est un canal important pour remonter des informations à Microsoft :
&lt;strong&gt;fonctionnalités manquantes, améliorations, problèmes, scénarios
utilisateurs, etc.&lt;/strong&gt;&lt;br /&gt;
Les MVP comme moi ont un rôle dans les processus de développement des produits
Microsoft. &lt;strong&gt;Nous sommes une voix majeure de la communauté&lt;/strong&gt; et
représentons les clients, les développeurs, etc. Donc n'hésitez pas à passer
par nous pour remonter des idées ou des doléances (ou passez par le programme
Connect).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/go1JTA88zKg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/03/07/MVP-Summit-2009-Bilan#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/334226</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/03/07/MVP-Summit-2009-Bilan</feedburner:origLink></entry>
    
  <entry>
    <title>MVP Summit 2009 - Arrivée  Seattle</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/9a8gvAUKWPk/MVP-Summit-2009-Arrivee-Seattle" rel="alternate" type="text/html" title="MVP Summit 2009 - Arrivée  Seattle" />
    <id>urn:md5:cb283e76c7269a242ceb0ae0631ee2a8</id>
    <updated>2009-03-01T16:48:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>MVP Summit 2009</dc:subject>
        <dc:subject>Summit09</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="Seattle.jpg, mar 2009" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/events/mvp-summit/Seattle.jpg" /&gt;
Cette année, je fais partie des participants au &lt;strong&gt;MVP Global
Summit&lt;/strong&gt;, événement annuel organisé par &lt;strong&gt;Microsoft&lt;/strong&gt; pour
les MVP du monde entier.&lt;/p&gt;
&lt;p&gt;Cet événement est l'occasion de réunir les différents MVP pour échanger avec
les équipes de Microsoft et présenter des technos et produits en avance de
phase. Evidemment, je suis sous &lt;strong&gt;NDA&lt;/strong&gt; (non-disclosure agreement)
donc je ne vous parlerai pas technique ces prochains jours. A défaut, je vous
mettrai quelques photos de Seattle.&lt;/p&gt;
&lt;p&gt;Je suis accompagné de 2 collègues Bewisiens : &lt;a href="https://mvp.support.microsoft.com/profile=C1DACA12-256A-44C5-B106-3B557AAF71CA"&gt;
&lt;strong&gt;Frédéric Colin&lt;/strong&gt;&lt;/a&gt;, MVP Connected Systems, et &lt;a href="http://www.patricelamarche.net/"&gt;&lt;strong&gt;Patrice Lamarche&lt;/strong&gt;&lt;/a&gt;, MVP
C#.&lt;/p&gt;
&lt;p&gt;Le voyage s'est bien passé sauf pour Patrice pour qui son bagage s'est égaré
entre Paris et Seattle.&lt;/p&gt;
&lt;p&gt;Nous avons fait un petit tour de downtown et de &lt;strong&gt;Pike's
Market&lt;/strong&gt;. J'y reviendrai plus longuement&lt;/p&gt;
&lt;p&gt;L'hôtel est très bien, la chambre est confortable et il y a une piscine et
une salle de sport au 35ème étage. D'ailleurs, je vous laisse, je vais éliminer
l'énorme Cheeeseburger d'hier soir.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/9a8gvAUKWPk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/03/01/MVP-Summit-2009-Arrivee-Seattle#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/331674</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/03/01/MVP-Summit-2009-Arrivee-Seattle</feedburner:origLink></entry>
    
  <entry>
    <title>L’après Performance Point</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/hpIUBfHoqYk/Lapres-Performance-Point" rel="alternate" type="text/html" title="L’après Performance Point" />
    <id>urn:md5:f9d2711e002d7533b38fe1224efaff32</id>
    <updated>2009-02-23T13:35:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>SQL Server 2008;Performance Point</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="perfpoint.PNG, fév 2009" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/business-intelligence/perfpoint.PNG" /&gt;La
rumeur a couvé dans les blogs dès le 23 janvier. Elle a vite été confirmée par
un communiqué de Microsoft à ses partenaires et communautés le 26
janvier. &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;q&gt;&amp;quot;Microsoft arrête le développement du module planning de Performance
Point&lt;/q&gt;.&amp;quot;&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mais comment comprendre cette décision ? Comment interpréter cette annonce ?
Que faire quand on a un projet en cours, ou à venir, basé sur ce produit ?
C'est ce dont nous allons discuter dans cet article en apportant un éclairage
sur la roadmap de Microsoft.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Tout d'abord, faisons taire les rumeurs les plus folles, &lt;strong&gt;Microsoft
n'arrête pas la Business Intelligence !&lt;/strong&gt; Il y a beaucoup d’autres
usages que l’élaboration budgétaire dans la BI. Et bien au contraire, avec
l'annonce faite sur Performance Point, Microsoft ne fait que recentrer sa
stratégie. En effet, rappelons qu’au cœur de la stratégie Business Intelligence
de Microsoft se trouve SQL Server (avec Analysis Services, Reporting Services,
Integration Services, le Data Mining, etc.) pour la partie plate-forme
décisionnelle et Microsoft Office (notamment Excel et Sharepoint) pour les
interfaces utilisateurs.&lt;/p&gt;
&lt;p&gt;Evidemment, un éditeur qui arrête un produit, c’est toujours dommageable.
Mais quand cet éditeur est Microsoft, avec toute sa puissance, ses lignes de
produits, il faut y voir un rééquilibrage. Comme je l’expliquais dans une
précédente tribune (&lt;a href="http://blog.djeepy1.net/post/2008/12/25/Microsoft-Connect"&gt;http://blog.djeepy1.net/post/2008/12/25/Microsoft-Connect&lt;/a&gt;),
Microsoft est très à l’écoute de ses clients et des communautés ce qui, j’en
suis persuadé, va l’obliger à communiquer plus clairement la nouvelle
ligne.&lt;/p&gt;
&lt;p&gt;Ca a commencé d’ailleurs aux TechDays, avec une session spéciale proposée
par Lionel Billon (Product Manager SQL Server) pour répondre aux questions sur
le sujet.&lt;/p&gt;
&lt;p&gt;Donc que deviennent les modules de Performance Point ?&lt;/p&gt;
&lt;p&gt;Tout d’abord, la partie M&amp;amp;A (&lt;strong&gt;Monitoring &amp;amp;
Analytics&lt;/strong&gt;), avec les &lt;strong&gt;tableaux de bord&lt;/strong&gt; et les
&lt;strong&gt;scorecards&lt;/strong&gt;, passe dans le giron de &lt;strong&gt;Sharepoint&lt;/strong&gt;
(MOSS plus exactement) et ce module s’appellera à terme PerformancePoint
Services. C'est-à-dire que si vous avez déjà un portail MOSS (en licence
Enterprise CAL avec Software Assurance :-(), vous n’aurez pas de coût
supplémentaire pour mettre en place des tableaux de bord ou faire bénéficier à
vos utilisateurs d’interfaces d’analyse sophistiquées. Sinon, c’est le moment
d’en profiter et de creuser Excel Services, la GED, le travail collaboratif,
etc. ;-).&lt;/p&gt;
&lt;p&gt;Concernant la migration, le passage de relais et toutes les questions de
mise en œuvre, vous pouvez partir sur le Dashboard Designer actuel qui permet
de créer des tableaux de bord déjà sur Sharepoint. Microsoft gardera la
&lt;strong&gt;compatibilité&lt;/strong&gt; à terme (ou fournira un outil de migration).&lt;/p&gt;
&lt;p&gt;Donc de ce côté, c’est plutôt une bonne nouvelle et je vous encourage à
continuer dans vos projet de M&amp;amp;A.&lt;/p&gt;
&lt;p&gt;Du côté de la planification et de l’&lt;strong&gt;élaboration budgétaire&lt;/strong&gt;,
Microsoft confirme l’&lt;strong&gt;arrêt du module&lt;/strong&gt; tel qu’il est
actuellement. Je reste convaincu qu’il ressortira à un moment ou à un autre
dans un autre produit ou sous une autre forme mais rien n’a été confirmé. Les
pistes sont un mode Open Source sur CodePlex, ou alors un module de Forecasting
dans Dynamics. Moi, je parierai bien sur une intégration dans une future
version d’Office car l’add-in de saisie et de spreading était pas mal.&lt;/p&gt;
&lt;p&gt;Mais il faut se faire une raison, le produit tel qu’il est ne sera pas
continué.&lt;/p&gt;
&lt;p&gt;Mais rassurons les actuels clients : comme pour tous ses produits, Microsoft
assurera un &lt;strong&gt;support sur Performance Point pendant 10 ans&lt;/strong&gt;. Ce
sont uniquement les nouveaux développements qui cesseront après la livraison du
SP3.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Maintenant, une &lt;strong&gt;remarque&lt;/strong&gt; plus &lt;strong&gt;personnelle&lt;/strong&gt;
sur ces annonces ; et cela n'engage que moi. Je suis complètement en phase
avec ce recentrage. Mettre les tableaux de bord dans MOSS me semble un choix
judicieux et cohérent avec le discours Sharepoint et BI global. En plus, cela
va dans le sens des réductions de coûts pour le client, et c’est toujours bon à
prendre.&lt;/p&gt;
&lt;p&gt;Concernant Planning, je crois au bien fondé du produit. J’ai pu assister à
une session de formation partenaires chez Microsoft et j’ai été très séduit.
Cependant, un point a choqué mon esprit de technicien, c’est la facilité de
créer des modèles (et donc des cubes) et la dangerosité engendrée, à savoir se
retrouver avec pleins de cubes, qui n’auraient pas forcément les même données
et qui pourraient entrainer une complexification de la gestion en terme de
maintenance. Un des buts à la base était d’en finir avec le
&lt;em&gt;&amp;quot;Excel-Hell&amp;quot;&lt;/em&gt; mais si c’est pour se retrouver avec un
&lt;em&gt;&amp;quot;Model-Hell&amp;quot;&lt;/em&gt; (ou un Cube-Hell). Et puis Planning Server ne permet pas
de résoudre la complexité d’intégration des données, à la charge de la DSI.&lt;/p&gt;
&lt;p&gt;Donc  l’arrêt de Planning Server m’embête parce que les &lt;strong&gt;add-in
de saisie Excel&lt;/strong&gt; sont très bien (même s'il est déjà possible avec un
peu de développement d'écrire dans un cube - fonctionnalité WriteBack - depuis
2000) et ce produit permet de vulgariser la modélisation de cube et de
DataWarehouse pour un utilisateur métier. Et puis les routines de gestion des
conversions de devises, de dé-doublonnage, de revenue sharing, etc. sont très
intéressantes. Mais en même temps, si c’est pour mieux intégrer ces modules
dans l’écosystème existant (Office, MOSS, SQL Server) moi je dis Banco.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;J’espère avoir répondu aux questions sur l’avenir de Performance Point
Server. S’il en restait, n’hésitez pas à me contacter. Je tâcherais d’y
répondre ou de transmettre à qui de droit.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/hpIUBfHoqYk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/02/23/Lapres-Performance-Point#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/329738</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/02/23/Lapres-Performance-Point</feedburner:origLink></entry>
    
  <entry>
    <title>Microsoft TechDays - Présentation générale SQL Server 2008 - DAT113</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/FgXIlzw9iNw/Microsoft-TechDays-Presentation-generale-SQL-Server-2008-DAT113" rel="alternate" type="text/html" title="Microsoft TechDays - Présentation générale SQL Server 2008 - DAT113" />
    <id>urn:md5:9a1c906be2de92550d7d49a2440cb2c5</id>
    <updated>2009-02-12T16:49:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img title="techdays09.png, fév 2009" style="width:400px;DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/techdays/techdays09.png" /&gt;&lt;/p&gt;
&lt;p&gt;Aujourd'hui, j'étais au TechDays, l'événement majeur technique de Microsoft
en France.&lt;/p&gt;
&lt;p&gt;Comme l'année dernière, j'étais Speaker et cette fois sur la session de
présentation générale SQL Server 2008. C'était du level 100, donc assez
généraliste mais j'ai pu présenter les avantages de la version 2008 pour les
entreprises, les administrateurs, les développeurs, les information
workers, etc. sur les sujets que sont la fiabilité, la productivité et la
(business) intelligence.&lt;/p&gt;
&lt;p&gt;J'ai pu interviewer en direct mon ancien collègue et ami &lt;a href="http://christophelaporteatwork.spaces.live.com/"&gt;Christophe Laporte&lt;/a&gt;, DBA
d'Index Multimedia, qui traite des Teraoctets de données en environnement
haute-disponibilité, sur les apports qu'il a constaté avec SQL Server 2008 en
production. Sa fonctionnalité préférée reste la &lt;strong&gt;compression&lt;/strong&gt; (à
tous les niveaux) qui lui fait gagner du temps, de la CPU, de l'espace disque
(et du stress en moins).&lt;/p&gt;
&lt;p&gt;Il y avait environ 200 personnes à cette session et de nombreuses questions.
Merci à Lionel et Patrick de Microsoft pour leur assistance. &lt;/p&gt;
&lt;p&gt;&lt;img title="logo-header-sql08-dg.gif, juin 2008" style="DISPLAY: block; MARGIN: 0 auto" height="75" alt="" src="http://blog.djeepy1.net/public/SQL/logo-header-sql08-dg.gif" width="363" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/FgXIlzw9iNw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/02/12/Microsoft-TechDays-Presentation-generale-SQL-Server-2008-DAT113#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/326529</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/02/12/Microsoft-TechDays-Presentation-generale-SQL-Server-2008-DAT113</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services - Obtenir le numéro de semaine</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Itl2fZ8MgCs/Reporting-Services-Obtenir-le-numero-de-semaine" rel="alternate" type="text/html" title="Reporting Services - Obtenir le numéro de semaine" />
    <id>urn:md5:98a2c7d046cdf311fc15556ea991924b</id>
    <updated>2009-02-10T07:39:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;Comme j'ai une mauvaise mémoire et que je cherche cette expression à chaque
fois. Je profite de ma tribune publique pour l'écrire et la partager.&lt;/p&gt;
&lt;p&gt;Le but est de récupérer le numéro de la semaine d'une date dans une
&lt;strong&gt;expression Reporting Services&lt;/strong&gt;. En fait, je connais
bien la fonction à utiliser : &lt;strong&gt;DatePart()&lt;/strong&gt;. Le problème c'est
que DatePart prend comme premier paramètre un code identifiant l'élément
de la date à récupérer. Et le souci c'est que ce code n'est pas tout à fait le
même qu'en T-SQL (qui contient une fonction DatePart aussi) et que la
documentation est spartiate à cet égard.&lt;/p&gt;
&lt;p&gt;Donc la bonne syntaxe est :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;=Datepart(&amp;quot;ww&amp;quot;, Today())&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour identifier la semaine, il faut utiliser le code &lt;strong&gt;ww&lt;/strong&gt; (et
non wk, w, week, etc.)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Itl2fZ8MgCs" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/02/09/Reporting-Services-Obtenir-le-numero-de-semaine#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/325320</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/02/09/Reporting-Services-Obtenir-le-numero-de-semaine</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services - Instruction Switch du moteur d'expressions</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/n7Iavo5Zg60/Reporting-Services" rel="alternate" type="text/html" title="Reporting Services - Instruction Switch du moteur d'expressions" />
    <id>urn:md5:0c1bf391bf8f96a870642f2722c4d5e7</id>
    <updated>2009-02-05T07:04:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;Un petit billet pour rappeler l'utilisation de l'instruction SWITCH du
&lt;strong&gt;moteur d'expression&lt;/strong&gt;s de Reporting Services (que l'on soit dans
Visual Studio ou dans Report Builder 2.0).&lt;/p&gt;
&lt;p&gt;Cette instruction correspond à une instruction CASE (C#, T-SQL) ou
Select (VB.NET). Sauf que contrairement aux autres langages, il n'y a pas la
gestion du cas par défaut. Je vais vous montrer comment le gérer.&lt;/p&gt;
&lt;p&gt;La syntaxe est la suivante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Switch (&lt;br /&gt;
&amp;lt;condition 1&amp;gt;, &amp;lt;valeur 1&amp;gt;,&lt;br /&gt;
&amp;lt;condition 2&amp;gt;, &amp;lt;valeur 2&amp;gt;,&lt;br /&gt;
&amp;lt;condition 3&amp;gt;, &amp;lt;valeur 3&amp;gt;&lt;br /&gt;
)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A chaque fois qu'une condition est satisfaite, la valeur correspondante est
retournée, le code étant débranchant. Evidemment, il arrive souvent que vous ne
puissiez écrire tous les cas possibles et imaginables. Dans ce cas, il faut
écrire la condition par défaut et voici comment je fais personnellement :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Switch (&lt;br /&gt;
&amp;lt;condition 1&amp;gt;, &amp;lt;valeur 1&amp;gt;,&lt;br /&gt;
&amp;lt;condition 2&amp;gt;, &amp;lt;valeur 2&amp;gt;,&lt;br /&gt;
&amp;lt;condition 3&amp;gt;, &amp;lt;valeur 3&amp;gt;,&lt;br /&gt;
&lt;strong&gt;1=1, &amp;lt;valeur par défaut&amp;gt;&lt;/strong&gt;&lt;br /&gt;
)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La dernière condition étant toujours vraie, elle simule une instruction ELSE
(T-SQL) ou DEFAULT (C#, VB.NET).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/n7Iavo5Zg60" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/02/01/Reporting-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/322923</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/02/01/Reporting-Services</feedburner:origLink></entry>
    
  <entry>
    <title>Recherche dynamique multi-critères avec SQL Server</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/6wFj0e40QAw/Recherche-dynamique-multi-criteres-avec-SQL-Server" rel="alternate" type="text/html" title="Recherche dynamique multi-critères avec SQL Server" />
    <id>urn:md5:45eed0dc4294b46a4ceb8adb78624a54</id>
    <updated>2009-01-30T08:09:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;Un billet rapide pour présenter mon dernier article. J'ai moins de mérite
car je ne suis pas l'auteur original puisque c'est une traduction, le plus
strict possible, d'un article d'un MVP suédois, Erland Sommarskog (&lt;a href="http://www.sommarskog.se/"&gt;http://www.sommarskog.se/&lt;/a&gt;). Vous pourrez y
trouver néanmoins une introduction et surtout une conclusion personnelle où je
vous livre mon avis sur le sujet.&lt;/p&gt;
&lt;p&gt;Cet article parle d'un problème commun à toute application (de gestion), à
savoir la &lt;strong&gt;recherche d'éléments dans une base de données avec plusieurs
critères&lt;/strong&gt; (non connus à l'avance - d'où l'aspect dynamique).&lt;/p&gt;
&lt;p&gt;Le sujet est traité par les aspects techniques et permet de parler de
&lt;strong&gt;SQL dynamique&lt;/strong&gt;, &lt;strong&gt;SQL statique&lt;/strong&gt;,
&lt;strong&gt;optimisation de jointure&lt;/strong&gt;, &lt;strong&gt;vues&lt;/strong&gt;,
&lt;strong&gt;fonctions de table&lt;/strong&gt;, etc. L'article est touffu et assez pointu
mais vous pouvez le lire comme un recueil de Tips. Attention, l'article parle
de la version 2005 de SQL Server ! Il y a un update d'Erland sur son site pour
les spécificités de la version 2008, mais cet article reste une bonne base pour
enrichir sa culture DGD. Un must-have comme on dit &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;Si vous allez sur le site d'Erland, en Anglais, ne vous fiez pas à sa
présentation tout droit ressortie des années 90, filez directement sur le
contenu technique qui est une vrai mine d'or pour comprendre le fonctionnement
du moteur SQL. J'espère un jour pouvoir tous les traduire pour en faire
profiter un public francophone mais l'exercice est long et le temps est une
denrée rare.&lt;/p&gt;
&lt;p&gt;&lt;img title="sql-dynamic-search.PNG, jan 2009" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SQL/sql-dynamic-search.PNG" width="450" /&gt;&lt;/p&gt;
&lt;p&gt;L'article se trouve comme d'habitude sur le site de &lt;a href="http://www.bewise.fr/fr-FR/Pages/default.aspx"&gt;Bewise&lt;/a&gt;, où vous pouvez
retrouver de nombreuses ressources (articles, webcasts news) sur les
technologies Microsoft :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bewise.fr/article/116/Recherche-multi-criteres-avec-SQL-Server.aspx"&gt;
http://www.bewise.fr/article/116/Recherche-multi-criteres-avec-SQL-Server.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/6wFj0e40QAw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/01/21/Recherche-dynamique-multi-criteres-avec-SQL-Server#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/319510</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/01/21/Recherche-dynamique-multi-criteres-avec-SQL-Server</feedburner:origLink></entry>
    
  <entry>
    <title>Report Builder 2.0 - Créer un membre calculé sans passer par SSAS</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/qu-c5WlATU8/Report-Builder-20-Creer-un-membre-calcule-sans-passer-par-SSAS" rel="alternate" type="text/html" title="Report Builder 2.0 - Créer un membre calculé sans passer par SSAS" />
    <id>urn:md5:5df64f2d830cf77aaa3ca611829ccd22</id>
    <updated>2009-01-27T13:59:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
            
    <content type="html">    &lt;p&gt;Une demande souvent récurrente en reporting ad hoc, c'est le besoin de faire
des calculs, plus ou moins simples, qui n'ont pas été prévus dans le cube.
Dans ce cas, on est souvent obligé de passer par le service informatique qui
n'a pas forcément le temps ou les ressources pour traiter la demande
rapidement.&lt;/p&gt;
&lt;p&gt;Dans &lt;strong&gt;Analysis Services&lt;/strong&gt;, les calculs se font avec des
membres caclulés (&lt;strong&gt;Calculated member&lt;/strong&gt;) qui se codent en MDX et
se déploient directement dans le cube. Il est possible d'écrire un membre
calculé pour une requête, valable le temps de la session. Report Builder 2.0
s'appuie sur cette possibilité pour proposer à l'utilisateur d'écrire ses
propres membres calculés dans le concepteur de requêtes.&lt;/p&gt;
&lt;p&gt;&lt;img title="calculated-member-reporting.PNG, jan 2009" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/calculated-member-reporting.PNG" width="362" /&gt;&lt;/p&gt;
&lt;p&gt;Attention, la requête s'écrit en MDX, ce qui limite l'usage pour des
utilisateurs non développeurs mais soulignons toutefois la présence de cette
fonctionnalité facile d'accès.&lt;/p&gt;
&lt;p&gt;Il y a une utilisation efficace de cette fonctionnalité. Dans beaucoup de
requêtes multidimensionnelles, on a besoin de ramener des propriétés d'une
dimension dans une optique d'affichage, mais sans croiser les dimensions et
complexifier la requête dans le cube OLAP. Par défaut, on glisse la propriété
dans le designer de requête. Ceci a pour effet de générer un croisement de
dimension en MDX ( &lt;code&gt;{PropA * PropB}&lt;/code&gt; ). Quand on veut remonter
une propriété pour affichage, on préfère la mettre dans les mesures, ce qui est
possible avec un membre calculé.&lt;/p&gt;
&lt;p&gt;On crée donc un membre calculé et on le fait pointer sur la propriété
courrante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;
&lt;code&gt;[Product].[Color].CurrentMember.Name&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On utilisera &lt;strong&gt;.Name&lt;/strong&gt; ou &lt;strong&gt;.Value&lt;/strong&gt; en fonction
de ce que l'on veut remonter.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSRS/calculated-member-reporting-3.PNG"&gt;&lt;img title="calculated-member-reporting-3.PNG, jan 2009" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/.calculated-member-reporting-3_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/qu-c5WlATU8" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/01/21/Report-Builder-20-Creer-un-membre-calcule-sans-passer-par-SSAS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/319509</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/01/21/Report-Builder-20-Creer-un-membre-calcule-sans-passer-par-SSAS</feedburner:origLink></entry>
    
  <entry>
    <title>Report Builder 2.0 - Le reporting ad hoc pour l'utilisateur final</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/MTtBHfhgB28/Report-Builder-20-Le-reporting-ad-hoc-pour-l-utilisateur-final" rel="alternate" type="text/html" title="Report Builder 2.0 - Le reporting ad hoc pour l'utilisateur final" />
    <id>urn:md5:c3c64a29bbbabb6e0ec71b862d1bd49d</id>
    <updated>2009-01-08T22:26:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
            
    <content type="html">    &lt;p&gt;La nouvelle version de Report Builder qui accompagne SQL Server 2008 est
l'outil parfait pour des utilisateurs non-informaticiens (&lt;strong&gt;Information
Workers&lt;/strong&gt;). Sans avoir besoin de Visual Studio, on peut créer des
rapport riches, complexes et puissants en quelques minutes à partir d'un modèle
de données existant (Report Model ou Cube OLAP) et les mettre à disposition de
tous sur le serveur de rapports.&lt;/p&gt;
&lt;p&gt;Voici un &lt;strong&gt;webcast&lt;/strong&gt; qui présente cet outil puissant et
intuitif dans la création d'un rapport vu et réalisé par l'utilisateur final
(ie. moi dans un rôle de composition ;-)).&lt;/p&gt;
&lt;p style="MARGIN: auto"&gt;&lt;a title="Report builder 2.0 - Présentation" href="http://video.msn.com/video.aspx?vid=adbdd8f6-b409-4154-a10f-bec37af0da89" target="_new"&gt;&lt;img height="84" alt="Report builder 2.0 - Présentation" src="http://img4.catalog.video.msn.com/Image.aspx?uuid=adbdd8f6-b409-4154-a10f-bec37af0da89&amp;amp;w=112&amp;amp;h=84" width="112" border="0" /&gt;&lt;br /&gt;
Report builder 2.0 - Présentation&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/MTtBHfhgB28" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/01/08/Report-Builder-20-Le-reporting-ad-hoc-pour-l-utilisateur-final#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/315985</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/01/08/Report-Builder-20-Le-reporting-ad-hoc-pour-l-utilisateur-final</feedburner:origLink></entry>
    
  <entry>
    <title>SSIS - Processing d'un cube dynamique</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Sl7UwxZnUBQ/SSIS-Processing-d-un-cube-dynamique" rel="alternate" type="text/html" title="SSIS - Processing d'un cube dynamique" />
    <id>urn:md5:6791df66f54d2d2a1284e6e0647d2283</id>
    <updated>2009-01-08T15:31:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img title="ssis-process-cub.PNG, jan 2009" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/SSIS/ssis-process-cub.PNG" /&gt;Dans un processus
d'ETL qui alimente un &lt;strong&gt;Datawarehouse&lt;/strong&gt;, on finit quasiment à
chaque fois par un process du cube afin qu'il intègre les nouvelles données
pour les utilisateurs.&lt;/p&gt;
&lt;p&gt;La tâche &lt;strong&gt;Analysis Services Processing&lt;/strong&gt; permet de faire cette
action simplement ; en effet, juste un petit écran de configuration et tout
fonctionne.&lt;/p&gt;
&lt;p&gt;Cette tâche se connecte en fait à la base SSAS et envoie un batch de
commande &lt;strong&gt;XMLA&lt;/strong&gt;, le langage de &amp;quot;gestion&amp;quot; de Analysis
Services.&lt;/p&gt;
&lt;p&gt;Le problème est que l'assistant de configuration se base sur la base OLAP
par défaut (&lt;strong&gt;Initial Catalog&lt;/strong&gt;) de votre chaîne de connexion pour
se configurer ; ce qui pose problème quand elle est différente entre la
plate-forme de développement et celle de production, ou encore si on
veut faire un package un peu générique.&lt;/p&gt;
&lt;p&gt;Il faudra donc passer par une variable et une expression pour
dynamiser cette étape :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Configurer le composant pour faire le process de votre base sur votre
plate-forme de développement &lt;/li&gt;
&lt;li&gt;Ajouter une variable (avec le Package pour scope) de type String&lt;/li&gt;
&lt;li&gt;Aller dans les propriétés du composant et copier la valeur de
ProcessingCommands&lt;br /&gt;
&lt;code&gt;&amp;lt;Batch&amp;gt;&amp;lt;Process&amp;gt;&lt;br /&gt;
 
&amp;lt;Object&amp;gt;&amp;lt;DatabaseID&amp;gt;BIWise&amp;lt;/DatabaseID&amp;gt;&amp;lt;/Object&amp;gt;&lt;br /&gt;
  &amp;lt;Type&amp;gt;ProcessFull&amp;lt;/Type&amp;gt;&lt;br /&gt;
&amp;lt;/Process&amp;gt;&amp;lt;/Batch&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Aller dans la propriété Expressions et en ajouter une. Elle doit ressembler
à ceci (attention à l'échappement des &amp;quot;)&lt;br /&gt;
&amp;lt;DatabaseID&amp;gt;&amp;quot; + @[User::OlapDatabaseID] +  &amp;quot;&amp;lt;/DatabaseID&amp;gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;N'oubliez pas de configurer la variable en post-déploiement ou en
pré-exécution.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Sl7UwxZnUBQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/01/08/SSIS-Processing-d-un-cube-dynamique#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/315901</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/01/08/SSIS-Processing-d-un-cube-dynamique</feedburner:origLink></entry>
    
  <entry>
    <title>Meilleurs Voeux pour 2009</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Tv_FcE4WyCI/Meilleurs-Voeux-pour-2009" rel="alternate" type="text/html" title="Meilleurs Voeux pour 2009" />
    <id>urn:md5:34bd3bca37557ec842a69ec497d8271d</id>
    <updated>2009-01-06T08:40:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Perso</dc:subject>
            
    <content type="html">    &lt;p&gt;Que cette nouvelle année soit prospère pour tous, que la crise ne nous tue
pas dans d’atroces souffrances. Que 2009 se place sous le signe de … SQL Server
2008.&lt;/p&gt;
&lt;p&gt;Que le &lt;a title="Bewise - DGD" href="http://www.bewise.fr/fr-FR/business/dgd/Pages/default.aspx" target="_blank"&gt;Décisionnel et la Gestion des Données&lt;/a&gt; innondent vos systèmes
d’information de ROI et autres joyeusetés.&lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:8747F07C-CDE8-481f-B0DF-C6CFD074BF67:18e27847-3030-40fa-8257-18136c353569" style="PADDING-RIGHT: 0; DISPLAY: block; PADDING-LEFT: 0; FLOAT: none; PADDING-BOTTOM: 0; MARGIN-LEFT: auto; WIDTH: 281px; MARGIN-RIGHT: auto; PADDING-TOP: 0"&gt;
&lt;img title="Bonne année 2009 !!" src="http://blog.djeepy1.net/public/bandeaux/orbs_nouvelle_annee_2009.png" border="0" /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Tv_FcE4WyCI" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2009/01/06/Meilleurs-Voeux-pour-2009#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/315174</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2009/01/06/Meilleurs-Voeux-pour-2009</feedburner:origLink></entry>
    
  <entry>
    <title>Consolider des catégories dans un graphe de rapport</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/01-H1tI_-Kk/Consolider-des-categories-dans-un-graphe-de-rapport" rel="alternate" type="text/html" title="Consolider des catégories dans un graphe de rapport" />
    <id>urn:md5:b1da2b0f39aef051ab82cc89d09e92b9</id>
    <updated>2008-12-29T20:05:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img title="Chart-serie-collected.PNG, dec 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/SSRS/Chart-serie-collected.PNG" /&gt;Dans un
graphe sous &lt;strong&gt;Reporting Services&lt;/strong&gt;, on souhaite souvent consolider
les catégories non significatives en une seule catégorie, souvent appelée
&amp;quot;&lt;em&gt;autres&lt;/em&gt;&amp;quot;, tout en gardant les catégories les plus importantes.&lt;/p&gt;
&lt;p&gt;Avec la version 2008 de Reporting Services c'est désormais
possible sans avoir à faire une gymnastique compliquée et contre
performante dans la requête. En effet, les nouveaux composants de graphes
incorporent cette fonctionnalité. Malheureusement elle n'est disponible que sur
les graphes de type camemberts (secteurs).&lt;/p&gt;
&lt;p&gt;Cette fonctionnalité est un peu difficile à trouver. Il faut en effet
sélectionner la série, afficher les &lt;strong&gt;propriétés&lt;/strong&gt; et modifier les
&lt;strong&gt;Custom Attributes&lt;/strong&gt; et changer les attributs
&lt;strong&gt;CollectedStyle&lt;/strong&gt; et
&lt;strong&gt;CollectedThreshold&lt;/strong&gt;. Dans Visual Studio, on trouve ces
propriétés dans la Property Grid. Dans Rebord Builder, il fauda passer par le
menu Affichage pour afficher la Property Grid qui n'est pas accessible par
défaut.&lt;/p&gt;
&lt;p&gt;Dans notre exemple, on consolide tout ce qui est inférieur à 20% dans
&amp;quot;Autres&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;img title="Chart-Serie-CustomAttributes.PNG, dec 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/Chart-Serie-CustomAttributes.PNG" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Si vous trouvez intéressant que cette fonctionnalité soit étendue aux autres
types de graphes, n'hésitez pas à voter sur Connect : &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=389944"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=389944&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/01-H1tI_-Kk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/12/29/Consolider-des-categories-dans-un-graphe-de-rapport#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/313004</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/12/29/Consolider-des-categories-dans-un-graphe-de-rapport</feedburner:origLink></entry>
    
  <entry>
    <title>Azure, Kilimanjaro, Gemini, Madison, la gestion des données en 2010</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/oZsxx7AsTFs/Azure-Kilimanjaro-Gemini-Madison-la-gestion-des-donnees-en-2010" rel="alternate" type="text/html" title="Azure, Kilimanjaro, Gemini, Madison, la gestion des données en 2010" />
    <id>urn:md5:282e25a82785e2098ea3d18c65d5e6f6</id>
    <updated>2008-12-28T19:11:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;&lt;img title="kilmanjaro.png, dec 2008" style="BORDER-RIGHT: 2px double; BORDER-TOP: 1px double; FLOAT: right; MARGIN: 0 0 1em 1em; BORDER-LEFT: 1px double; BORDER-BOTTOM: 2px double" alt="" src="http://blog.djeepy1.net/public/sql2010/kilmanjaro.png" /&gt;SQL Server
2008 est à peine sorti que Microsoft dévoile la prochaine
&lt;strong&gt;roadmap&lt;/strong&gt; pour la gestion des données et le décisionnel.&lt;/p&gt;
&lt;p&gt;On peut certes être dérouté par ces annonces que l'on peut qualifier de
prématurées. Mais l'un des messages associé à la sortie de SQL Server 2008 fut
une cassure dans le rythme des releases avec des fonctionnalités plus autonomes
et par l’occasion plus fréquentes.&lt;/p&gt;
&lt;p&gt;C’est dans cette lignée que s’inscrivent les annonces faites lors de la
dernière BI Conference à Seattle ou à la dernière PDC à Los Angeles.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;L’annonce phare est &lt;strong&gt;Kilimanjaro&lt;/strong&gt;, la prochaine version de
SQL Server, prévue pour &lt;strong&gt;2010&lt;/strong&gt;. Cette version considérée comme
« mineure » ne verra pas de changement dans les différents moteurs
(SQL, OLAP, etc.) mais des améliorations pour l’utilisateur et dans la gestion
des serveurs.&lt;/p&gt;
&lt;p&gt;Cette release se focalise aussi sur des avancées dans le domaine du
décisionnel ; entre autres, 2 projets ont été présentés :
&lt;strong&gt;Gemini&lt;/strong&gt; et &lt;strong&gt;Madison&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Gemini&lt;/ins&gt;&lt;/strong&gt; est un module lié à
&lt;strong&gt;Excel&lt;/strong&gt;, qui permet de traiter efficacement, en mémoire,
plusieurs millions de lignes de données. Destiné aux utilisateurs finaux, il
rapproche la Business Intelligence des clients. En plus d’être un add-in à
Excel, Gemini est aussi une formidable opportunité d’introduire la puissance
d’Analysis Services dans le monde des utilisateurs d’Excel, estimés à plusieurs
centaines de millions, comme a essayé de le faire &lt;strong&gt;Performance
Point&lt;/strong&gt; avec ProClarity.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Madison&lt;/ins&gt;&lt;/strong&gt; est un projet qui vient de l’acquisition
de &lt;strong&gt;DATAllegro&lt;/strong&gt; par Microsoft cet été et qui marque d’une pierre
blanche l’ambition de ce dernier à pénétrer le marché des très gros volumes.
Madison est la solution pour paralléliser les requêtes sur une batterie de
serveurs, permettant une montée en charge plus importante.
&lt;span&gt; &lt;/span&gt;Madison devrait se présenter sous la forme d’un module
additionnel et est prévu en même temps que Kilimanjaro.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Côté relationnel, c’est plutôt vers &lt;strong&gt;Azure&lt;/strong&gt; que se tourne
l’avenir. En deux mots, Azure est la proposition de Microsoft en terme de
&lt;strong&gt;Cloud Computing&lt;/strong&gt;. C’est globalement une nouvelle vision du
développement d’applications, très &lt;strong&gt;orientée services&lt;/strong&gt;, sur une
solution d’hébergement en haute disponibilité avec montée en charge proposée
par Microsoft. &lt;span&gt; &lt;/span&gt;Dans cet univers, le stockage de données
prend une place importante avec 2 briques : &lt;strong&gt;SQL Services&lt;/strong&gt;
et &lt;strong&gt;Azure Table Storage&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;SQL Services&lt;/ins&gt;&lt;/strong&gt; est l’équivalent de SQL Server mais
hébergé sur le « Cloud ». Actuellement, seule la brique relationnelle
(SQL Data Services) est disponible en beta. Elle permet de stocker des entités
relationnelles, accessibles de n’importe où via SOAP ou REST. Pour l’instant,
cette brique est très limitée en termes de fonctionnalités mais devrait
s’enrichir dans les mois à venir pour devenir une vraie base de données online,
incluant même des modules décisionnels de datawarehousing, de reporting et
d’analyse.&lt;/p&gt;
&lt;p&gt;Rassurons nous, SQL Services n’a pas vocation à remplacer le traditionnel
SQL Server (cf. Kilimanjaro) mais complète l’offre de Microsoft et ouvre de
nouvelles perspectives comme le paiement à l’utilisation, plus économique pour
de nombreux clients.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Azure Table Storage&lt;/ins&gt;&lt;/strong&gt; s’appuie techniquement sur
les « tables » de SQL Data Services. La différence est sur la
richesse fonctionnelle. Azure Table Storage est très limité (pas de jointures
par exemple) et répond à des petits besoins en stockage de données. A ne pas en
douter, la différence s’en ressentira &lt;span&gt; &lt;/span&gt;sur le prix des
licences, qui, soit dit en passant, reste la grande interrogation sur l’univers
Azure.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Evidemment, en cette fin d’année 2008, toutes ces informations sont à
tempérer car les différentes phases de développement redéfiniront peut-être les
modalités de mise en œuvre de ces ambitions. Rendez-vous début 2009 pour la
première CTP de Kilimanjaro et les prochaines annonces sur Azure.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;J’espère que ce petit article vous apporte des réponses sur la stratégie de
Microsoft pour les années à venir. L’équipe de consultant de Bewise son à votre
disposition pour compléter ces éclairages et vous présenter plus en détail ces
nouvelles technologies.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/oZsxx7AsTFs" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/12/28/Azure-Kilimanjaro-Gemini-Madison-la-gestion-des-donnees-en-2010#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/312736</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/12/28/Azure-Kilimanjaro-Gemini-Madison-la-gestion-des-donnees-en-2010</feedburner:origLink></entry>
    
  <entry>
    <title>Nouveautés de SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Z2iHZRpzlZo/Nouveautes-de-SQL-Server-2008" rel="alternate" type="text/html" title="Nouveautés de SQL Server 2008" />
    <id>urn:md5:d0548f436c9404b2732d26912cd39822</id>
    <updated>2008-12-27T14:20:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="programmez-logo.jpg, dec 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/bandeaux/programmez-logo.jpg" /&gt;Il y a quelques
mois je publiais un article sur les nouveautés de SQL Server 2008 sur le
magazine (papier) &lt;strong&gt;Programmez&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cet article présente brièvement les &lt;strong&gt;nouvelles
fonctionnalités&lt;/strong&gt; et les &lt;strong&gt;améliorations&lt;/strong&gt; de &lt;strong&gt;SQL
Server 2008&lt;/strong&gt;, avec quelques exemples de code.&lt;/p&gt;
&lt;p&gt;Son intérêt est qu'il est facile d'accès et quasi exhaustif. Je m'en
sers moi même comme pense-bête (oui, j'ai une cervelle de moineau ;-)).&lt;/p&gt;
&lt;p&gt;J'ai mise cet article à disposition sur le site de &lt;strong&gt;Bewise&lt;/strong&gt;
et donc à la disposition de tous. Comme d'habitude, n'hésitez pas à le
commentez, vos retours sont les bienvenus.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bewise.fr/article/114/Les-nouveautes-de-SQL-Server-2008.aspx"&gt;http://www.bewise.fr/article/114/Les-nouveautes-de-SQL-Server-2008.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Quelques extraits choisis :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;SPARSE columns&lt;/ins&gt;&lt;/strong&gt; : le concept de Sparse columns
représente les colonnes à faible densité comme par exemple les attributs d’un
contact dans une base de CRM qui peuvent être très nombreux et pourtant très
peu renseignés. Le fait d’indiquer à SQL Server que ces attributs doivent être
stockés dans des colonnes de type SPARSE permet de gagner l’espace normalement
occupé par les valeurs nulles. Ce gain n’est pas temps pour le stockage mais
pour la manipulation des données qui s’en trouve améliorée du fait d’avoir
moins d’octets à lire.&lt;/p&gt;
&lt;pre&gt;
&lt;span style="COLOR: #000000"&gt;CREATE TABLE dbo.ClientCRM (
ClientID &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; NOT NULL IDENTITY (&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;1&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;),
Nom varchar(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;50&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) NOT NULL,
Poids &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; SPARSE NULL,
Yeux varchar(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;50&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) SPARSE NULL,
Taille numeric(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;3&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, &lt;/span&gt;&lt;span style="COLOR: #800080"&gt;2&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) SPARSE NULL)&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;Les sparses columns s’utilisent aussi avec la notion de Columns Set qui
permet de récupérer ou d’insérer plus facilement des jeux de colonnes disposant
d’une valeur sans avoir à les manipuler toutes explicitement.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Compression des données&lt;/ins&gt;&lt;/strong&gt; : SQL Server 2008
supporte la compression des données à tous les niveaux. Nous l’avons vu avec
les backups mais il est aussi possible de compresser directement les données
d’une table, d’une partition ou d’un index.&lt;br /&gt;
On a du mal à classer cette fonctionnalité dans la catégorie performance car
compression est synonyme de consommation processeur. On attend plus souvent de
ce genre de fonctionnalité de gagner de l’espace disque. On en gagne certes
mais là où la compression apporte est dans l’exécution des requêtes car on doit
lire moins de données sur le disque, ce qui est un des principaux nerfs de la
guerre de la performance. A utiliser néanmoins avec discernement…&lt;/p&gt;
&lt;pre&gt;
&lt;span style="COLOR: #000000"&gt;CREATE TABLE Contact
(id &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;, fullname nvarchar(&lt;/span&gt;&lt;span style="COLOR: #800080"&gt;50&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;) )
WITH (DATA_COMPRESSION &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; PAGE); &lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Resource Governor&lt;/ins&gt;&lt;/strong&gt; : cette fonctionnalité est une
des plus attendues dans SQL Server. Le Resource Governor permet de gérer
finement l’utilisation du serveur (CPU, mémoire). Fini les requêtes qui
monopolisent toutes les ressources. On peut assigner des limitations et des
plans de charge aux différentes connexions ou applications. Ainsi, on peut
faire en sorte qu’une application critique dispose d’un maximum de puissance de
traitement et que des petites applications soient moins prioritaires.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;h5&gt;Nouveautés de Analysis Services&lt;/h5&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Améliorations des performances globales&lt;/ins&gt;&lt;/strong&gt; : dans
cette version 2008 de SSAS, Microsoft a cherché à beaucoup optimiser les
performances de son moteur multidimensionnel. L’objectif est ambitieux :
supporter des DataWarehouse de 100To de données en lieu et place des 25
supportés avec la version 2005. De nombreuses optimisations dans le calcul des
agrégats et la gestion des cubes abondent en ce sens.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Notion de bonnes pratiques&lt;/ins&gt;&lt;/strong&gt; : une nouvelle
fonctionnalité aussi appelée « alertes AMO » apparaît dans Business
Intelligence Studio. De la même façon que le correcteur orthographique de Word,
elles soulignent les éléments qui ne respectent pas les bonnes pratiques de
modélisation et méritent réflexion. Ces avertissements sont débrayables
ponctuellement ou définitivement.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Z2iHZRpzlZo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/12/27/Nouveautes-de-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/312505</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/12/27/Nouveautes-de-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Microsoft Connect</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/XgJMVrh8A60/Microsoft-Connect" rel="alternate" type="text/html" title="Microsoft Connect" />
    <id>urn:md5:a46d6c1dc1008a12b0d3bdf0150cc888</id>
    <updated>2008-12-25T12:45:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Connect</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="connect.PNG, dec 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/microsoft/connect.PNG" /&gt;Un petit
billet pour présenter (ou rappeler à ceux qui connaissent déjà) le
&lt;strong&gt;programme Connect&lt;/strong&gt; de Microsoft. Ce programme regroupe de
plusieurs choses dans l'écosystème Microsoft :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les programmes beta (CTP, TAP, etc.) : c'est ici qu'on l'on s'inscrit pour
tester et suivre les futurs produits, certains sont sur invitation ou réservés
aux MVP et autres privilégiés&lt;/li&gt;
&lt;li&gt;les feedbacks sur les produits : c'est un des canaux de communication pour
remonter des bugs ou des sugestions à Microsoft&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je vais parler de ce second point car il est très important. En effet,
j'entends souvent &amp;quot;râler&amp;quot; auprès de telle ou telle fonctionnalité ou
produit qui ne marche pas, qui marche mal, qui ne marche pas comme il
faudrait, qui n'est pas ergonomique, etc. Quoiqu'on en pense, Microsoft
est une société qui écoute beaucoup ses clients et ses communautés. Le débat
n'est pas de savoir s'ils le font bien ou mal ; au moins, ils le font et,
ma foi, le font intelligement.&lt;/p&gt;
&lt;p&gt;Bref, pour tous ceux qui trouveront qu'on ne les écoute pas suffisamment, on
peut donc remonter ses doléances auprès de l'éditeur via
&lt;strong&gt;Connect&lt;/strong&gt;, sous la forme de bugs ou de suggestions. Un système
de pétition permet de se joindre à une demande, qui prend ainsi plus de
poids. Microsoft classe ensuite ces remontées, voire propose des
solutions de contournement. Evidemment, tout n'est pas &amp;quot;accepté&amp;quot; mais
certaines demandes se voient ajoutées aux releases suivantes.&lt;/p&gt;
&lt;p&gt;Soyons acteurs dans l'amélioration des produits Microsoft. Allez sur
&lt;a href="https://connect.microsoft.com/"&gt;https://connect.microsoft.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour ma part, je suis inscrit à de nombreuses connexions dont, évidemment,
SQL Server. Voici la liste de mes remontées. Il y en a peu à ce jour...car moi
aussi je râlais dans mon coin &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Bugs&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388400"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388400&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388396"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388396&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=387056"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=387056&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=384515"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=384515&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=382355"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=382355&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Suggestions&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=389623"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=389623&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388401"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=388401&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=387058"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=387058&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : ce n'est pas dans mon habitude de mettre à jour des billets au fil du
temps mais je maintiendrai celui-ci par la suite.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/XgJMVrh8A60" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/12/25/Microsoft-Connect#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/312127</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/12/25/Microsoft-Connect</feedburner:origLink></entry>
    
  <entry>
    <title>Sécurité de Report Builder 2.0 - Permissions minimums</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/pILEU55WoBw/Securite-de-Report-Builder-20-Permissions-minimums" rel="alternate" type="text/html" title="Sécurité de Report Builder 2.0 - Permissions minimums" />
    <id>urn:md5:07cced4a7d4f883ad7dc7d6a0e84df88</id>
    <updated>2008-12-25T11:14:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Report Builder</dc:subject><dc:subject>Reporting Services</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="ReportBuilder-Security.png, dec 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/SSRS/ReportBuilder-Security.png" /&gt;&lt;strong&gt;Report
Builder 2.0&lt;/strong&gt; est un outil fantastique pour l'utilisateur final (j'y
reviendrai très prochainement avec un Webcast). Il nécessite néanmoins un peu
de préparation de la part de l'administrateur &lt;strong&gt;Reporting
Services&lt;/strong&gt; afin de donner les bons droits aux utilisateurs sans ouvrir
les vannes.&lt;/p&gt;
&lt;p&gt;Je décris ici les permissions minimums à accorder aux utilisateurs de Report
Builder et quelques bonnes pratiques afin d'éviter le syndrome &amp;quot;&lt;em&gt;Je
mets tout le monde Administrateur&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;h5&gt;Quelques mots sur la sécurité&lt;/h5&gt;
&lt;p&gt;Sans faire tout un article sur la sécurité de Reporting Services, il faut
savoir qu'elle est basée sur des &lt;strong&gt;rôles&lt;/strong&gt; donnant accès aux
différentes tâches élémentaires de Reporting (afficher un rapport, créer un
répertoire, etc.). Pour autoriser des utilisateurs, on leur assigne un ou
plusieurs rôles.&lt;/p&gt;
&lt;p&gt;Deuxième point important à intégrer, la sécurité est
&lt;strong&gt;héritée&lt;/strong&gt; ; c'est à dire que l'affectation à un rôle au niveau
racine se propage à tous les niveaux enfants. On peut bien évidemment casser
cette sécurité pour une branche donnée de l'arborescence. D'ailleurs, une
première bonne pratique est de sécuriser plus fortement le niveau racine et
d'affecter des droits de plus en plus fins en descendant dans
l'arborescence.&lt;/p&gt;
&lt;h5&gt;My Reports&lt;/h5&gt;
&lt;p&gt;Parmi les fonctionnalités de Reporting Services, il existe la notion de
&amp;quot;&lt;strong&gt;My Reports&lt;/strong&gt;&amp;quot; qui permet à chaque utilisateur d'avoir un
&lt;strong&gt;répertoire privé&lt;/strong&gt; dans lequel il peut créer et modifier des
rapports, visibles que de lui (et de l'administrateur). Cette fonctionnalité,
qui s'active depuis Management Studio (&lt;em&gt;clic droit-&amp;gt;Propriétés&lt;/em&gt;),
semble idéale pour nos utilisateurs finaux. Le souci est qu'il faut donner des
droits sur le répertoire racine pour atteindre ce répertoire spécial,
rendant visible du coup les autres répertoires et éléments du niveau racine et
des niveaux en héritant (cf. la bonne pratique évoquée
ci-dessus). &lt;/p&gt;
&lt;p&gt;Le seul compromis possible est de créer un rôle spécifique pour le dossier
racine permettant de ne voir que les dossiers et de casser l'héritage de
sécurité pour tous les sous-niveaux.&lt;/p&gt;
&lt;p&gt;Que l'on utilise ou pas la fonctionnalité &amp;quot;My Reports&amp;quot; (moi je préfère créer
un répertoire de travail fixe pour tous les utilisateurs d'un même
service/groupe), il va falloir associer nos utilisateurs aux bons rôles. A
notre disposition, nous avons les rôles suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;My Reports&lt;/strong&gt; : donne tous les droits nécessaire à la
création/modification de rapports (attention, à ne mettre &lt;strong&gt;QUE&lt;/strong&gt;
sur le répertoire My Reports)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Report Builder&lt;/strong&gt; : permet de voir et d'ouvrir des rapports
existants (+ les abonnements mais ce n'est pas le sujet)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour moi, le premier est trop permissif et le second ne permet pas la
modification. Rappelons que le but pour l'utilisateur final est de pouvoir
créer ses propres rapports ou bien modifier un rapport existant (j'ai souvent
des demandes de mises en page pour lesquelles je n'ai pas de valeur ajoutée en
tant que consultant). En plus, il va falloir gérer des points importants comme
les droits sur les modèles et sources de données ainsi que la
prévisualisation...&lt;/p&gt;
&lt;h5&gt;Ma solution&lt;/h5&gt;
&lt;p&gt;Je vais vous livrer ma solution à la problématique de droits minimums pour
l'utilisateur final.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Je mets l'utilisateur dans le &lt;strong&gt;rôle &amp;quot;Report Builder&amp;quot;&lt;/strong&gt;
au niveau racine afin qu'il puisse naviguer et ouvrir les rapports existants.
Je prends soin de casser l'héritage de sécurité pour des répertoires sensibles
(souvent les RH).&lt;/li&gt;
&lt;li&gt;Je crée un &lt;em&gt;répertoire de validation&lt;/em&gt; afin que les utilisateurs
puissent enregistrer leur travail (création ou modification). Je mets
l'utilisateur dans le &lt;strong&gt;rôle &amp;quot;Publisher&amp;quot;&lt;/strong&gt; afin qu'il puisse
sauvegarder.&lt;br /&gt;
J'utilise cette notion de répertoire de validation afin d'éviter les erreurs de
manipulation et qu'un utilisateur ne corrompe un rapport existant.&lt;/li&gt;
&lt;li&gt;Je donne les droits en lecture sur les &lt;strong&gt;sources de données&lt;/strong&gt;.
Le &lt;strong&gt;rôle &amp;quot;Report builder&amp;quot;&lt;/strong&gt; permet d'accèder aux modèles de
données mais pas aux sources de données, ce qui est gênant dans un cadre
multidimensionnel. J'ajoute donc la tâche &amp;quot;&lt;strong&gt;View data sources&lt;/strong&gt;&amp;quot;
dans le rôle &amp;quot;Report Builder&amp;quot; (voire je crée un nouveau rôle juste pour
cela).&lt;br /&gt;
J'affecte ce rôle au répertoire contenant les sources de données pour une
création de rôle dédié ou bien à toute l'arborescence, ce qui a déjà été
fait dans l'étape 1.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://blog.djeepy1.net/public/SSRS/report-builder-security-roles.png"&gt;&lt;img title="report-builder-security-roles.png, dec 2008" height="292" alt="" src="http://blog.djeepy1.net/public/SSRS/.report-builder-security-roles_m.jpg" width="448" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Il reste un droit à donner à l'utilisateur :
&lt;strong&gt;ExecuteReportDefinition&lt;/strong&gt; pour permettre la prévisualisation
directement dans Report Builder. Ce droit fait partie du rôle système (au
niveau serveur) &lt;strong&gt;System User&lt;/strong&gt;. Comme je ne veux pas affecter ce
rôle à mes utilisateurs finaux, je crée un rôle système spécifique, ne
contenant que ce droit.&lt;br /&gt;
&lt;br /&gt;
&lt;img title="report-builder-security-role-system.png, dec 2008" alt="" src="http://blog.djeepy1.net/public/SSRS/report-builder-security-role-system.png" /&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Voila, notre utilisateur final peut installer Report Builder 2.0 (et le
Framework 3.5 SP1) et vous n'avez qu'à lui configurer le Report Server par
défaut et préparer les modèles et sources de données partagées.&lt;/p&gt;
&lt;p&gt;Il ne reste plus qu'à désigner un utilisateur référant pour déplacer les
rapports du répertoire de validation vers leur emplacement définitif. Le rôle
Publisher est adéquat pour ce travail même si je préfère en créer un plus
limité (qui n'aura pas d'accès aux modèles et sources de données).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/pILEU55WoBw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/12/25/Securite-de-Report-Builder-20-Permissions-minimums#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/312106</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/12/25/Securite-de-Report-Builder-20-Permissions-minimums</feedburner:origLink></entry>
    
  <entry>
    <title>Ranking de la fonction FREETEXT</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Geo8pFjnVSM/Ranking-de-la-fonction-FREETEXTTABLE" rel="alternate" type="text/html" title="Ranking de la fonction FREETEXT" />
    <id>urn:md5:9eb3f945e7a44d2fa6623afec602ef03</id>
    <updated>2008-11-24T23:49:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Full Text Search</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="FTS.jpg, nov 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/SQL/.FTS_s.jpg" width="150" /&gt;Souvent on
me pose des questions sur la pertinence de la recherche FullText de SQL
Server.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Pourquoi l'article que je recherchais n'est pas remonté, ...ce mot là
est plus important que celui-ci, ...normalement ce truc là aurait du
remonter..., etc.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Il faut bien comprendre que la pertinence est très complexe à
calculer. Malgré cela, Microsoft nous en livre la formule dans la
MSDN (la formule est la même pour les 2 version) : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL Server 2005 : &lt;a href="http://technet.microsoft.com/en-us/library/ms142524(SQL.90).aspx"&gt;http://technet.microsoft.com/en-us/library/ms142524(SQL.90).aspx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQL Server 2008 : &lt;a href="http://technet.microsoft.com/en-us/library/ms142524.aspx"&gt;http://technet.microsoft.com/en-us/library/ms142524.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je vous invite à vous rendre directement à la section
&lt;strong&gt;Ranking of FreeText&lt;/strong&gt; qui nous donne la formule
&lt;strong&gt;OKAPI BM25&lt;/strong&gt; servant au calcul du Rank. &lt;/p&gt;
&lt;p&gt;Simplement, retenez que la &lt;strong&gt;densité&lt;/strong&gt; est un critère très
important. En effet, si on recherche par exemple &amp;quot;&lt;em&gt;fût de sherry&lt;/em&gt;&amp;quot;
et que &amp;quot;&lt;em&gt;fût&lt;/em&gt;&amp;quot; est seul mais dans un texte court, il peut passer
devant &amp;quot;&lt;em&gt;fût&lt;/em&gt;&amp;quot; et &amp;quot;&lt;em&gt;sherry&lt;/em&gt;&amp;quot; noyés dans un long texte. Plus
vos textes seront touffus, plus la pertinence sera avérée; par exemple, indexer
des titres courts (quelques mots) produira des effets de bord certains.&lt;/p&gt;
&lt;p&gt;Voici la formule à titre d'information. Si vous jugez qu'un résultat n'est
pas à sa place, vous pouvez le vérifier et porter réclamation auprès de
l'éditeur sur &lt;a href="http://connect.microsoft.com/"&gt;Connect&lt;/a&gt;.
Personnellement, à chaque fois que j'ai constaté de mauvais résultats, c'est
qu'il y avait une mauvaise recherche ou bien des données mal renseignées.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Rank = Σ[Terms in Query] w ( ( ( k1 + 1 ) tf
) / ( K + tf ) ) * ( ( k3 + 1 ) qtf / ( k3 + qtf ) ) )&lt;br /&gt;
Where:&lt;br /&gt;
w is the Robertson-Sparck Jones weight.&lt;br /&gt;
In simplified form, w is defined as:&lt;br /&gt;
w = log10 ( ( ( r + 0.5 ) * ( N – R + r + 0.5 ) ) / ( ( R – r + 0.5 ) * ( n – r
+ 0.5 ) )&lt;br /&gt;
N is the number of indexed rows for the property being queried.&lt;br /&gt;
n is the number of rows containing the word.&lt;br /&gt;
K is ( k1 * ( ( 1 – b ) + ( b * dl / avdl ) ) ).&lt;br /&gt;
dl is the property length, in word occurrences.&lt;br /&gt;
avdl is the average length of the property being queried, in word
occurrences.&lt;br /&gt;
k1, b, and k3 are the constants 1.2, 0.75, and 8.0, respectively.&lt;br /&gt;
tf is the frequency of the word in the queried property in a specific
row.&lt;br /&gt;
qtf is the frequency of the term in the query.&lt;/code&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Geo8pFjnVSM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/24/Ranking-de-la-fonction-FREETEXTTABLE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/302330</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/24/Ranking-de-la-fonction-FREETEXTTABLE</feedburner:origLink></entry>
    
  <entry>
    <title>MacLaren tourne sous SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/PJ2o_Qm7QvY/MacLaren-tourne-sous-SQL-Server-2008" rel="alternate" type="text/html" title="MacLaren tourne sous SQL Server 2008" />
    <id>urn:md5:fa790567220f68de6e514295fb798991</id>
    <updated>2008-11-22T23:25:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;strong&gt;MacLaren Electronics Systems&lt;/strong&gt;, division qui équipe les
&lt;strong&gt;Formule 1&lt;/strong&gt; de l'écurie du même nom, utilisent les technologies
Microsoft pour leur backoffice :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SQL Server 2008 pour les données&lt;/li&gt;
&lt;li&gt;Reporting Services et Excel 2007 pour la restitution de
données&lt;/li&gt;
&lt;li&gt;Analysis Services de Data Mining&lt;/li&gt;
&lt;li&gt;Silverlight pour les interfaces&lt;/li&gt;
&lt;li&gt;et Visual Studio 2008 pour développer tout cela&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="maclaren-sqlserver2008.PNG, nov 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/sql2008/maclaren-sqlserver2008.PNG" /&gt;La
fonctionnalité &lt;strong&gt;FILESTREAM&lt;/strong&gt; a été déterminante pour le choix de
SQL Server 2008 car MacLaren doit stocker et gérer les données binaires
provenant des équipements embarqués dans la voiture (ECU - Engine Control
Unit). Pour rappel, cette fonctionnalité permet de stocker des données binaires
(documents, vidéos, etc.) sur le système de fichier classique et d'y accéder de
façon streamée (par flux), le tout géré par SQL Server (sécurité, requêtage,
etc.). Cela permet d'optimiser les ressources du serveur.&lt;/p&gt;
&lt;p&gt;Evidemment, les capacités d'analyses de SQL Server sont aussi utilisés pour
explorer et faire parler les données. Les données étant extraites du binaire
via des fonctions CLR. Pour l'anecdote, un Grand Prix génère entre 1 et 2Go de
données.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Démonstration en vidéo : &lt;a href="http://www.microsoft.com/casestudies/resources/Files/4000001476/McLaren_Technical_3min_500k.wvx"&gt;
http://www.microsoft.com/casestudies/resources/Files/4000001476/McLaren_Technical_3min_500k.wvx&lt;/a&gt;&lt;br /&gt;

Le &amp;quot;&lt;em&gt;case study&amp;quot;&lt;/em&gt; en détail : &lt;a href="http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000001476"&gt;http://www.microsoft.com/casestudies/casestudy.aspx?casestudyid=4000001476&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Sinon, sur un plan plus personnel, étant tifosi de la scuderia (aka
supporter de Ferrari) depuis près de 15 ans, cela me rend jaloux. M'est
avis que mon regard va changer la saison prochaine ;-) &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : vous aurez noté que les bruits des F1 dans la vidéo ont été
américanisés. Sans les images, on jurerait que c'est du Nascar.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/PJ2o_Qm7QvY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/22/MacLaren-tourne-sous-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/301723</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/22/MacLaren-tourne-sous-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>IIS Media Pack 1.0</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/25CUrvqPKTs/IIS-Media-Pack-10" rel="alternate" type="text/html" title="IIS Media Pack 1.0" />
    <id>urn:md5:ff0e651b1b66d950c9d76e313d9ae91b</id>
    <updated>2008-11-22T22:17:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>IIS</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="speedlimit-small.png, nov 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" height="188" alt="" src="http://blog.djeepy1.net/public/iis/speedlimit-small.png" width="150" /&gt;Il y a
2 semaines est sorti un pack d'extension au serveur Web &lt;strong&gt;IIS
7.0&lt;/strong&gt;. Comme son nom l'indique, ce pack ajoute 2 fonctionnalités
médias :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bit Throttling (contrôle de flux)&lt;/strong&gt; : cela permet de
contrôler le débit de différents types de médias (WMV, MP3, etc.) en
fonction du client, du paramétrage, etc. Ayant eu, dans une vie antérieure, à
développer des sites web manipulant de nombreux médias (vidéos, mp3), je peux
vous dire que cette fonctionnalité est très intéressante. Elle permet de gérer
son contenu plus sereinement, je parle surtout en terme de bande passante, sans
avoir à recourir à un serveur spécialisé (streaming, Windows Media
Services, etc.) ou à un CDN (Content Delivery Network comme akamai).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web playlists&lt;/strong&gt; : création de playlists éventuellement
dynamiques avec pour principal but de ne pas exposer en direct vos médias&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;De nouvelles extensions sont prévues pour 2009, notamment concernant la
gestion des vidéos HD avec &lt;strong&gt;Smooth Streaming&lt;/strong&gt; (je vous renvoie
d'ailleurs sur le blog d'un collègue qui en parle : &lt;a href="http://patricelamarche.net/2008/11/18/SilverlightVideosEnHDViaSilverlightEtIIS7.aspx"&gt;
SmoothHD chez Patrice Lamarche&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Plus d'infos sur le site de IIS : &lt;a href="http://www.iis.net/media"&gt;http://www.iis.net/media&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/25CUrvqPKTs" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/22/IIS-Media-Pack-10#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/301712</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/22/IIS-Media-Pack-10</feedburner:origLink></entry>
    
  <entry>
    <title>Erreur Migration Reporting Services 2005 vers 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/SiRQHBTi1pw/Erreur-Migration-Reporting-Services-2005-vers-2008" rel="alternate" type="text/html" title="Erreur Migration Reporting Services 2005 vers 2008" />
    <id>urn:md5:c25775f3929b45a4b13ff21b3866a409</id>
    <updated>2008-11-17T00:15:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="report-manager.PNG, nov 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/SSRS/report-manager.PNG" /&gt;Une petite
mésaventure qui est arrivé à un de mes collègues lors de la &lt;strong&gt;migration
de SQL Server 2005 à SQL Server 2008&lt;/strong&gt;. Tout a bien fonctionné, la
migration se passe sans encombre, tous les services repartent, les applications
fonctionnent très bien sauf 1 &lt;strong&gt;rapport&lt;/strong&gt; qui affiche cette erreur
:&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Index was out of range. Must be non negative
and less than the size of the collection. Parameter name index&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous avons donc réouvert le rapport sous Visual Studio pour voir ce qui
pouvait clochait et pas de problème apparent, le rapport n'affichant même pas
d'erreur dans la prévisualisation (qui n'est tout à fait pas le même moteur de
rendu).&lt;/p&gt;
&lt;p&gt;Après quelques périgrinations sur le web, je trouve un problème similaire
avec des largeurs de colonnes dans la CTP2 (&lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=338777&amp;amp;wa=wsignin1.0"&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=338777&amp;amp;wa=wsignin1.0&lt;/a&gt;).
Le problème était (celui-ci étant corrigé dans la RTM) que dans certains cas,
l'éditeur mettait des -1 comme valeur d'attribut, ce qui n'est pas interprété
par le renderer qui lève une exception.&lt;/p&gt;
&lt;p&gt;Nous avons donc cherché s'il n'y avait pas de -1 dans le &lt;strong&gt;fichier
RDL&lt;/strong&gt; résultant de la migration et nous en avons trouvé. La migration
ajoute des valeurs par défaut mais le moteur de rendu HTML de &lt;strong&gt;Reporting
Services 2008&lt;/strong&gt; ne sait pas les traiter. Il faut donc aller supprimer
ces -1 à la main (&lt;strong&gt;&lt;em&gt;clic droit-&amp;gt;View Code&lt;/em&gt;&lt;/strong&gt; dans
l'explorateur de solution).&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;ChartArea Name=&amp;quot;Default&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;ChartCategoryAxes&amp;gt;&lt;br /&gt;
  &amp;lt;ChartAxis Name=&amp;quot;Primary&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;ChartMinorGridLines&amp;gt;&lt;br /&gt;
    &amp;lt;Enabled&amp;gt;False&amp;lt;/Enabled&amp;gt;&lt;br /&gt;
    &amp;lt;Interval&amp;gt;NaN&amp;lt;/Interval&amp;gt;&lt;br /&gt;
    &lt;strong style="COLOR: red"&gt;&amp;lt;IntervalOffset&amp;gt;-1&amp;lt;/IntervalOffset&amp;gt;&lt;/strong&gt;&lt;br /&gt;
   &amp;lt;/ChartMinorGridLines&amp;gt;&lt;br /&gt;
  &amp;lt;/ChartAxis&amp;gt;&lt;br /&gt;
 &amp;lt;/ChartCategoryAxes&amp;gt;&lt;br /&gt;
&amp;lt;/ChartArea Name=&amp;quot;Default&amp;quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ici, le problème se situait dans les lignes intermédiaires d'un graphique,
pourtant désactivées.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : si vous aussi avez rencontré ce problème, merci de le signaler sur
&lt;strong&gt;Connect&lt;/strong&gt; pour une correction plus rapide de la part de
Microsoft. Ca se passe ici : &lt;a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=382355"&gt;
https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=382355&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/SiRQHBTi1pw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/14/Erreur-Migration-Reporting-Services-2005-vers-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/298427</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/14/Erreur-Migration-Reporting-Services-2005-vers-2008</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Services ou SQL Data Services ?</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/JqsqG-fL0Tg/SQL-Services-ou-SQL-Data-Services" rel="alternate" type="text/html" title="SQL Services ou SQL Data Services ?" />
    <id>urn:md5:65246e2031f78bf2545c30a87f034101</id>
    <updated>2008-11-10T09:56:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Azure</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Une question légitime sur &lt;em&gt;SQL Services&lt;/em&gt; est de savoir quel
est son vrai nom ? En effet, on peut trouver les termes &lt;strong&gt;SQL
Services&lt;/strong&gt; et &lt;strong&gt;SQL Data Services&lt;/strong&gt;. Lequel est correct
?&lt;/p&gt;
&lt;p&gt;En fait, les deux sont corrects mais ne correspondent pas à la même
technologie. Je m'explique. &lt;strong&gt;SQL Services&lt;/strong&gt; est la technologie
&amp;quot;&lt;em&gt;chapeau&lt;/em&gt;&amp;quot; qui correspond à l'équivalent de SQL Server in-the-cloud. Ce
sont les services SQL de Windows Azure. &lt;strong&gt;SQL Data Services&lt;/strong&gt; est
un sous-ensemble de SQL Services et correspond uniquement au service de données
relationnelles. C'est l'équivalent de la brique base de données de SQL
Server.&lt;/p&gt;
&lt;p&gt;Même si on comprend avec l'un ou l'autre des termes, la précision est faite
&lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/JqsqG-fL0Tg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/10/SQL-Services-ou-SQL-Data-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/296343</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/10/SQL-Services-ou-SQL-Data-Services</feedburner:origLink></entry>
    
  <entry>
    <title>Report Builder in-the-Cloud</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/xXgcm6DLnTg/Report-Builder-dans-le-Cloud" rel="alternate" type="text/html" title="Report Builder in-the-Cloud" />
    <id>urn:md5:8a5f9e66a0227e2b54511c1bd8748849</id>
    <updated>2008-11-10T09:28:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>PDC2008</dc:subject><dc:subject>Reporting Services</dc:subject><dc:subject>SQL Services</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSRS/datasource-sql-data-services.png"&gt;&lt;img title="datasource-sql-data-services.png, nov 2008" style="MARGIN: 1em 0" alt="" src="http://blog.djeepy1.net/public/SSRS/.datasource-sql-data-services_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Lors d'une démo à la PDC, j'ai vu la possibilité de faire des rapports
Reporting Services avec des données récupérées depuis &lt;strong&gt;SQL Data
Services&lt;/strong&gt; (ie. &amp;quot;dans le cloud&amp;quot;).&lt;/p&gt;
&lt;p&gt;Cette fonctionnalité est possible grâce aux fonctionnalités
d'extensibilité qui existent dans Reporting Services depuis la
version 2005. En effet, il est possible grâce aux &lt;strong&gt;Custom Data
Extensions&lt;/strong&gt; (CDE) d'ajouter sa propre méthode de récupération de
données (un System.Data.DataSet, un composant métier, un webservice, etc.).&lt;/p&gt;
&lt;p&gt;Une partie des équipes de SQL Services, affectée sur des
&lt;strong&gt;labs&lt;/strong&gt; autour de la nouvelle technologie, nous propose donc
une implémentation permettant de requêter des données &lt;strong&gt;dans le
Cloud&lt;/strong&gt;. En ajoutant simplement quelques Assemblies dans les répertoires
de Report Builder, Visual Studio et Report Server, on dispose donc d'un nouveau
type de connexion pour les &lt;strong&gt;Data Sources&lt;/strong&gt; : SQL Server Data
Services.&lt;/p&gt;
&lt;p&gt;Pour obtenir les DLLs et le quide d'installation : &lt;a href="http://sqlserviceslabs.net/Reporting.html"&gt;http://sqlserviceslabs.net/Reporting.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSRS/datasource-sql-data-services-2.png"&gt;&lt;img title="datasource-sql-data-services-2.png, nov 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" height="240" alt="" src="http://blog.djeepy1.net/public/SSRS/.datasource-sql-data-services-2_s.jpg" width="227" border="0" /&gt;&lt;/a&gt;Une fois installé, il suffit de se connecter sur
son &lt;strong&gt;Authority&lt;/strong&gt;, de choisir son &lt;strong&gt;Container&lt;/strong&gt; et
d'écrire sa requête à la &lt;strong&gt;Linq Style&lt;/strong&gt; :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;from e in entities where e.Kind == &amp;quot;Contacts&amp;quot;
select e&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note : attention, une erreur de jeunesse certainement, il ne
faut pas de retour à la ligne dans la requête&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Merci à &lt;strong&gt;Stella Chan&lt;/strong&gt;, Lead Program Manager sur Reporting
Services chez Microsoft, pour ses réponses. D'ailleurs, je reviendrai bientôt
avec un post sur sa session à la PDC (&lt;a href="http://channel9.msdn.com/pdc2008/BB26/"&gt;http://channel9.msdn.com/pdc2008/BB26/&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/xXgcm6DLnTg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/10/Report-Builder-dans-le-Cloud#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/296333</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/10/Report-Builder-dans-le-Cloud</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services - Rich TextBox</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/AdMokxNX_uE/Reporting-Services-Rich-TextBox" rel="alternate" type="text/html" title="Reporting Services - Rich TextBox" />
    <id>urn:md5:3ecf7607fedf015fee34811f13a300d1</id>
    <updated>2008-11-03T09:49:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Une petite fonctionnalité attendue depuis la version 2005 fait son
apparition dans la version 2008 de &lt;strong&gt;Reporting Services&lt;/strong&gt; ; c'est
la gestion fine du contenu des textboxes.&lt;/p&gt;
&lt;p&gt;En 2005, une textbox contient un texte statique OU une expression. Il
fallait donc mettre des textboxes côte à côte pour faire un bloc de texte un
peu plus évolué.&lt;/p&gt;
&lt;p&gt;&lt;img title="reporting-services-placeholder-create.png, nov 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/reporting-services-placeholder-create.png" /&gt;&lt;/p&gt;
&lt;p&gt;Maintenant, il est possible de créer des &lt;strong&gt;PlaceHolder&lt;/strong&gt; dans
une textbox et donc mélanger des expressions avec du texte statique.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSRS/reporting-services-placeholder.png"&gt;&lt;img title="reporting-services-placeholder.png, nov 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/.reporting-services-placeholder_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;De plus, les textboxes supportent maintenant du contenu enrichi. On peut
donc formater le texte très finement voire utiliser des balises
&lt;strong&gt;HTML&lt;/strong&gt; pour un formatage plus dynamique. Chaque bloc de texte ou
placeholder peut être formaté indépendemment.&lt;/p&gt;
&lt;p&gt;&lt;img title="reporting-services-rich-text.png, nov 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/.reporting-services-rich-text_m.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Biensur, tout ceci disponible sous Visual Studio 2008 ou Report Builder
2.0&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/AdMokxNX_uE" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/11/03/Reporting-Services-Rich-TextBox#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/293529</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/11/03/Reporting-Services-Rich-TextBox</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - jour 4</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/tqWFh6E_smk/PDC2008-jour-4" rel="alternate" type="text/html" title="PDC2008 - jour 4" />
    <id>urn:md5:a3392958aed6999b34182bf268c78131</id>
    <updated>2008-10-30T23:59:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>Azure</dc:subject><dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Les sessions auxquelles j'ai participé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SQL Server Data Services : Under the Hood&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Under the hood: Inside the Cloud Computing Hosting
Environment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Designing Your Application to Scale&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;SQL Server Data Services : Under the Hood&lt;/h5&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/post/2008/10/30/PDC2008-Interlude"&gt;cf. post
sur le sujet&lt;/a&gt;. Mais je ne dirais qu'une chose : GENIAL !!&lt;/p&gt;
&lt;h5&gt;Under the hood: Inside the Cloud Computing Hosting Environment&lt;/h5&gt;
&lt;p&gt;Pas beaucoup plus d'info que la dernière session du premier jour
(Architecting Azure). Le système de réplication des noeuds semble
impressionnant et comme je le pensais intégré au plus bas niveau. Et le
&lt;strong&gt;Fabric Controller&lt;/strong&gt; qui surveille tout... Une vraie
fourmilière...&lt;br /&gt;
Juste un détail, il est possible d'héberger les rôles (les services en fait)
sur un noeud physique ou sur une VM, et là, c'est Hyper-V (version Windows
Azure certainement) qui prend la main.&lt;/p&gt;
&lt;h5&gt;Designing Your Application to Scale&lt;/h5&gt;
&lt;p&gt;Un état de l'art de la montée en charge. J'étais très heureux de voir que je
partage les mêmes concepts que Microsoft, ça me conforte dans les preceptes que
je prêche en consulting.&lt;br /&gt;
Encore une fois j'ai adoré le pattern Ring Geometry, appliqué aussi dans
l'architecture de haute disponibilité de Azure (en plus de SQL Services,
&lt;a href="http://blog.djeepy1.net/post/2008/10/30/PDC2008-Interlude"&gt;cf. post
précédent&lt;/a&gt;).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/tqWFh6E_smk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/30/PDC2008-jour-4#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/292434</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/30/PDC2008-jour-4</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - Après les sessions</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/ayh42LSMkE0/PDC2008-Apres-les-sessions" rel="alternate" type="text/html" title="PDC2008 - Après les sessions" />
    <id>urn:md5:359c6d37697bf1e03a2003e3e8dac4a1</id>
    <updated>2008-10-30T23:00:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject>    
    <content type="html">    &lt;p&gt;Ce post, je le fais au bord de la piscine du Roosevelt Hotel à Hollywood,
Californie. C'est le dernier jour de la PDC, les sessions sont finies, il doit
faire 30° au soleil et l'eau est bonne.&lt;/p&gt;
&lt;p&gt;&lt;img title="PDC2008_-piscine.JPG, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/PDC/PDC2008_-piscine.JPG" width="400" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/ayh42LSMkE0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/30/PDC2008-Apres-les-sessions#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/292441</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/30/PDC2008-Apres-les-sessions</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - jour 3</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/FEudTpZ1zmc/PDC2008-jour-3" rel="alternate" type="text/html" title="PDC2008 - jour 3" />
    <id>urn:md5:4f5017f796c8e56c4e899b401a029fad</id>
    <updated>2008-10-30T20:01:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>Azure</dc:subject><dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Les sessions auxquelles j'ai participé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keynote - MS Research&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server Data Services: Futures&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Programming Cloud Table Storage&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008: Deep Dive into Spatial Data&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h5&gt;SQL Server Data Services: Futures&lt;/h5&gt;
&lt;p&gt;Rappel des fonctionnalités disponibles dès maintenant, utilisation avec
Astoria et présentation des prochaines features (connexion directe sur le Cloud
depuis Report Builder 2.0 !!).&lt;/p&gt;
&lt;h5&gt;Programming Cloud Table Storage&lt;/h5&gt;
&lt;p&gt;&lt;img title="PDC2008-convention-center.JPG, oct 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/PDC/PDC2008-convention-center.JPG" /&gt;Lors des
sessions sur Azure, j'ai vu qu'il y avait les briques SQL Services et
&lt;strong&gt;Azure Storage&lt;/strong&gt;. Azure Storage permet de stocker des données
structurées (ie. relationnelles). Mais alors quelle différence avec SQL
Services ?&lt;br /&gt;
En fait, Azure Storage permet de stocker des données facilement et à bas coût;
c'est le SQL Services des pauvres (i'm kiddin'). La session était toutefois
très intéressante avec 90% de code. Le speaker, &lt;strong&gt;Pablo
Castro&lt;/strong&gt; était parfait dans ses explications et impressionnant par
sa vitesse de codage.&lt;/p&gt;
&lt;h5&gt;SQL Server 2008: Deep Dive into Spatial Data&lt;/h5&gt;
&lt;p&gt;Une session level 400 pour finir la journée c'est pas mal. Le speaker,
&lt;strong&gt;Isaac Kunen&lt;/strong&gt;, a traité des points précis de l'utilisation des
API spatiales de SQL Server (et même en dehors d'ailleurs). Il nous a parlé
d'extensibilité et nous a présenté les évolutions futures (la levée de la
limitation de l'hémisphère et des cartes dans Reporting Services)&lt;/p&gt;
&lt;p&gt;Bref, que du bonheur...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/FEudTpZ1zmc" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/30/PDC2008-jour-3#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/292395</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/30/PDC2008-jour-3</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - Interlude</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/EjtA9MDG-zU/PDC2008-Interlude" rel="alternate" type="text/html" title="PDC2008 - Interlude" />
    <id>urn:md5:b6114c0fca0f3cfe87335b27576ec6e1</id>
    <updated>2008-10-30T19:52:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Désolé pour ce post un peu à la sauvage... Je sors de la session décrivant
l'architecture interne de &lt;strong&gt;SQL Services&lt;/strong&gt;. Le travail fait par
les équipes de Microsoft pour monter cette solution est impressionnant.&lt;/p&gt;
&lt;p&gt;&lt;img title="PDC-sql-services-architecture.jpg, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/PDC/PDC-sql-services-architecture.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;3 gros sous-systèmes&lt;/ins&gt; :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le &lt;strong&gt;front-end&lt;/strong&gt; : une ferme qui reçoit les requêtes
REST/SOAP, les traite, les route et appelle le bon noeud SQL dans le
backend&lt;/li&gt;
&lt;li&gt;le &lt;strong&gt;master node&lt;/strong&gt; : un cluster SQL qui contient toutes les
informations de routage et de partitionnement sur les noeuds&lt;/li&gt;
&lt;li&gt;le &lt;strong&gt;back-end&lt;/strong&gt; : une forêt de SQL Server correspondant aux
noeuds, qui se répliquent les uns les autres&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'ai bien aimé la &lt;strong&gt;Ring Geometry&lt;/strong&gt; qui est la technique
d'auto-surveillance et de routage des noeuds entre eux.&lt;/p&gt;
&lt;p&gt;Mais il leur reste encore fort à faire : géo-clustering, requêtes
multi-noeuds, consistance multi-noeuds, etc.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/EjtA9MDG-zU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/30/PDC2008-Interlude#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/292393</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/30/PDC2008-Interlude</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - Jour 2</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/yyvzE1XQL3U/PDC-Jour-2" rel="alternate" type="text/html" title="PDC2008 - Jour 2" />
    <id>urn:md5:3790f3644584d3d549293bc9b7069a11</id>
    <updated>2008-10-30T03:28:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Les sessions auxquelles j'ai participé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keynote 1 &amp;amp; 2&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server Data Services: Tips and Tricks for High-Throughput
Data-Driven Applications&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server 2008: Business Intelligence and Data
Visualization&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Lap around SQL Services&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows Azure: Architecting &amp;amp; Managing Cloud
Services&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img title="pdc-logo-01.jpg, oct 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/PDC/pdc-logo-01.jpg" /&gt;Ces 2
keynotes étaient vraiment fameux. De la démo magique qui brille mais c'est
tellement bon. Le premier Keynote était consacré à &lt;strong&gt;Windows 7&lt;/strong&gt;
et aux interfaces clientes. Le second était une démo 100% code avec
&lt;strong&gt;Azure&lt;/strong&gt; présentée par les showmen &lt;strong&gt;Don Box&lt;/strong&gt; et
&lt;strong&gt;Chris Anderson&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Les sessions du jour quant à elles ont été instructives. J'ai eu de nombreux
éléments de réponse qui consolident ma vision de Azure (et de SQL Services).
Tout d'abord, sachez que les versions actuelles sont assez limitées. Je rapelle
que Azure est une vision à 2009-2010. Ces limitations sont fonctionnelles, tout
n'est pas encore développé, mais aussi au niveau des garanties et des quotas
(d'ailleurs, le pricing n'est même pas établi).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Précisions :&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Je vais d'abord revenir sur Azure. L'idée n'est pas de prendre votre
application tel quel et de la mettre sur un système qui garantisse la
haute-disponibilité et la montée en charge. Votre application doit être conçue
pour Azure et doit répondre à de nombreuses règles. C'est pour cela qu'arrive
Oslo, langage qui permet de modéliser ces contraintes et de les intégrer dans
le développement.&lt;br /&gt;
Lors du déploiement sur Azure, ce modèle sera interprété par le &amp;quot;&lt;strong&gt;Fabric
Controller&lt;/strong&gt;&amp;quot; qui gèrera l'application dans le cloud et mettra en place,
en fonction des contraintes exprimées, la redondance le load-balancing,
etc.&lt;br /&gt;
Pour comprendre les contraintes imposées pour votre architecture, il faut bien
voir que pour garantir le load-balancing de vos applications ou même la
haute-disponibilité (reprise après un crash), il faut tendre, par exemple, vers
le stateless ou avoir une gestion d'état compatible. Evidemment, cet exemple
n'est qu'une des facettes des choses à penser pour développer pour le
Cloud.&lt;/p&gt;
&lt;p&gt;Concernant SQl Services, l'idée à terme est vraiment d'avoir un SQL Server
en ligne (in the cloud), qui peut monter en charge à l'infini, gérer la
haute-disponibilité, avec paiement à l'usage, etc. C'est bien SQL Server qu'il
y a derrière (backend servers) mais interfacé par un front-end qui semble
impressionnant (et qui, je pense, réinterprète la requête et la dirige dans le
bon noeud dans le backend).&lt;br /&gt;
Pour le moment, il y a très peu de fonctionnalités, juste du stockage
d'entités. Pas d'intégrité, pas de transactionnalité au niveau du container,
pas de jointures, etc. Pour ces fonctionnalités avancées, il va falloir
attendre ou se les coder comme au bon vieux temps. C'est d'ailleurs assez
frustrant d'ailleurs.&lt;br /&gt;
Le requêtage peut se faire via REST donc on peut tester directement dans un
browser.&lt;/p&gt;
&lt;p&gt;A noter la notion de schéma flexible qui m'a bien plu et qui permet pour des
mêmes entités de ne pas avoir toutes les mêmes colonnes. (Ca sent le sparse
columns derrière...)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
Jeudi, je vais à une session (level 400) sur SQL Services en interne. Il me
tarde...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Conclusion :&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pour conclure, la journée 2 a été très bien pour rentrer en profondeur dans
Azure et SQL Services. Je suis de plus en plus séduit par cette nouvelle
famille chez Microsoft et le fait que Microsoft réfléchisse à modéliser
l'infrastructure (et par extension la production) directement à la création de
l'application va dans le bon sens à mon avis.&lt;br /&gt;
En revanche, je suis aussi de plus en plus frustré car en rentrant dans le
détail, je vois les limitations de la version actuelle. En même temps, je
devais m'y attendre, je suis toujours sceptique sur les démos magiques où on
nous promet la lune :-p.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/yyvzE1XQL3U" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/30/PDC-Jour-2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/292128</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/30/PDC-Jour-2</feedburner:origLink></entry>
    
  <entry>
    <title>PDC2008 - Jour 1</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/txZ_aYP7ZXk/PDC2008-Jour-1" rel="alternate" type="text/html" title="PDC2008 - Jour 1" />
    <id>urn:md5:01399aba2c42e44407398f2723b9e357</id>
    <updated>2008-10-28T18:51:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>Azure</dc:subject><dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject><dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="pdc-100.JPG, oct 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/PDC/pdc-100.JPG" /&gt;Premier jour
de sessions et ma confiance envers les technologies Microsoft est renouvelée
pour quelques années encore. Allons directement à l'essentiel : l'annonce du
Keynote.&lt;/p&gt;
&lt;p&gt;Ray Ozzie, architecte en chef chez Microsot a présenté &lt;a href="http://www.azure.com/"&gt;&lt;strong&gt;Windows Azure&lt;/strong&gt;&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Azure&lt;/strong&gt; est une nouvelle race d'OS, conçue pour le
&lt;strong&gt;Cloud Computing&lt;/strong&gt;. L'objectif, héberger des services (vos
applications) et du stockage (relationnel) dans un environnement en
haute-disponibilité, réparti géographiquement à travers le monde, avec une
montée en charge garantie.&lt;/p&gt;
&lt;p&gt;C'est pour arriver à cet objectif que les équipes de Microsoft (code name
&lt;strong&gt;Red Dog&lt;/strong&gt;, reconnaissables à leurs chaussures rouges) sont
descendus d'un niveau pour intégrer cette gestion (Service Manager) directement
dans l'OS. Mais cela veut dire aussi que Windows Azure et nos applications
seront dans les &lt;strong&gt;Datacenters&lt;/strong&gt; de Microsoft.&lt;/p&gt;
&lt;p&gt;Evidemment, Microsoft va faire concurrence à l'offre &lt;em&gt;elastic&lt;/em&gt; de
Amazon EC2 mais aussi concurrence aux hébergeurs. Mais fort à parier que d'ici
quelques temps, ces mêmes hébergeurs seront certifiés pour hoster Windows Azure
&lt;img src="/themes/default/smilies/smile.png" alt=":-)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;Il faut s'en convaincre, c'est la vision de Microsoft pour les années à
venir. Assez réticent sur le Cloud Computing dès l'apparition de ce buzz
word, j'attendais beaucoup de voir comment Microsoft allait transformer ce
concept dans le monde réel.&lt;/p&gt;
&lt;p&gt;Me voila rassuré même si ces premières annonces et sessions me laissent
encore plein d'interrogations. Heureusement, les sessions à venir détaillent
Azure sur tous les aspects pour lesquels il y a des zones d'ombre. Et puis je
compte aussi aller discuter avec les experts pour creuser certains points
précis.&lt;/p&gt;
&lt;p&gt;Biensur, tout ne sera pas éclairci cette semaine, Azure est encore au stade
de la CTP.&lt;/p&gt;
&lt;p&gt;Pour conclure ce post, voici les sessions auxquelles j'ai participé pour ce
premier jour :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Keynote&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A Lap around Cloud Services Part 1&lt;/strong&gt; : une meilleure vision
des Services Azure&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Datacenters and Resilient Services&lt;/strong&gt; : tout simplement super
intéressant, je veux le même job que Benjamin Ravani, responsable de GFS
(Global Fundation Services) qui est la division chargée des Datacenters et de
la montée en charge des services de Microsoft (Windows Live ID, MSN, Hotmail,
etc.).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ASP.NET 4.0 Roadmap&lt;/strong&gt; : juste des annonces mais un speaker
ennuyeux&lt;br /&gt;
A Lap around Cloud Services Part 2 : la démo magique où tout marche mais on ne
sait pas comment c'est fait, je reste sur ma faim&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SQL Server: Database to Data Platform - Road from Server to Devices
to the Cloud&lt;/strong&gt; : superbe démo de Zach Owens et des éclaircissements sur
les SQL Services d'Azure (en fait SSDS, cf. un ancien post).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ce que j'ai manqué :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;quot;Dublin&amp;quot; and .NET Services: Extending On-Premises Applications to the
Cloud&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : cet article est mon &lt;strong&gt;100ème post&lt;/strong&gt; depuis l'ouverture de
ce blog. Si je state ça, ça fait 5 posts par mois en moyenne...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/txZ_aYP7ZXk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/28/PDC2008-Jour-1#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/291673</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/28/PDC2008-Jour-1</feedburner:origLink></entry>
    
  <entry>
    <title>On a retrouvé Djeepig</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/C8kR6tW--Wk/On-a-retrouve-Djeepig" rel="alternate" type="text/html" title="On a retrouvé Djeepig" />
    <id>urn:md5:c21ffba01e7d2c311bb3a7eb28af65d5</id>
    <updated>2008-10-27T23:17:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>Djeepig</dc:subject><dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject>    
    <content type="html">    &lt;p&gt;Quand je vous le disais que Djeepig était maintenant au paradis de
l'informatique, que dis-je, au panthéon.&lt;br /&gt;
Lors de notre voyage à la PDC à Los Angeles, nous l'avons retrouvé au détour
d'un rayon du Company Store de Microsoft.&lt;br /&gt;
Il a maintenant des ailes (son statut de Code Angel), des lunettes de soleil
(on est à L.A. quand même) et un tatouage Microsoft (pour être
corporate).&lt;br /&gt;
Bref, il a décidé de rentrer avec nous à Bewise et ça, ça me fait
quelquechose.&lt;/p&gt;
&lt;img title="PDC-Djeepig.JPG, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/PDC/PDC-Djeepig.JPG" /&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/C8kR6tW--Wk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/27/On-a-retrouve-Djeepig#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/291422</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/27/On-a-retrouve-Djeepig</feedburner:origLink></entry>
    
  <entry>
    <title>PDC 2008 à Los Angeles</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/0at9kWpOEsE/PDC-2008-a-Los-Angeles" rel="alternate" type="text/html" title="PDC 2008 à Los Angeles" />
    <id>urn:md5:8db0653f18de3a2399fcfdb805691b5f</id>
    <updated>2008-10-25T11:48:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>PDC2008</dc:subject>
        <dc:subject>Bewise</dc:subject><dc:subject>PDC</dc:subject><dc:subject>PDC2008</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="PDC2008.gif, oct 2008" style="FLOAT: left; MARGIN: 0 1em 1em 0" alt="" src="http://blog.djeepy1.net/public/microsoft/PDC2008.gif" /&gt;Demain, je
prends l'avion pour &lt;strong&gt;Los Angeles&lt;/strong&gt; afin d'assister à la PDC
(&lt;strong&gt;Professional Developer Conference&lt;/strong&gt;) 2008. C'est une
première pour moi et aussi un grand honneur. Je serai néanmoins bien accompagné
puisque les bewisiens débarquent en force. Avec moi :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Yann Faure, un habitué de l'étape, Regional Director mais surtout c'est un
de mes patrons &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/li&gt;
&lt;li&gt;David Catuhe, MVP Windows Client, responsable du domaine métier
&lt;a href="http://www.bewise.fr/fr-FR/business/NIU/Pages/default.aspx"&gt;NIU&lt;/a&gt; de
Bewise et lui aussi un de mes patrons (&lt;a href="http://www.catuhe.com/default.aspx"&gt;son blog&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Sacha Leroux, Silverlighter convaincu, responsable du domaine
métier &lt;a href="http://www.bewise.fr/fr-FR/business/SLF/Pages/default.aspx"&gt;SLF&lt;/a&gt; de Bewise
(&lt;a href="http://blogs.developpeur.org/musashi/"&gt;son blog&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Et enfin, mon très cher collègue MVP SQL Server, Sébastien Pertus !&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour vous dire comment Bewise est bien représenté(e?!?). De plus, ce sera
l'occasion d'être réunis avec nos homologues Microsoftees de Paris (Mitsu,
Pascal, Eric, etc.) et d'autres relations &lt;em&gt;technologeek&lt;/em&gt; (je pense
à la communauté &lt;a href="http://www.techheadbrothers.com/"&gt;Tech Head
Brothers&lt;/a&gt; notamment).&lt;/p&gt;
&lt;p&gt;Côté sessions, je vais bien évidemment me concentrer sur &lt;strong&gt;SQL
Server&lt;/strong&gt; mais la PDC est très orientée sur les architectures de type
&lt;strong&gt;Cloud Computing&lt;/strong&gt;. Je suis très curieux de voir l'approche de
Microsoft pour les années à venir et je ne demande qu'à être convaincu. Bref, 4
jours de sessions très techniques, très pro, très dev et surtout très en
avance.&lt;/p&gt;
&lt;p&gt;Evidemment, j'ai aussi hâte d'échanger dans les couloirs de ce type
d'événement avec d'autres MVP ou des gurus reconnus sur l'architecure, le web,
les méthodologies, les outils de développement, etc.. J'ai l'impression
d'entrer dans la cour des grands...et de monter d'une sphère (private
joke).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/0at9kWpOEsE" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/25/PDC-2008-a-Los-Angeles#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/290688</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/25/PDC-2008-a-Los-Angeles</feedburner:origLink></entry>
    
  <entry>
    <title>Logs IIS - champ time-taken</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/2vJQfgpZSJI/Logs-IIS-champ-time-taken" rel="alternate" type="text/html" title="Logs IIS - champ time-taken" />
    <id>urn:md5:c1aaab3d3b4c26a0f25192f30595b78f</id>
    <updated>2008-10-23T16:10:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>IIS6</dc:subject><dc:subject>IIS7</dc:subject><dc:subject>Performances</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img title="logs-time-taken.png, oct 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/iis/logs-time-taken.png" /&gt;&lt;/p&gt;
&lt;p&gt;Le champ étendu des logs IIS &lt;strong&gt;time-taken&lt;/strong&gt; est bien pratique
pour avoir une bonne vision des performances d'un site web ou de services. Il
reflète le temps, en millisecondes, qu'a pris la requête. Mais attention,
qu'inclut-il ?&lt;/p&gt;
&lt;p&gt;Le champ time-taken correspond au temps &lt;strong&gt;entre le premier octet reçu
et le dernier octet envoyé&lt;/strong&gt; par HTTP.sys (la sous-couche HTTP de IIS).
&lt;ins&gt;Il inclut donc le temps de transfert réseau&lt;/ins&gt;.&lt;/p&gt;
&lt;p&gt;En conséquence, si vous avez des pages lourdes (ou des ViewState énormes),
le résultat peut être faussé et votre analyse moins précise. Pensez donc à
jetez un oeil au champ &lt;strong&gt;sc-bytes&lt;/strong&gt; et &lt;strong&gt;cs-bytes&lt;/strong&gt;
(sc=server-to-client / cs=client-to-server) pour vérifier que le poids des
transferts n'est pas anormal. Evidemment, sur un intranet local, l'impact sera
souvent négligeable.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Tous les détails sur ce lien : &lt;a href="http://support.microsoft.com/kb/944884/en-us"&gt;http://support.microsoft.com/kb/944884/en-us&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS : ces informations conviennent à IIS 6.0 et IIS 7.0&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/2vJQfgpZSJI" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/23/Logs-IIS-champ-time-taken#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/290209</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/23/Logs-IIS-champ-time-taken</feedburner:origLink></entry>
    
  <entry>
    <title>Report Builder 2.0 est disponible</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/vtf15j4IfdU/Report-Builder-20-est-disponible" rel="alternate" type="text/html" title="Report Builder 2.0 est disponible" />
    <id>urn:md5:1e45e2a1426627d9f9b25af3ff545450</id>
    <updated>2008-10-20T22:52:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;Je n'ai pas pour habitude de faire juste du relaying de news mais là, je ne
peux m'en empêcher.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Report Builder 2.0 est disponible en release
!!&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Pour le téléchargement, c'est ici : &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&amp;amp;displaylang=en"&gt;
http://www.microsoft.com/downloads/details.aspx?FamilyID=9f783224-9871-4eea-b1d5-f3140a253db6&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux qui ne connaissent pas Report Builder, c'est l'outil de création
de rapports pour Reporting Sevices à destination des utilisateurs finaux. La
version 1.0 livrée avec SQL Server 2005 était très limitée ce qui dégradait
fortement son intérêt. Cette nouvelle version corrige tous ces défauts et offre
un vrai outil de reporting ad hoc.&lt;/p&gt;
&lt;p&gt;Report Builder est maintenant iso-fonctionnel avec Visual Studio mais en
version bien plus light et au design épuré. Personnellement, je m'en sers même
à la place de VS. Pour l'utilisateur final, on créera un modèle d'entités tout
prêt afin de masquer la complexité d'un schéma de base de données.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSRS/report-builder-2.0.png"&gt;&lt;img title="report-builder-2.0.png, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSRS/.report-builder-2.0_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Je vous invite à consultez les Webcasts de la Bewise Developer Conference
pour voir une démo du Report Builder en action : &lt;a href="http://www.bewise.fr/fr-FR/business/DGD/Pages/BDC2008-Webcasts.aspx"&gt;http://www.bewise.fr/fr-FR/business/DGD/Pages/BDC2008-Webcasts.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/vtf15j4IfdU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/20/Report-Builder-20-est-disponible#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/289154</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/20/Report-Builder-20-est-disponible</feedburner:origLink></entry>
    
  <entry>
    <title>Connexion à Integration Services en remote</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/gx_wuQhoLPQ/Connexion-a-Integration-Services-en-remote" rel="alternate" type="text/html" title="Connexion à Integration Services en remote" />
    <id>urn:md5:ab83e65e05fe873428a453e6fea4c960</id>
    <updated>2008-10-20T22:21:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Integration Services</dc:subject><dc:subject>SSIS</dc:subject><dc:subject>Sécurité</dc:subject>    
    <content type="html">    &lt;p&gt;Pour consulter le SSIS Package Store, il faut se connecter au service
windows de Integration Services. Quand celui-ci est sur un serveur distant, il
faut activer des droits pour autoriser cette connexion sinon, vous aurez
l'erreur suivante :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Connect to SSIS Service on Machine &amp;quot;abcd&amp;quot; failed: Access is
denied &lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="SSIS-remote-connection.png, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSIS/SSIS-remote-connection.png" /&gt;&lt;/p&gt;
&lt;p&gt;Pour ce faire, il faut aller dans la configuration des services
de composants distribués (DCOM Config). Tout est expliqué sur ce lien
:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa337083%28SQL.90%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa337083%28SQL.90%29.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Cependant, il manque une étape dans cette manipulation. En plus d'aller
configurer le composant MsDtsSrv, il faut aller dans les propriétés de &amp;quot;My
Computer&amp;quot;, dans l'onglet &amp;quot;COM Security&amp;quot; et éditez les limites des permissions
de lancement et d'activation en ajoutant les comptes autorisés à se
connecter.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SSIS/Remote-Connection-Final.jpg"&gt;&lt;img title="Remote-Connection-Final.jpg, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SSIS/.Remote-Connection-Final_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/gx_wuQhoLPQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/20/Connexion-a-Integration-Services-en-remote#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/289142</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/20/Connexion-a-Integration-Services-en-remote</feedburner:origLink></entry>
    
  <entry>
    <title>Services SQL Server - Droits minimums</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/FAWWNzF7Sa4/Services-SQL-Server-Droits-minimums" rel="alternate" type="text/html" title="Services SQL Server - Droits minimums" />
    <id>urn:md5:b8c49e6286af7e48d132697598e5f658</id>
    <updated>2008-10-20T21:45:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>Sécurité</dc:subject>    
    <content type="html">    &lt;p&gt;Dans la série des articles sur les droits minimums pour faire tourner des
services ou applications, voici un lien utile qui liste les droits nécessaires
aux services qui composent SQL Server, de la base de données aux modules tels
que Reporting Services ou Integration Services.&lt;/p&gt;
&lt;p&gt;Le lien se trouve ici : &lt;a href="http://msdn.microsoft.com/en-us/library/ms143504(SQL.90).aspx#Review_NT_rights"&gt;
http://msdn.microsoft.com/en-us/library/ms143504(SQL.90).aspx#Review_NT_rights&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je galère souvent à trouver ce genre de page donc j'en profite pour la
référencer ici.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/FAWWNzF7Sa4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/20/Services-SQL-Server-Droits-minimums#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/289131</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/20/Services-SQL-Server-Droits-minimums</feedburner:origLink></entry>
    
  <entry>
    <title>MCTS - SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/iYj2UV9V8-E/MCTS-SQL-Server-2008" rel="alternate" type="text/html" title="MCTS - SQL Server 2008" />
    <id>urn:md5:3ffbecc91a048e491bb48dd7dbc452c6</id>
    <updated>2008-10-13T11:47:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Au risque de répeter l'info déjà présente sur le site de &lt;a href="http://www.bewise.fr/fr-FR/Pages/default.aspx"&gt;Bewise&lt;/a&gt; et sur le blog
à &lt;a href="http://www.dotmim.com/blogs/mim/"&gt;Mim&lt;/a&gt;, lui et moi avons reçu nos
certifications SQL Server 2008 passées en betâ cet été. Pour ma part, je suis
certifié sur 2 domaines : le développement et la business intelligence.&lt;/p&gt;
&lt;p&gt;Voici un extrait de mon Transcript&lt;/p&gt;
&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="16%"&gt;&lt;ins&gt;&lt;strong&gt;Exam ID&lt;/strong&gt;&lt;/ins&gt;&lt;/td&gt;
&lt;td width="56%"&gt;&lt;ins&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/ins&gt;&lt;/td&gt;
&lt;td width="22%"&gt;&lt;ins&gt;&lt;strong&gt;Date Completed&lt;/strong&gt;&lt;/ins&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;448&lt;/td&gt;
&lt;td valign="top"&gt;TS: Microsoft SQL Server 2008, Business Intelligence
Development and Maintenance&lt;/td&gt;
&lt;td valign="top"&gt;Jul 31, 2008&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;432&lt;/td&gt;
&lt;td valign="top"&gt;TS: SQL Server 2008, Implementation and Maintenance&lt;/td&gt;
&lt;td valign="top"&gt;Jul 24, 2008&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img title="MCTS-SQL-Server-2008.png, oct 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/bandeaux/MCTS-SQL-Server-2008.png" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/iYj2UV9V8-E" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/13/MCTS-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/286048</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/13/MCTS-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services 2005 et 2008 side by side : No Report Servers were found</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/nf9GvghLe00/Reporting-Services-2005-et-2008-side-by-side" rel="alternate" type="text/html" title="Reporting Services 2005 et 2008 side by side : No Report Servers were found" />
    <id>urn:md5:3a1c2b19ba5c8cf6fb184415da3053d3</id>
    <updated>2008-10-12T11:47:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SQL Server 2008</dc:subject><dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;Je teste les versions beta de 2008 depuis plus d'un an déjà et je n'ai
quasiment pas rencontré de &lt;strong&gt;problème d'incompatibilité&lt;/strong&gt; avec la
version 2005. (bon, j'avoue, une fois avec la lecture d'un package SSIS
2008 dans le SSIS Store 2005 mais je l'ai bien cherché :-)).&lt;/p&gt;
&lt;p&gt;J'ai refait ma machine récemment pour nettoyer les 3 CTP qui trainaient et
ne garder que la version RTM de SQL Server 2008 et une version 2005 car
beaucoup de mes clients n'ont pas encore migré. Une fois tout terminé, pour les
besoins d'une démo je configure Reporting Services 2008 via l'outil de
configuration dédié et là, une erreur inattendue et surtout
incompréhensible. A la sélection de l'instance de Reporting Services à
paramétrer :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&lt;strong&gt;No Report Servers were
found. Invalid Namespace.&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="SSRS2008-Invalid-Namespace.jpg, oct 2008" alt="" src="http://blog.djeepy1.net/public/SSRS/SSRS2008-Invalid-Namespace.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Même erreur en forçant le nom de l'instance manuellement.&lt;/p&gt;
&lt;p&gt;La solution est la suivante (merci Google et Justin King) :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Ouvrez le fichier suivant : &lt;strong&gt;C:\Program Files\Microsoft SQL
Server\MSRS10.SQL2008\Reporting
Services\ReportServer\bin\reportingservices.mof&lt;/strong&gt; (faites en une copie
avant)&lt;/li&gt;
&lt;li&gt;Remplacez les références à RS_SQL2008 (ou RS_&amp;lt;le nom de l'instance&amp;gt;)
par SQL2008 (ou le nom de votre instance 2008)&lt;/li&gt;
&lt;li&gt;Dans une commande DOS, dans le répertoire en question, lancez :
&lt;strong&gt;MOFCOMP reportingservices.mof&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Et voila, vous pouvez relancer le Reporting Services Configuration Manager.
Sa requête WMI pour trouver les instances disponibles fonctionnera
correctement.&lt;/p&gt;
&lt;p&gt;PS : apparemment, cela n'arriverait que sur Vista&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/nf9GvghLe00" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/09/29/Reporting-Services-2005-et-2008-side-by-side#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/281656</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/09/29/Reporting-Services-2005-et-2008-side-by-side</feedburner:origLink></entry>
    
  <entry>
    <title>Identité d'un pool d'application IIS - Droits minimums</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/V7coowyvtdg/Identite-d-un-pool-d-application-IIS-Droits-minimums" rel="alternate" type="text/html" title="Identité d'un pool d'application IIS - Droits minimums" />
    <id>urn:md5:d38bb4e9f693edd77af6b9ffd8db0144</id>
    <updated>2008-10-12T09:27:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>IIS6</dc:subject><dc:subject>Sécurité</dc:subject>    
    <content type="html">    &lt;p&gt;Par défaut, dans IIS 6.0, un Worker Process (le processus représentant un
pool d'applications au runtime), tourne avec le compte Network Service (Service
Réseau). C'est largement suffisant dans la majorité des cas mais il arrive que
l'on souhaite utiliser un compte particulier, pour faire de la sécurité
intégrée avec SQL Server, pour accéder à un répertoire sensible, etc.&lt;/p&gt;
&lt;p&gt;Dans ce cas, on modifie les paramètres du Pool, section Identity (Identité),
pour préciser un compte d'exécution. Bien sûr, vous vous doutez bien qu'il va
falloir des droits à ce compte pour accéder au minimum requis ASP.NET (fichiers
du sites, GAC, répertoire de compilation temporaire, etc.).&lt;/p&gt;
&lt;p&gt;Vous trouverez la liste à ce lien :  &lt;a href="http://msdn.microsoft.com/en-us/library/kwzs111e.aspx"&gt;http://msdn.microsoft.com/en-us/library/kwzs111e.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Normalement, vous n'avez pas à configurer tout cela, il suffit juste
d'ajouter le compte utilisé dans le groupe IIS_WPG, local à la machine. Mais il
est possible que cela ne fonctionne pas, surtout si vous avez copié le site
d'une machine à une autre (problème de SID).&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Attention&lt;/ins&gt; : tout ceci ne fonctionne que pour IIS 6.0, pour IIS
7.0, c'est un petit peu différent.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/V7coowyvtdg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/10/12/Identite-d-un-pool-d-application-IIS-Droits-minimums#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/285705</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/10/12/Identite-d-un-pool-d-application-IIS-Droits-minimums</feedburner:origLink></entry>
    
  <entry>
    <title>MS Days à Toulouse</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/hKIeeDjHXk0/MS-Days-a-Toulouse" rel="alternate" type="text/html" title="MS Days à Toulouse" />
    <id>urn:md5:bb80f853d785ba581f61a357b75fadd9</id>
    <updated>2008-09-28T10:43:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject><dc:subject>Séminaire</dc:subject>    
    <content type="html">    &lt;p&gt;Encore un nouvel événement Microsoft me direz-vous... Et bien oui et on ne
s'en lasse pas, même si c'est événement n'est autre que le Microsoft Technet
Tour de la fin d'année.&lt;/p&gt;
&lt;p&gt;&lt;img title="MTT2008.png, sep 2008" alt="" src="http://blog.djeepy1.net/public/microsoft/MTT2008.png" /&gt;&lt;img title="MSDays.jpg, sep 2008" alt="" src="http://blog.djeepy1.net/public/microsoft/MSDays.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Au menu, des sessions et des échanges avec les speakers Microsoft sur les
dernières technologies Microsoft : &lt;strong&gt;SQL Server 2008&lt;/strong&gt;,
&lt;strong&gt;Hyper-V&lt;/strong&gt;, &lt;strong&gt;Visual Studio 2008&lt;/strong&gt;, le
&lt;strong&gt;Framework .NET 3.5&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;p&gt;Le session sur la &lt;strong&gt;Business Intelligence&lt;/strong&gt; avec SQL Server
2008 et Performance Point sera animée par votre serviteur. Je vous invite
aussi à aller voir la session de Patrick Guimonet de Microsoft sur SQL Server
2008 dont le lancement en version finale a eu lieu pendant les vacances.&lt;/p&gt;
&lt;p&gt;L'événement est gratuit et a lieu ces lundi et mardi (oui, le post arrive au
dernier moment). Il vous reste donc quelques heures pour valider votre
inscription et venir découvrir ou poser des questions sur les solutions
Microsoft.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/hKIeeDjHXk0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/09/28/MS-Days-a-Toulouse#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/281405</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/09/28/MS-Days-a-Toulouse</feedburner:origLink></entry>
    
  <entry>
    <title>Retour aux affaires</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Bt5-6ZXfSf0/Retour-aux-affaires" rel="alternate" type="text/html" title="Retour aux affaires" />
    <id>urn:md5:77f7a4d75da40107fd78ca56e6251c78</id>
    <updated>2008-09-28T09:55:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Perso</dc:subject>
            
    <content type="html">    &lt;p&gt;Je suis rentré de congés il y a une semaine et le retour a été très chargé
ce qui explique l'absence de post.&lt;/p&gt;
&lt;p&gt;Comme habituellement, je fais le petit post qui va bien avec une belle photo
ensoleillée de mon lieu de vacances : la &lt;strong&gt;Toscane&lt;/strong&gt; en
&lt;strong&gt;Italie&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img title="blog-chianti-toscane.JPG, sep 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/perso/blog-chianti-toscane.JPG" /&gt;&lt;/p&gt;
&lt;p&gt;Je m'y suis bien reposé, c'était beau et bon mais je n'ai pas
réussi à redresser la tour de Pise.&lt;/p&gt;
&lt;p&gt;Allez, &lt;strong&gt;STOP&lt;/strong&gt; sur les vacances, c'est la rentrée et il faut
se remettre au turbin. Comme je n'aime pas mélanger les sujets, rendez-vous sur
le prochain post pour parler &lt;strong&gt;séminaire technique&lt;/strong&gt;...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Bt5-6ZXfSf0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/09/28/Retour-aux-affaires#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/281401</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/09/28/Retour-aux-affaires</feedburner:origLink></entry>
    
  <entry>
    <title>Analysis Services - Support du format monétaire dans Excel</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/jqD_jpfwUZM/Analysis-Services-Support-du-format-monetaire-dans-Excel" rel="alternate" type="text/html" title="Analysis Services - Support du format monétaire dans Excel" />
    <id>urn:md5:483a17f04a0b6d3f6c8817048aec79b3</id>
    <updated>2008-08-31T17:49:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Analysis Services</dc:subject><dc:subject>Excel</dc:subject><dc:subject>MDX</dc:subject>    
    <content type="html">    &lt;p&gt;Dans un projet décisionnel, il est nécessaire lors de la restitution des
données de les formater. Par exemple, si vous présentez des données
financières, il va falloir les afficher correctement.&lt;/p&gt;
&lt;p&gt;Dans une architecture applicative classique, on laisse ce travail à la
couche de présentation. Dans un contexte décisionnel, cette couche de
présentation peut être Reporting Services qui gère le formatage mais ce
peut-être aussi un &lt;strong&gt;client OLAP&lt;/strong&gt; autonome comme
&lt;strong&gt;Excel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Excel sait gérer aussi le formatage mais c'est aux utilisateurs de le
configurer via les options de la PivotTable :&lt;img title="excel-olap-format.PNG, aoû 2008" style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/sql2008/excel-olap-format.PNG" /&gt;&lt;/p&gt;
&lt;p&gt;Cette manipulation n'est pas à faire par les utilisateurs finaux, surtout
pour des formats triviaux comme des devises.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Analysis Services&lt;/strong&gt; permet d'ajouter des informations de
formatage sur chaque cellule pour guider les clients OLAP dans leur
réprésentation des données. Ainsi, quand on déclare un membre calculé par
exemple, on ajoute la clause &lt;strong&gt;FORMAT_STRING&lt;/strong&gt; décrivant le membre
:&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;CREATE MEMBER
CURRENTCUBE.[Measures].[Prix TTC]&lt;br /&gt;
AS [Measures].[Prix Vendu]*1.196,&lt;br /&gt;
FORMAT_STRING = &amp;quot;Currency&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cette configuration se fait aussi via l'assistant :&lt;/p&gt;
&lt;p&gt;&lt;img title="excel-olap-format-2.PNG, aoû 2008" alt="" src="http://blog.djeepy1.net/public/sql2008/excel-olap-format-2.PNG" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Un client OLAP peut récupérer cette information en précisant une clause dans
la requête MDX qu'il fait à Analysis Services.&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SELECT {[Measures].[Prix TTC]} ON
COLUMNS&lt;br /&gt;
FROM [CubSales]&lt;br /&gt;
CELL PROPERTIES VALUE, FORMAT_STRING&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Excel précise bien cette clause dans ses échanges avec SSAS. Or il se peut
qu'il n'arrive pas à représenter un membre calculé de type monétaire malgré
l'information provenant du cube.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Une des solutions pour résoudre ce problème serait d'ajouter la clause
&lt;strong&gt;FORMATTED_VALUE&lt;/strong&gt; pour forcer le formatage des cellules par
Analysis Services avant de renvoyer les données. On peut le vérifier avec une
requête MDX dans Management Studio :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SELECT {[Measures].[Prix TTC]} ON
COLUMNS&lt;br /&gt;
FROM [CubSales]&lt;br /&gt;
CELL PROPERTIES VALUE, FORMAT_STRING, FORMATTED_VALUE&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Mais Excel ne permet pas de préciser ce paramètre donc il nous faut trouver
une solution. Dans le cadre de données monétaires, il est important de
connaître le pays pour déterminer la bonne devise. En effet, si mon cube
contient des montants en euros, je ne veux pas voir des dollars si le client ou
le serveur est en version US. En conséquence, il faut préciser la culture
(&lt;em&gt;Locale&lt;/em&gt;) en plus du formatage dans les méta-données des cellules.
Ainsi, corrigeons notre membre calculé :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;CREATE MEMBER
CURRENTCUBE.[Measures].[Prix TTC]&lt;br /&gt;
AS [Measures].[Prix Vendu]*1.196,&lt;br /&gt;
FORMAT_STRING = &amp;quot;Currency&amp;quot;, LANGUAGE = 1036 //fr-FR&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Et là, plus de problème dans Excel pour afficher vos membres calculés en €
de façon automatique. Attention, cette manipulation n'est pas possible avec le
formulaire d'édition du membre calculé, il vous faudra passé par le script MDX
de création.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/jqD_jpfwUZM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/30/Analysis-Services-Support-du-format-monetaire-dans-Excel#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/272422</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/30/Analysis-Services-Support-du-format-monetaire-dans-Excel</feedburner:origLink></entry>
    
  <entry>
    <title>Transactions - REPEATABLE READ</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/ibvVECAW8xA/Transactions-REPEATABLE-READ" rel="alternate" type="text/html" title="Transactions - REPEATABLE READ" />
    <id>urn:md5:d838d8560ffd9de816b77061275882cc</id>
    <updated>2008-08-30T08:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Locks</dc:subject><dc:subject>SQL Server 2008</dc:subject><dc:subject>Transactions</dc:subject>    
    <content type="html">    &lt;p&gt;Voici le problème que je vais traiter : je veux pouvoir m'assurer dans une
transaction qu'un jeu d'enregistrements ne sera pas touché pendant que j'opère
une série de modifications. Par exemple, je ne veux pas qu'on puisse modifier
une série d'adresses pendant que je mets à jour le contact qui les
possède. Pour être plus concret, je veux bloquer les adresses 31 et 52
pendant que je modifie le contact John Smith. Par exemple :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
SELECT * INTO #TempTable FROM Person.Address Where AddressID in
(31,52)&lt;br /&gt;
&lt;br /&gt;
UPDATE Person.Person Set Title = 'Lord' Where LastName = 'Smith' and FirstName
= 'John'&lt;br /&gt;
UPDATE Person.PersonPhone Set [...]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Par défaut, le niveau d'isolation de transaction de SQL Server est
&lt;strong&gt;READ COMMITED&lt;/strong&gt;. En d'autres termes, cela signifie que l'on ne
peut lire ou modifier que des données qui ont validées (&lt;em&gt;comitées&lt;/em&gt; pour
reprendre le barbarisme franglais). Selon le moteur de transactions, les
adresses peuvent être modifiées pendant que ma transaction a lieu.&lt;/p&gt;
&lt;p&gt;Techniquement, dans le moteur SQL, cela se traduit par des
&lt;strong&gt;locks partagés&lt;/strong&gt; (&lt;strong&gt;Shared&lt;/strong&gt;) sur la table
Address qui durent le temps du premier SELECT et des &lt;strong&gt;locks
exclusifs&lt;/strong&gt; (&lt;strong&gt;eXclusive&lt;/strong&gt;) sur les tables modifiées. Une
fois le SELECT passé, les locks Shared sont libérés, laissant la
place pour des modifications. En revanche les locks exclusifs sont
maintenus jusqu'au COMMIT (ou ROLLBACK), empêchant les modifications. On
peut le vérifier en regardant les verrous sur les tables en question :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SET TRANSACTION ISOLATION LEVEL READ
COMMITTED --mode par défaut&lt;br /&gt;
&lt;br /&gt;
BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM Person.Address&lt;br /&gt;
WHERE AddressID IN (31,52)&lt;br /&gt;
&lt;br /&gt;
select resource_type, resource_description, request_mode, request_type&lt;br /&gt;
from sys.dm_tran_locks&lt;br /&gt;
&lt;br /&gt;
ROLLBACK&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img title="lock-read-commited.PNG, aoû 2008" alt="" src="http://blog.djeepy1.net/public/sql2008/lock-read-commited.PNG" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Lors de la consultation des locks, il n'y en a aucun donc une instruction
parallèle peut modifier les adresses. Nous allons donc utiliser un autre niveau
de transaction pour changer le comportement du moteur.&lt;/p&gt;
&lt;p&gt;En choisissant le niveau juste au dessus, &lt;strong&gt;REPEATABLE READ&lt;/strong&gt;,
le moteur va poser des locks Shared et les maintenir le temps de la
transaction. C'est ce que l'on appelle des lectures répétables. Pour
modifier un enregistrement, le moteur doit poser un lock exclusif et donc
doit attendre de n'avoir plus de locks Shared. Voyons le comportement des
verrous, pour cela, il suffit de changer le niveau d'isolation dans la première
ligne : &lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SET TRANSACTION ISOLATION LEVEL
&lt;ins&gt;&lt;strong&gt;REPEATABLE READ&lt;/strong&gt;&lt;/ins&gt;&lt;br /&gt;
&lt;br /&gt;
BEGIN TRAN&lt;br /&gt;
&lt;br /&gt;
SELECT *&lt;br /&gt;
FROM Person.Address&lt;br /&gt;
WHERE AddressID IN (31,52)&lt;br /&gt;
&lt;br /&gt;
select resource_type, resource_description, request_mode, request_type&lt;br /&gt;
from sys.dm_tran_locks&lt;br /&gt;
&lt;br /&gt;
ROLLBACK&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img title="lock-repeatable-read.PNG, aoû 2008" alt="" src="http://blog.djeepy1.net/public/sql2008/lock-repeatable-read.PNG" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;On voit bien que des locks Shared (&lt;strong&gt;S et IS&lt;/strong&gt;) sont maintenus
après le SELECT. Ceci garantie que ces enregistrements ne seront pas modifiés
le temps de ma transaction. De plus, du fait que ce soit des locks Shared,
une autre transaction peut lire ces enregistrements.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Bien évidemment, la gestion des locks est très fine dans SQL Server et se
complexifie avec l'ensemble des requêtes à un instant T. SQL Server va tenter
de verrouiller le niveau le plus fin et le moins contraignant pour respecter
vos niveaux d'isolation et garantir la transactionalité. Et tout ceci se
combine avec les différents objets liés à la table (index, allocations,
etc.).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Vous aurez noté au passage l'utilisation de la vue système
&lt;strong&gt;sys.dm_tran_locks&lt;/strong&gt; qui remplace depuis 2005 l'ancien
&lt;strong&gt;sp_lock&lt;/strong&gt; et qui vous aidera à comprendre le fonctionnement du
moteur transactionnel et à minimiser la contention sur vos bases.&lt;/p&gt;
&lt;p&gt;Bonne optimisation...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/ibvVECAW8xA" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/30/Transactions-REPEATABLE-READ#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/272334</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/30/Transactions-REPEATABLE-READ</feedburner:origLink></entry>
    
  <entry>
    <title>Agrégat CLR – Nouveauté 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/DXbm6dpygKQ/Agregat-CLR-Nouveaute-2008" rel="alternate" type="text/html" title="Agrégat CLR – Nouveauté 2008" />
    <id>urn:md5:71548e394691671b2099edd8d74bf228</id>
    <updated>2008-08-28T19:36:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject><dc:subject>SQLCLR</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;En ce moment, je teste pas mal SQL Server 2008 et en particulier les
améliorations par rapport à la version précédente. Aujourd’hui, je me suis
intéressé aux fonctionnalités de la &lt;strong&gt;SQLCLR&lt;/strong&gt; et j’ai voulu
savoir si une des limitations de 2005 était levée.&lt;/p&gt;
&lt;p&gt;Le problème était le suivant (le fait que je parle à l’imparfait devrait
vous aiguiller sur la réponse) : dans une &lt;strong&gt;fonction d’agrégat
CLR&lt;/strong&gt;, il n’était possible de fournir qu’un seul paramètre à la méthode
&lt;strong&gt;Accumulate&lt;/strong&gt;. Ceci était pénalisant pour certaines fonctions à
double entrée ou pour paramétrer le comportement d’autre.&lt;/p&gt;
&lt;p&gt;Par exemple, sur une fonction de concaténation (très utile dans les
reports), il était impossible de préciser le caractère à utiliser comme
séparateur. Cela a entraîné (chez nous en tout cas) de grands débats sur le
choix caractère à utiliser dans le code .NET. Cela impliquait aussi
l’utilisation de méthodes de Replace dans les couches supérieures pour traiter
le caractère.&lt;/p&gt;
&lt;p&gt;Venons-en à la solution que propose &lt;strong&gt;SQL Server 2008&lt;/strong&gt;
maintenant.  Je suis en fait tombé sur la documentation suivante :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;CREATE AGGREGATE [ schema_name . ]
aggregate_name&lt;br /&gt;
        (@param_name
&amp;lt;input_sqltype&amp;gt; &lt;br /&gt;
        [ ,...n ] )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;J’ai été intrigué et admiratif sur le &lt;strong&gt;&lt;em&gt;..n&lt;/em&gt;&lt;/strong&gt; dans la
liste de paramètres qui suppose que les fonctions d’agrégat de 2008 supportent
le multi-paramètre.&lt;br /&gt;
Je me suis empressé de modifier quelque peu l’agrégat de concaténation des
exemples de SQL Server et j’ai modifié la méthode Accumulate de cette façon
:&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;
&lt;code&gt;[Microsoft.SqlServer.Server.SqlUserDefinedAggregate(…)]&lt;br /&gt;
public struct Concat {&lt;br /&gt;
    […]&lt;br /&gt;
    public void Accumulate(SqlString Value, SqlString
separator)&lt;br /&gt;
    {&lt;br /&gt;
        if (!isFirst)&lt;br /&gt;
           
sb.Append(separator);&lt;br /&gt;
        else&lt;br /&gt;
            isFirst =
false;&lt;br /&gt;
        sb.Append(Value.Value);&lt;br /&gt;
    }&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Après avoir intégré l’Assembly dans ma base, je mappe la fonction d’agrégat
:&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;CREATE AGGREGATE [dbo].[Concat] (&lt;br /&gt;
  @value [nvarchar](4000),&lt;br /&gt;
  @separator [nvarchar](10))&lt;br /&gt;
RETURNS[nvarchar](4000)&lt;br /&gt;
EXTERNAL NAME [BewiseUtils].[Bewise.SqlServer.Concat]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et le test final :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SELECT dbo.Concat(LastName, ', ')&lt;br /&gt;
FROM Person.Person&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="aggregate-clr-separator.PNG, aoû 2008" height="66" alt="" src="http://blog.djeepy1.net/public/sql2008/aggregate-clr-separator.PNG" width="306" /&gt;&lt;/p&gt;
&lt;p&gt;Et voila le travail… Chacun peu choisir son séparateur dans la fonction de
concaténation.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/DXbm6dpygKQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/28/Agregat-CLR-Nouveaute-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/271976</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/28/Agregat-CLR-Nouveaute-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Indexation - Gérer la fragmentation</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/aLVBsZBbqOo/Indexation-Gerer-la-fragmentation" rel="alternate" type="text/html" title="Indexation - Gérer la fragmentation" />
    <id>urn:md5:97501675641b9b4becaf9ada3c5fa7de</id>
    <updated>2008-08-13T00:35:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Index</dc:subject><dc:subject>Performances</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Je continue ma série sur les index avant de faire une petite pause pour
préparer une traduction d'article sur les clauses WHERE dynamiques d'un
collègue MVP suédois.&lt;/p&gt;
&lt;p&gt;Dans ce post, je vais m'intéresser à la fragmentation des index. J'espère
que le terme fragmentation rappelera à certains le temps où on passait notre
samedi après midi à défragmenter nos disques de 40Mo (oui, méga-octets) pour
gagner quelques octets et installer Phantasmagoria.&lt;/p&gt;
&lt;p&gt;Le principe est le même, l'idée est de &amp;quot;ranger&amp;quot; un index pour gagner un peu
de place et &lt;strong&gt;surtout&lt;/strong&gt; qu'il soit plus performant. La
fragmentation est un processus &amp;quot;naturel&amp;quot;, dû aux modifications des données. La
base vit, grandit et donc il faut opérer de la maintenance
régulièrement.&lt;/p&gt;
&lt;p&gt;On a 2 types de fragmentation :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;celle qui touche le niveau &lt;em&gt;feuille&lt;/em&gt; de l'index et qui correspond à
un ordre sur le disque différent de l'ordre logique dans l'index. Le résultat
est trop d'accès disque lors de scans sur ce niveau&lt;/li&gt;
&lt;li&gt;celle qui touche l'arbre de l'index et qui correspond à des pages trop
vides ou trop pleines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On peut utiliser 2 approches pour traiter avec la fragmentation :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Traiter systématiquement l'ensemble de sa base de données. C'est la méthode
que j'utilise pour des petites volumétries et quand on dispose d'une fenêtre de
tir pour faire les opérations de maintenance sans gêner personne (par exemple
une base qui est utilisée avec des horaires de bureau).&lt;/li&gt;
&lt;li&gt;Traiter uniquement les index fragmentés et de façon intelligente. C'est la
méthode que j'utilise pour des grosses volumétries et des bases en accès
24/7.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour le premier cas, on fait juste un plan de maintenance dans lequel on
demande une réorganisation ou une reconstruction des index sur toute la base.
Sauf cas contraire, je fais un REORGANIZE tous les soirs et un REBUILD le
week-end (cela ne reste qu'une stratégie parmi d'autres). Pour les puristes,
les instructions T-SQL sont :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;ALTER INDEX IX_abcd ON maTable
REORGANIZE&lt;br /&gt;
&lt;br /&gt;
ALTER INDEX IX_abcd ON maTable REBUILD&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour le second cas, il faut déterminer si un index a besoin d'une
reconstruction ou d'une réorganisation et connaître la volumétrie (et par
conséquent le temps que ça va prendre) pour limiter l'impact sur la
production.&lt;/p&gt;
&lt;p&gt;On connait la fragmentation d'un index avec la vue système
&lt;strong&gt;sys.dm_db_index_physical_stats&lt;/strong&gt; et plus précisément le champ
&lt;strong&gt;avg_fragmentation_in_percent&lt;/strong&gt;. Ainsi on peut connaître pour
chaque index son niveau de fragmentation :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SELECT DB_NAME(database_id),
OBJECT_NAME(object_id), index_id, avg_fragmentation_in_percent&lt;br /&gt;
FROM sys.dm_db_index_physical_stats(&lt;br /&gt;
   DB_ID('MaBase'),&lt;br /&gt;
   OBJECT_ID('MaTable'),&lt;br /&gt;
   NULL, NULL, NULL)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Je ne vais pas rentrer ici dans le détail du pourcentage remonté par SQL
Server, je vais lui faire confiance pour le calcul (note : SQL Server
2008 est plus précis dans le calcul car il prend en compte plus de cas).&lt;br /&gt;
Sur l'action a mener en fonction de la fragmentation, on trouve toutes les
stratégies. Selon Microsoft, on réorganise pour une fragmentation &amp;lt; 30% et
on reconstruit au-delà. Moi je n'ai pas de seuil arrêté, il m'arrive de faire
un REBUILD quand la fragmentation est &amp;gt; 10%.&lt;/p&gt;
&lt;p&gt;Voila, ce post est loin d'être exhaustif car je ne parle pas de la
fragmentation par niveau de l'index, du paramètre FILL_FACTOR ou de la
reconstruction ONLINE qui permet de reconstruire un index avec peu d'impact sur
la production (version Enterprise uniquement).&lt;/p&gt;
&lt;p&gt;PS : pour connaître le nom de l'index visé (la requête ci-dessus ne remonte
que l'id), il va falloir faire une jointure sur sys.indexes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Mise à Jour&lt;/ins&gt;&lt;/strong&gt; : pour illustrer le problème de la
fragmentation d'un index, voici 2 images montrant un index &amp;quot;propre&amp;quot; et un index
fragmenté.&lt;/p&gt;
&lt;p&gt;&lt;img title="index-non-fragmente.gif, aoû 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/sql2008/index-non-fragmente.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Index non-fragmenté&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="index-fragmente.gif, aoû 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/sql2008/index-fragmente.gif" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Index fragmenté&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;Et comme il faut rendre à César ce qui lui appatient, voici mes sources :
&lt;a href="http://technet.microsoft.com/en-us/magazine/cc671165.aspx"&gt;http://technet.microsoft.com/en-us/magazine/cc671165.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/aLVBsZBbqOo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/13/Indexation-Gerer-la-fragmentation#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/268445</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/13/Indexation-Gerer-la-fragmentation</feedburner:origLink></entry>
    
  <entry>
    <title>BACKUP WITH COPY_ONLY</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/8ki9IBNVumw/BACKUP-WITH-COPY_ONLY" rel="alternate" type="text/html" title="BACKUP WITH COPY_ONLY" />
    <id>urn:md5:e7c7d2cf0ae733b2f5f22f6acc465da0</id>
    <updated>2008-08-12T00:32:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>backup</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Trop souvent je vois en consulting les développeurs faire eux-mêmes des
backups de la base de production pour les remonter sur un environnement de
développement. Et bien évidemment, mauvaise habitude, ils le font avec le
wizard de Management Studio.&lt;/p&gt;
&lt;p&gt;Le souci c'est que la version 2005 de cet outil ne prend pas en charge une
option essentielle pour la création de ce type de backup : &lt;strong&gt;WITH
COPY_ONLY&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Cette option permet de ne pas &lt;strong&gt;casser la stratégie de backup&lt;/strong&gt;
que le DBA, votre collègue ou même vous, auriez mis en place. Sans cette
option, SQL Server garde des traces de la sauvegarde et vide le LOG, comme
si elle était une continuité du plan en cours.&lt;/p&gt;
&lt;p&gt;La conséquence à cela est que si votre base plante entre cette manipulation
et le prochain BACKUP FULL &amp;quot;planifié&amp;quot;, il manquera à l'administrateur des
pièces du puzzle pour remonter la base puisque votre manip sera considérée
comme le dernier backup complet valide. Et comme en général, ce fichier part à
la poubelle...vous risquez de ne pas pouvoir remonter votre base.&lt;/p&gt;
&lt;p&gt;Bien sûr, l'idée n'est pas de brider ces chers développeurs mais de leur
enseigner l'art des choses bien faites. La solution :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;apprendre le T-SQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;BACKUP DATABASE DataWarehouse TO
DISK = 'c:\temp\dw.bak' WITH COPY_ONLY, NAME = 'Copie pour Dev'&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utiliser &lt;strong&gt;Management Studio 2008&lt;/strong&gt; qui inclut cette option
dans le wizard&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img title="backup_with_copy.png, aoû 2008" style="DISPLAY: block; MARGIN: 0 auto" height="267" alt="" src="http://blog.djeepy1.net/public/sql2008/backup_with_copy.png" width="433" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/8ki9IBNVumw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/12/BACKUP-WITH-COPY_ONLY#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/268231</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/12/BACKUP-WITH-COPY_ONLY</feedburner:origLink></entry>
    
  <entry>
    <title>Indexation - Faites la chasse aux index HEAP</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/yyM4idJrVOM/Indexation-Faites-la-chasse-aux-index-HEAP" rel="alternate" type="text/html" title="Indexation - Faites la chasse aux index HEAP" />
    <id>urn:md5:75f3b008d5d93db4799f01d7986a238f</id>
    <updated>2008-08-12T00:12:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Index</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;em&gt;Un premier post qui j'espère me conduira à une série sur l'indexation
dans SQL Server. Je traiterai les points un peu dans le désordre mais n'est-ce
pas là l'attrait d'un blog ? Je sais que je ne commence pas par les bases mais
bon, j'attend vos questions :-).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Un index de type &lt;strong&gt;HEAP&lt;/strong&gt; indique en réalité le fait qu'il n'y
ait &lt;strong&gt;aucun index sur la table&lt;/strong&gt; et surtout pas d'index
CLUSTERED. C'est à dire que seul le CREATE TABLE a été exécuté, sans
aucune option, sans PRIMARY KEY.&lt;/p&gt;
&lt;p&gt;Cela signifie que les données sont rangées n'importe comment ou
plutôt dans l'ordre de leur création. C'est comme si je prenais un annuaire et
que je mélangais les villes et les noms.&lt;/p&gt;
&lt;p&gt;La conséquence d'avoir ce type d'indexation dans sa base de données est
très souvent d'avoir des performances catastrophiques lors de la selection
de données. D'autant plus quand la volumétrie augmente. Ceci vient du fait que
l'opération qui est faite sur la table pour récupérer un jeu d'enregistrement
est un TABLE SCAN (aussi appelé Full Scan).&lt;/p&gt;
&lt;p&gt;Pour en revenir à mon annuaire, c'est comme si je vous demandais de me
trouver toutes les personnes qui habitent au 12, rue des saules, quelque soit
la ville. Vous seriez obligé de lire (scanner) toutes les pages.&lt;/p&gt;
&lt;p&gt;Pour limiter cela, on peut mettre un index clustered ou une PRIMARY KEY
(équivalent d'un index unique non null) pour optimiser la recherche.&lt;/p&gt;
&lt;p&gt;Pour retrouver toutes les tables concernées :&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;select
OBJECT_NAME(sys.indexes.object_id)&lt;br /&gt;
from sys.indexes&lt;br /&gt;
  inner join sys.tables on sys.tables.object_id =
sys.indexes.object_id&lt;br /&gt;
where sys.indexes.[type] = 0 --0 = HEAP&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Donc faite un petit check-up de vos bases et vérifier vos tables stockées
sur un index HEAP... Et pourquoi pas les mettre sur un index CLUSTERED... mais
je reviendrai sur ce point &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/yyM4idJrVOM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/12/Indexation-Faites-la-chasse-aux-index-HEAP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/268230</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/12/Indexation-Faites-la-chasse-aux-index-HEAP</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Server 2008 est RTM...</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/A7Jbnxa9XE4/SQL-Server-2008-est-RTM" rel="alternate" type="text/html" title="SQL Server 2008 est RTM..." />
    <id>urn:md5:a8cf6c34f700f7c416dcc59b23601b05</id>
    <updated>2008-08-07T12:27:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;...depuis quelques heures déjà.&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;Désolé de ne pas plus m'étendre plus sur cette nouvelle mais je suis chez un
client en plein audit de perfs alors je développerai ce soir, pendant
l'installation &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/A7Jbnxa9XE4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/07/SQL-Server-2008-est-RTM#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/266974</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/07/SQL-Server-2008-est-RTM</feedburner:origLink></entry>
    
  <entry>
    <title>Alignement des disques</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/XoFQS-j7eqQ/Alignement-des-disques" rel="alternate" type="text/html" title="Alignement des disques" />
    <id>urn:md5:b1db53f1a2f8db7edd8b7dd2f264304f</id>
    <updated>2008-08-06T21:55:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Infrastructure</dc:subject>
        <dc:subject>Infrastructure</dc:subject>    
    <content type="html">    &lt;p&gt;En parlant baie de disques avec un client, je me suis souvenu de quelques
tips pour optimiser les performances que j'avais lu dans un vieux SQL Server
Magazine. L'idée de ce petit post est de vous en livrer un (oui, je sais je
pourrais faire un article complet mais là, j'ai la flemme).&lt;/p&gt;
&lt;p&gt;Nous allons donc parler &lt;strong&gt;Disk Sector Alignment&lt;/strong&gt;, ou en
français, alignement des secteurs du disque. Avant de commencer, on va faire
une révision rapide sur le vocabulaire associé aux disques :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Plateaux : un disque dur est composé de plusieurs plateaux empilés sur un
axe (spindle)&lt;/li&gt;
&lt;li&gt;Pistes (tracks) : ce sont les cercles concentriques qui composent un
plateau&lt;/li&gt;
&lt;li&gt;Secteur (sector) : chaque piste est divisée en secteurs (entre 60 et
120 en fonction du formattage de bas niveau et du fabricant). Les secteurs
contiennent les données, en général 512 octets&lt;/li&gt;
&lt;li&gt;Bloc (ou cluster) : c'est l'unité d'allocation minimum qui correspond à
plusieurs secteurs (ex: des blocs de 4ko entrainent une allocation minimum de 8
secteurs). C'est définit au formatage de haut niveau (par Windows)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le problème d'alignement vient du fait que, dans un système NTFS, le MBR
utilise 63 secteurs. Or si vos pistes font 64 secteurs, il y a un décalage d'un
secteur. Ceci va impliquer 2 opérations physiques pour écrire/lire un bloc de
données quand on tombe en bout de piste, puisque la tête va devoir changer de
piste.&lt;/p&gt;
&lt;p&gt;Pour palier ce problème, on peut préciser à Windows de décaler une partition
pour la faire démarrer en début d'une piste et ainsi être alignée pour les
opérations d'IO. Pour ce faire, on doit utiliser un utilitaire qui s'appelle
&lt;strong&gt;DISKPART.EXE&lt;/strong&gt;. On le trouve sous Vista et avec Windows
2003.&lt;/p&gt;
&lt;p&gt;A noter que Windows 2008 décale automatiquement et correctement les
partitions pour pallier le problème.&lt;/p&gt;
&lt;p&gt;Décalez bien...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/XoFQS-j7eqQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/06/Alignement-des-disques#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/266797</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/06/Alignement-des-disques</feedburner:origLink></entry>
    
  <entry>
    <title>Récupérer la taille d'une base de données</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Ve9ww4yuXmE/Recuperer-la-taille-d-une-base-de-donnees" rel="alternate" type="text/html" title="Récupérer la taille d'une base de données" />
    <id>urn:md5:055c756afedb61b7f35c4532391fe2eb</id>
    <updated>2008-08-03T22:35:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;ll existe différentes techniques pour récupérer la taille d'une base de
données. Je vous en livre ici une que j'utilise. Elle se base sur la vue
système &lt;strong&gt;sys.database_files&lt;/strong&gt; qui nous renseigne sur les fichiers
de la base de données.&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;SELECT dbname, [ROWS]*8 as Donnees,
[LOG]*8 as Journaux&lt;br /&gt;
FROM&lt;br /&gt;
   (SELECT DB_NAME() as dbname, type_desc, size&lt;br /&gt;
   FROM sys.database_files) as p&lt;br /&gt;
PIVOT&lt;br /&gt;
   (SUM(size) FOR type_desc IN ([ROWS], [LOG])) as
pvt&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Grâce à la fonction PIVOT, j'aggrège les fichiers de données et journaux.
Vous noterez aussi que je multiplie la taille par 8 car la valeur de cette vue
correspond à un nombre de pages (8KB). Nous obtenons donc une taille en
kilo-octets.&lt;/p&gt;
&lt;p&gt;Pour connaître les tailles de toutes les bases de données d'un serveur, on
peut utiliser se script combiné avec la fonction système
&lt;strong&gt;sp_MSforeachDB&lt;/strong&gt;&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;CREATE TABLE #TMP_DB_Sizes (&lt;br /&gt;
  dbname sysname,&lt;br /&gt;
  datasizeinkb int,&lt;br /&gt;
  logsizeinkb int)&lt;br /&gt;
&lt;br /&gt;
EXECUTE sp_msforeachdb '&lt;br /&gt;
INSERT INTO #TMP_DB_Sizes&lt;br /&gt;
SELECT dbname, [ROWS]*8 as Donnees, [LOG]*8 as Journaux&lt;br /&gt;
FROM&lt;br /&gt;
   (SELECT ''[?]'' as dbname, type_desc, size&lt;br /&gt;
   FROM [?].sys.database_files) as p&lt;br /&gt;
PIVOT&lt;br /&gt;
   (SUM(size) FOR type_desc IN ([ROWS], [LOG])) as pvt'&lt;br /&gt;
&lt;br /&gt;
select * from #TMP_DB_Sizes&lt;br /&gt;
&lt;br /&gt;
drop table #TMP_DB_Sizes&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;J'utilise une table temporaire pour n'avoir qu'un jeu de résultat. Vous
noterez l'utilisation de '[?]' pour injecter le nom de la base en cours dans le
script&lt;/p&gt;
&lt;p&gt;Il existe bien évidemment d'autres solutions, venant de 2000 ou de 2005,
certaines apportant d'autres informations comme le pourcentage d'espace
inutilisé.&lt;/p&gt;
&lt;p&gt;Bon audit !!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Ve9ww4yuXmE" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/03/Recuperer-la-taille-d-une-base-de-donnees#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/266104</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/03/Recuperer-la-taille-d-une-base-de-donnees</feedburner:origLink></entry>
    
  <entry>
    <title>Transactions imbriquées et SAVE TRANSACTION</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/XeEggYAJ1h0/Transactions-imbriquees-et-SAVE-TRANSACTION" rel="alternate" type="text/html" title="Transactions imbriquées et SAVE TRANSACTION" />
    <id>urn:md5:a0a6c9cb8fa935a667f5698496a163d7</id>
    <updated>2008-08-03T22:00:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;Lorsque l'on travaille avec des transactions imbriquées, on veut parfois
pour voir annuler une transaction intermédiaire mais garder les précédentes
opérations.&lt;/p&gt;
&lt;p&gt;En T-SQL, l'opération de ROLLBACK annule l'ensemble des niveaux de
transactions (scopes). Pour s'en convaincre, cette citation de la documentation
(ROLLBACK) :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;When nesting transactions, this same statement rolls back all inner
transactions to the &lt;strong&gt;outermost&lt;/strong&gt; BEGIN TRANSACTION
statement.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le code suivant montre un exemple du problème. Le premier ROLLBACK annule
tout depuis la transaction A. La variable @@trancount permet de voir qu'il n'y
a plus de transaction en cours&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;BEGIN TRAN A&lt;br /&gt;
-------on démarre le premier niveau de transaction&lt;br /&gt;
&lt;br /&gt;
INSERT INTO [AdventureWorks].[dbo].[truc]([a],[b])&lt;br /&gt;
VALUES ('transaction A','transaction A')&lt;br /&gt;
&lt;br /&gt;
select @@trancount --returns 1&lt;br /&gt;
&lt;br /&gt;
BEGIN TRAN B&lt;br /&gt;
-------on démarre le deuxième niveau de transaction&lt;br /&gt;
&lt;br /&gt;
INSERT INTO [AdventureWorks].[dbo].[truc]([a], [b])&lt;br /&gt;
VALUES ('transaction B','transaction B')&lt;br /&gt;
&lt;br /&gt;
select @@trancount --returns 2&lt;br /&gt;
&lt;br /&gt;
ROLLBACK TRANSACTION B&lt;br /&gt;
--on annule la transaction intermédiaire&lt;br /&gt;
&lt;br /&gt;
select @@trancount&lt;br /&gt;
--returns 0 : plus de transaction en cours&lt;br /&gt;
&lt;br /&gt;
COMMIT TRAN A --génère une erreur&lt;br /&gt;
--Msg 6401, Level 16, State 1, Line 19&lt;br /&gt;
--Cannot roll back B. No transaction or savepoint of that name was
found.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce comportement ne nous permet donc pas d'annuler une partie du traitement
tout en gardant le reste. Heureusement, l'instruction SAVE TRANSACTION nous
permet de corriger le tir. SAVE TRANSACTION permet de mettre un point de
sauvegarde dans la transaction en cours pour pouvoir y revenir par la suite,
avec l'instruction ROLLBACK.&lt;/p&gt;
&lt;p&gt;Voici le script modifié. A la fin, la ligne A est insérée mais pas la B.&lt;/p&gt;
&lt;p style="BACKGROUND-COLOR: #eee"&gt;&lt;code&gt;BEGIN TRAN A&lt;br /&gt;
-------on démarre le premier niveau de transaction&lt;br /&gt;
&lt;br /&gt;
INSERT INTO [AdventureWorks].[dbo].[truc]([a],[b])&lt;br /&gt;
VALUES ('transaction A','transaction A')&lt;br /&gt;
&lt;br /&gt;
select @@trancount --returns 1&lt;br /&gt;
&lt;br /&gt;
BEGIN TRAN B&lt;br /&gt;
-------on démarre le deuxième niveau de transaction&lt;br /&gt;
&lt;br /&gt;
SAVE TRANSACTION B_Saved&lt;br /&gt;
--on met un point de sauvegarde&lt;br /&gt;
&lt;br /&gt;
INSERT INTO [AdventureWorks].[dbo].[truc]([a], [b])&lt;br /&gt;
VALUES ('transaction B','transaction B')&lt;br /&gt;
&lt;br /&gt;
select @@trancount --returns 2&lt;br /&gt;
&lt;br /&gt;
ROLLBACK TRANSACTION B_Saved&lt;br /&gt;
&lt;br /&gt;
COMMIT B&lt;br /&gt;
--on force quand même un commit pour valider la transaction B&lt;br /&gt;
&lt;br /&gt;
select @@trancount --returns 1&lt;br /&gt;
&lt;br /&gt;
COMMIT TRAN A&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A noter que l'on doit quand même faire un COMMIT de la transaction enfant
car le retour à un point de sauvegarde ne termine pas la transaction.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/XeEggYAJ1h0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/08/03/Transactions-imbriquees-et-SAVE-TRANSACTION#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/266092</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/08/03/Transactions-imbriquees-et-SAVE-TRANSACTION</feedburner:origLink></entry>
    
  <entry>
    <title>MVP SQL Server</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/EiTHL7zwwF8/MVP-SQL-Server" rel="alternate" type="text/html" title="MVP SQL Server" />
    <id>urn:md5:aee19ea13ac65a5769a60d7a6030170e</id>
    <updated>2008-07-06T23:11:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject>    
    <content type="html">    &lt;p&gt;Je viens d'être nommé par Microsoft &lt;strong&gt;Most Valuable
Professional&lt;/strong&gt; (MVP) sur la technologie SQL Server. C'est une grande
nouvelle dans ma vie professionnelle mais aussi pour Bewise.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Les MVP (Most Valuable Professionals) Microsoft sont des leaders de
communautés techniques exceptionnels dans le monde entier qui sont récompensés
pour partager, de leur propre initiative, leurs grandes connaissances pratiques
dans les communautés techniques, qu'elles soient en ligne ou non. Les MVP
Microsoft sont des experts reconnus qui incarnent l'excellence des communautés
techniques et qui s'investissent largement auprès d'une communauté dans une
volonté d'aider les autres.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Cette reconnaissance est le fruit d'un an d'invetissement sous la forme
d'articles, de webcasts, de conférences et par ce blog. Biensur, cela ne
signifie pas que je vais relâcher la pression, bien au contraire.&lt;/p&gt;
&lt;p&gt;Vous pouvez consulter mon profil sur le site des MVP Microsoft à cette
adresse :&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mvp.support.microsoft.com/profile/Jean-Pierre.Riehl"&gt;&lt;strong&gt;https://mvp.support.microsoft.com/profile/Jean-Pierre.Riehl&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img title="MVP-moyen.png, juil 2008" style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/bandeaux/MVP-moyen.png" /&gt;&lt;/p&gt;
&lt;p&gt;Avec cette nomination, Bewise se voit dotée maintenant de 6 MVP dans
différents domaines dont 2 pour SQL Server. Bien que c'était le cas avant, cela
souligne nos compétences sur SQL Server tant au niveau de la gestion des
données qu'au niveau décisionnel.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/EiTHL7zwwF8" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/07/06/MVP-SQL-Server#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/257967</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/07/06/MVP-SQL-Server</feedburner:origLink></entry>
    
  <entry>
    <title>Comparaison SQL Server 2008 et Oracle 11g</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Dq50qB9Fb0I/Comparaison-SQL-Server-2008-et-Oracle-11g" rel="alternate" type="text/html" title="Comparaison SQL Server 2008 et Oracle 11g" />
    <id>urn:md5:30a579e91b9df08d6fe4f49a4c5898fe</id>
    <updated>2008-06-26T01:05:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Un très bon article forcément partisan mais qui permet de lister les atouts
de SQL Server 2008 (et pourquoi pas même 2005) par rapport à son grand rival
Oracle.&lt;/p&gt;
&lt;p&gt;Le livre blanc est accessible à cette adresse : &lt;a href="http://download.microsoft.com/download/6/9/d/69d1fea7-5b42-437a-b3ba-a4ad13e34ef6/SQL2008_vs_Oracle11g.docx"&gt;
SQL Server 2008 Compared to Oracle Database 11g&lt;/a&gt; &lt;img style="FLOAT: right; MARGIN: 0 0 1em 1em" height="75" alt="" src="http://blog.djeepy1.net/public/SQL/logo-header-sql08-dg.gif" width="363" /&gt;&lt;/p&gt;
&lt;p&gt;Moi j'aime bien la comparaison des prix &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Dq50qB9Fb0I" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/26/Comparaison-SQL-Server-2008-et-Oracle-11g#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/253914</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/26/Comparaison-SQL-Server-2008-et-Oracle-11g</feedburner:origLink></entry>
    
  <entry>
    <title>Webcasts des sessions SQL Server disponibles</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/xvlz_OLoE04/Webcasts-des-sessions-SQL-Server-disponibles" rel="alternate" type="text/html" title="Webcasts des sessions SQL Server disponibles" />
    <id>urn:md5:87c1cdcf4aebe681c58cf896e882eacd</id>
    <updated>2008-06-19T18:57:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
            
    <content type="html">    &lt;div class="ExternalClassAF3CC6DB1FB84EF1859ED1F4EC5A08AC"&gt;
&lt;div&gt;Tout n’est pas encore dans la boîte mais les premiers Webcasts des
sessions SQL Server sont en ligne. Au programme deux séries sur les
nouveautés du moteur relationnel et les nouveautés en matière de décisionnel de
SQL Server 2008.&lt;/div&gt;
&lt;div&gt; &lt;/div&gt;
&lt;div&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Pour visionner ces Webcasts,
suivez ce lien :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0; text-align: center"&gt;&lt;a href="http://www.bewise.fr/fr-FR/business/DGD/Pages/BDC2008-Webcasts.aspx"&gt;&lt;strong&gt;Webcasts
Décisionnel &amp;amp; Gestion des Données&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;N’hésitez pas à poser des
questions aux consultants Bewise sur les sujets traités ou tout autre points de
SQL Server 2008.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;&lt;img alt="" src="http://www.bewise.fr/fr-FR/PublishingImages/BDC-Sessions.jpg" /&gt;&lt;/p&gt;
&lt;div&gt; &lt;/div&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/xvlz_OLoE04" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/19/Webcasts-des-sessions-SQL-Server-disponibles#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/252352</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/19/Webcasts-des-sessions-SQL-Server-disponibles</feedburner:origLink></entry>
    
  <entry>
    <title>De belles références</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/lXk3_FEhjhk/De-belles-references" rel="alternate" type="text/html" title="De belles références" />
    <id>urn:md5:64599be2e02f62bee32ca7093cc0fa80</id>
    <updated>2008-06-12T23:04:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;Non, ce n'est pas un jeu de mot pour présenter une nouvelle Assembly. Je
parle ici de références clients qui utilisent avec succès SQL Server.&lt;br /&gt;
Le tout présenté dans une petite application Silverlight.&lt;/p&gt;
&lt;p&gt;Le site est ici : &lt;a href="http://www.microsoft.com/france/sql/ilslontfait/"&gt;http://www.microsoft.com/france/sql/ilslontfait/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/.ilslontfait_m.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Les références sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JCDecaux (plus connu sous le nom de Velib') : 400 000 locations par
jour&lt;/li&gt;
&lt;li&gt;Premier Bankcard : un datawarehouse de 20 To (27 milliards de lignes)&lt;/li&gt;
&lt;li&gt;AFP : 4000 utilisateurs en simultanés&lt;/li&gt;
&lt;li&gt;Xiti : 17 milliards d'enregistrements par mois&lt;/li&gt;
&lt;li&gt;AXA : Business Intelligence temps réel&lt;/li&gt;
&lt;li&gt;Nancy-Université : réduction des coûts de SAP&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/lXk3_FEhjhk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/12/De-belles-references#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/250418</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/12/De-belles-references</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Server 2008 Web Edition</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/djdpsEXpGN4/SQL-Server-2008-Web-Edition" rel="alternate" type="text/html" title="SQL Server 2008 Web Edition" />
    <id>urn:md5:e641d14e13ae4fac3f8eda07fe06ab71</id>
    <updated>2008-06-09T15:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Tellement excité à l'idée d'installer la RC0 de SQL Server 2008, j'ai écarté
un détail pourtant visible dès la page de téléchargement...&lt;/p&gt;
&lt;p&gt;Il y a une nouvelle édition de SQL Server qui complète la gamme :&lt;/p&gt;
&lt;h4 style="TEXT-ALIGN: center"&gt;SQL Server 2008 Web Edition&lt;/h4&gt;
&lt;p&gt;En discutant avec différents camarades de jeu, nous nous sommes posés cette
simple question : &lt;ins&gt;mais qu'est ce que c'est ???&lt;/ins&gt;&lt;/p&gt;
&lt;p&gt;Aux premières informations, ce serait une édition spéciale pour
les hébergeurs pour faire baisser les prix du hosting basé sur SQL Server.
Bien qûr, je reste à l'affût dès que j'en sais plus..&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Plus d'infos : &lt;a href="http://mshostingsummit08.spaces.live.com/blog/cns!4308FE7290C0AF4!195.entry"&gt;http://mshostingsummit08.spaces.live.com/blog/cns!4308FE7290C0AF4!195.entry&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/djdpsEXpGN4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/09/SQL-Server-2008-Web-Edition#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/249208</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/09/SQL-Server-2008-Web-Edition</feedburner:origLink></entry>
    
  <entry>
    <title>Premiers pas dans l'espace</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/anC7PgkkjJ8/Premiers-pas-dans-lespace" rel="alternate" type="text/html" title="Premiers pas dans l'espace" />
    <id>urn:md5:c0b98585146b80168b95b7cb1719d865</id>
    <updated>2008-06-09T00:24:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;Il y a plusieurs semaines, j'ai terminé un article d'introduction aux
fonctionnalités spatiales de SQL Server 2008. Voici quelques extraits pour vous
mettre en appétit. Et pour aller directement sur l'article complet :&lt;/p&gt;
&lt;p&gt;      &lt;a href="http://www.bewise.fr/fr-FR/technos/Pages/DetailArticle.aspx?ID=107"&gt;Premiers
pas dans l'espace (&lt;/a&gt;&lt;a href="http://www.bewise.fr/"&gt;www.bewise.fr&lt;/a&gt;)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Introduction&lt;/ins&gt;&lt;/strong&gt;&lt;br /&gt;
Cet article se veut une première introduction aux nouveaux types spatiaux de
SQL Server 2008. Je vais vous les présenter et nous les manipulerons. Nous
aborderons aussi leur utilisation avec du code .NET. Enfin, nous utiliserons
Virtual Earth pour présenter les données géographiques mais nous ne rentrerons
pas dans le détail de cette technologie.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Premières requêtes&lt;br /&gt;&lt;/ins&gt;&lt;/strong&gt;Les 2 nouveaux types
proposent toute une série de méthodes pour manipuler des données spatiales.
Aire de la surface, surface circonscrite, inscrite, périmètre, intersection,
union, barycentre… Le but n’est pas de vous les décrire ici une à une. Nous
allons toutefois en utiliser quelques unes dans des requêtes simples mais
indispensables dans une application gérant des types spatiaux.&lt;/p&gt;
&lt;p&gt;Tout d’abord, voyons comment retrouver les points contenus dans une zone
donnée. Comme cas concret, on peut imaginer une recherche d’appartements ou
d’hôtels dans une zone définie. Pour cela, nous avons plusieurs possibilités
avec les méthodes STContains, STIntersects et STWithin. La méthode STIntersects
serra utilisée pour le type geography car les 2 autres n’existent que sur le
type geometry. Voici le code T-SQL permettant cette requête :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Declare&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@zone &lt;span style="COLOR: blue"&gt;geography&lt;/span&gt; &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: blue"&gt;geography&lt;/span&gt;&lt;span style="COLOR: gray"&gt;::&lt;/span&gt;STPolyFromText&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: red"&gt;'POLYGON((43 3.2, 43 3.5, 43.2
3))'&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; 4326&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;
&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Select&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: gray"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;From&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;CustomerPlaces&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Where&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;@zone&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;STIntersects&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;CustomerPlaces&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Localization&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;
&lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;ADO.NET&lt;br /&gt;&lt;/ins&gt;&lt;/strong&gt;Après avoir vu un aperçu des types
spatiaux et de leur utilisation dans SQL dans Management Studio, intéressons
nous à la manipulation depuis une application .NET.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Et comme d'habitude, n'hésitez pas pour les questions...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/anC7PgkkjJ8" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/09/Premiers-pas-dans-lespace#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/249086</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/09/Premiers-pas-dans-lespace</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Server 2008 RC0</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/eAzyM6HIw30/SQL-Server-2008-RC0" rel="alternate" type="text/html" title="SQL Server 2008 RC0" />
    <id>urn:md5:41def92f01c609eeb8d2df177845762d</id>
    <updated>2008-06-09T00:07:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;On y est presque... Ce n'est pas encore la RTM mais on s'en approche. La
1ère Release Candidate (RC0) de SQL Server 2008 est disponible pour les abonnés
MSDN et Technet. Cette version a &lt;em&gt;normalement&lt;/em&gt; le même périmètre que la
version finale.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/.rc0_m.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Il y a un seul Setup pour toutes les versions et le téléchargement se passe
ici : &lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/details/default.aspx?pm=pid%3a334%7CLk:t"&gt;
https://msdn.microsoft.com/en-us/subscriptions/securedownloads/details/default.aspx?pm=pid%3a334%7CLk:t&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je suis en pleine installation, en mode side-by-side. Je ferai des retours
réguliers sur cette version quasi-finale.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/eAzyM6HIw30" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/09/SQL-Server-2008-RC0#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/249076</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/09/SQL-Server-2008-RC0</feedburner:origLink></entry>
    
  <entry>
    <title>Retour de vacances</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/AuqBQ0Tdp60/Retour-de-vacances" rel="alternate" type="text/html" title="Retour de vacances" />
    <id>urn:md5:d0e2f9c8bee44be651150a7da62b0d5e</id>
    <updated>2008-06-08T23:41:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Perso</dc:subject>
            
    <content type="html">    &lt;p&gt;Me voila de retour aux affaires après 2 bonnes semaines de vacances. Les
dernières semaines ont été intensives avec des projets super intéressants et
pas mal de consulting.&lt;/p&gt;
&lt;p&gt;Pour recharger les batteries, je suis allé m'exiler sur une île écossaise,
Islay, pour un festival local autour des distilleries. Cela me permet de faire
une petite promo pour mon club de dégustation de Single Malt sur Toulouse : Les
Passionnés du Malt (&lt;a href="http://passionnesdumalt.free.fr/"&gt;http://passionnesdumalt.free.fr&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Nous avons eu un temps magnifique, ce qui est rare dans cette région, ce qui
a rendu le voyage magique.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/perso/Feis_Isle_2008_057.JPG"&gt;&lt;img border="0" alt="" src="http://blog.djeepy1.net/public/perso/.Feis_Isle_2008_057_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je suis parti un peu comme un voleur donc je m'excuse pour les lecteurs
assidus qui auraient pu s'inquiéter :-).&lt;/p&gt;
&lt;p&gt;Pour me rattraper, le programme des prochains posts est le suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le debrief de la BDC 2008 que j'avais promis, avec des webcasts et des
sources&lt;/li&gt;
&lt;li&gt;le MSDN Technet Tour à Marseille&lt;/li&gt;
&lt;li&gt;un article sur le spatial que j'ai publié avant de partir en congés (sur
&lt;a href="http://www.bewise.fr/"&gt;http://www.bewise.fr&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;la RC0 de SQL Server 2008 qui est sortie ce week-end&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voila, c'est reparti sur les chapeaux de roue !!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/AuqBQ0Tdp60" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/06/08/Retour-de-vacances#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/249070</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/06/08/Retour-de-vacances</feedburner:origLink></entry>
    
  <entry>
    <title>De l'utilisation de NOLOCK</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/4bcbefrkwAc/De-lutilisation-de-NOLOCK" rel="alternate" type="text/html" title="De l'utilisation de NOLOCK" />
    <id>urn:md5:7a0afe174b6a3c188aa1b7366d521c60</id>
    <updated>2008-04-24T14:28:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;J'ai eu il y a quelques temps la question suivante :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;q&gt;&lt;em&gt;j'aimerais faire comprendre à mes développeurs l'intéret de
positionner des NOLOCK dans les requêtes de sélection, peux-tu m'aider pour
faire l'argumentaire&lt;/em&gt;&lt;/q&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Pour rappel ou pour ceux qui ne voient pas de quoi je parle,
&lt;strong&gt;NOLOCK&lt;/strong&gt; est un &lt;em&gt;Query Hint&lt;/em&gt; qui permet de passer le mode
d'isolation au niveau le plus bas sur la lecture d'une table. Il s'utilise de
la façon suivante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select * From MaTable WITH
(NOLOCK)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Voici la réponse que j'ai donné :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Premièrement et c'est le plus important, utiliser NOLOCK n'est pas «
&lt;em&gt;naturel&lt;/em&gt; », dans le sens où la base de donnnées est là pour garantir
les accès concurrents et gérer des lecture/écriture dans une optique
transactionnelle (contraintes ACID&lt;sup&gt;1&lt;/sup&gt;) et ceux même pour un énorme
volume de transactions.&lt;/p&gt;
&lt;p&gt;Cependant, sans aller jusqu'à dire que c'est un constat d'échec que de
l'utiliser, le hint NOLOCK est intéressant dans certains contextes.&lt;br /&gt;
Notamment les sites Web qui font beaucoup d'accès en lecture pour faire
principalement de l'affichage. Dans ce cas, en effet, avoir une donnée non
commitée n'est (en général) pas critique, sauf pour certains sites (bourses,
état de stock, etc.). Cela permet de soulager la base de données et de booster
l'affichage des pages.&lt;/p&gt;
&lt;p&gt;Mais pour moi, le NOLOCK n'est qu'une réponse technique d'urgence et ne sert
juste qu'à cacher la poussière sous le tapis. Il faut comprendre pourquoi
l'ajout d'une ligne dans une facture bloque l'affichage du top 10 des vendeurs
et essayer d'y répondre par la conception de l'application (cache, portée des
transactions, etc.) ou de la base (normalisation/dénormalisation).&lt;br /&gt;
J'insiste qu'il y a un risque à utiliser NOLOCK à tout va, car on peut
récupérer des données &amp;quot;dirty&amp;quot; et les réécrire par la suite et perdre la
cohérence (aCid); à l'application d'adresser cette contrainte.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Donc pour conclure :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le NOLOCK est une réponse technique intéressante pour optimiser l'affichage
de données NON CRITIQUES&lt;/li&gt;
&lt;li&gt;l'utilisation systématique du NOLOCK n'est pas une bonne chose car elle
cache un réel problème transactionnel. Et surtout on ne respecte plus la
&amp;quot;norme&amp;quot; ACID.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si tu utilises SQL Server 2005, il faut te tourner vers les autres niveaux
de verrou comme le &lt;strong&gt;Snapshot&lt;/strong&gt; (READ_COMMITTED_SNAPSHOT) qui
apporte la souplesse en lecture tout en garantissant les transactions (comme le
fait Oracle). Un bon argument pour passer à 2005.&lt;/p&gt;
&lt;p&gt;&lt;q&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;em&gt;&lt;ins&gt;ACID&lt;/ins&gt;: Atomicité, Cohérence, Isolation,
Durabilité&lt;/em&gt;&lt;/q&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/4bcbefrkwAc" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/24/De-lutilisation-de-NOLOCK#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/233357</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/24/De-lutilisation-de-NOLOCK</feedburner:origLink></entry>
    
  <entry>
    <title>La BDC c'est fini</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/EZjlDk2pTmw/La-BDC-cest-fini" rel="alternate" type="text/html" title="La BDC c'est fini" />
    <id>urn:md5:1bd0f4bfeb4c66248535eef8da720e8c</id>
    <updated>2008-04-10T22:09:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>Bewise</dc:subject>    
    <content type="html">    &lt;p&gt;Et voila, l'événement se termine. Merci à tous les gens qui sont venus. Je
posterai dès demain les slides des sessions DGD, les codes sources et je ferai
un petit debrief.&lt;/p&gt;
&lt;p&gt;Là, avec les speakers Bewise et Microsoft, nous allons boire une petite
bière dans le coin.&lt;/p&gt;
&lt;p&gt;A demain.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/EZjlDk2pTmw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/10/La-BDC-cest-fini#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/229064</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/10/La-BDC-cest-fini</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise Developer Conference : D-Day</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/qyS_-9Sej9I/Bewise-Developer-Conference-%3A-D-Day" rel="alternate" type="text/html" title="Bewise Developer Conference : D-Day" />
    <id>urn:md5:5c944a852b7742e6c0f5d5cbbe04057a</id>
    <updated>2008-04-10T09:34:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>Bewise</dc:subject><dc:subject>DGD</dc:subject>    
    <content type="html">    &lt;p&gt;Et voila, c'est je jour J pour l'événement Bewise sur les technologies
Microsoft. Je fais un dernier rappel avec ce post.&lt;/p&gt;
&lt;p&gt;Si vous souhaitez découvrir &lt;strong&gt;SQL Server 2008&lt;/strong&gt; et toutes les
solutions connexes, rendez-vous aux sessions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solutions Décisionnelles avec SQL Server 2008 à 16h40 et 20h40&lt;/li&gt;
&lt;li&gt;Nouveautés de SQL Server 2008 à 18h40&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sans oublier que vous pouvez rencontrer tout au long de la journée les
experts DGD et Microsoft sur les différents stands SQL (SQL Server 2008, SQL
2008 et la mobilité, Business Intelligence, BizTalk).&lt;/p&gt;
&lt;h4&gt;Rendez-vous tous au Stade Ernest Wallon à Toulouse dès 13h30 !!&lt;/h4&gt;
&lt;p&gt;&lt;em&gt;PS : chercher les gens en cravate &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/qyS_-9Sej9I" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/10/Bewise-Developer-Conference-%3A-D-Day#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/228862</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/10/Bewise-Developer-Conference-%3A-D-Day</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise inaugure son nouveau site web</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/aPUKmjNvfVY/Bewise-inaugure-son-nouveau-site-web" rel="alternate" type="text/html" title="Bewise inaugure son nouveau site web" />
    <id>urn:md5:922f3d7d73316c9a02d2943d8524e170</id>
    <updated>2008-04-07T14:23:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject><dc:subject>sharepoint</dc:subject>    
    <content type="html">    &lt;p&gt;Il est beau, il est en &lt;strong&gt;MOSS&lt;/strong&gt; (&lt;strong&gt;Sharepoint&lt;/strong&gt;
pour les non initiés) et la page de présentation du domaine
&lt;strong&gt;DGD&lt;/strong&gt; (&lt;strong&gt;Décisionnel &amp;amp; Gestion de Données&lt;/strong&gt;)
est magnifique (mode self_congratulate).&lt;/p&gt;
&lt;p&gt;Il est consultable à la même adresse : &lt;a href="http://www.bewise.fr/"&gt;http://www.bewise.fr&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/bewise/home_bewise.PNG"&gt;&lt;img style="DISPLAY: block; MARGIN: 0 auto" height="281" alt="" src="http://blog.djeepy1.net/public/bewise/.home_bewise_m.jpg" width="448" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pour accéder directement à la partie &lt;strong&gt;DGD&lt;/strong&gt;, suivez ce
&lt;a href="http://www.bewise.fr/fr-FR/business/dgd/Pages/default.aspx" hreflang="fr"&gt;lien&lt;/a&gt;.&lt;br /&gt;
Pour accéder à l'offre de Bewise sur &lt;strong&gt;SQL Server&lt;/strong&gt;, suivez ce
&lt;a href="http://www.bewise.fr/fr-FR/business/dgd/Pages/offres.aspx" hreflang="fr"&gt;lien&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Au risque de faire mon copieur par rapport aux posts de mes collègues, bravo
à Joce pour son travail de maîtrise des CSS dans Sharepoint et à Lionel pour sa
maîtrise de Sharepoint tout court.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/aPUKmjNvfVY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/07/Bewise-inaugure-son-nouveau-site-web#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/227997</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/07/Bewise-inaugure-son-nouveau-site-web</feedburner:origLink></entry>
    
  <entry>
    <title>Problèmes de CTP</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/P3IjUr1P7Kg/Problemes-de-CTP" rel="alternate" type="text/html" title="Problèmes de CTP" />
    <id>urn:md5:aade91d1b7decae0d6150a809ae667d6</id>
    <updated>2008-04-07T13:44:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;J'ai eu, et cela m'est aussi remonté par mes collègues et relations, des
soucis avec les installations des CTP de SQL Server. Obligation d'installer
deux fois, erreur à la désinstallation...&lt;/p&gt;
&lt;p&gt;Un des problèmes que j'avais est le suivant : après une installation
réussie, seul un point, et non des moindres, ne marchait pas, le requêtage
depuis Management Studio. A l'exécution d'une requête SELECT, Management Studio
mouline et ne retourne jamais les résultats. Pourtant, il est possible
d'afficher ou de créer des tables ou des bases de données.&lt;/p&gt;
&lt;p&gt;J'ai le moyen de contournement à ce problème qui est référencé auprès de
Microsoft (programme Connect) : il faut laisser TOUS les répertoires par défaut
à l'installation (ie. C:\Program Files\Microsoft SQL Server\). Pour moi, une
désinstallation-réinstallation ont suffi pour régler le problème.&lt;/p&gt;
&lt;p&gt;Le lien du &amp;quot;bug&amp;quot; est le suivant : &lt;a href="http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=312344"&gt;
http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=312344&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS : par contre, j'ai dû mettre les droits au service qui fait tourner SQL
sur le répertoire où sont mes fichiers MDF à la main... Ah ces sacrés CTP.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/P3IjUr1P7Kg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/07/Problemes-de-CTP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/227988</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/07/Problemes-de-CTP</feedburner:origLink></entry>
    
  <entry>
    <title>Mim est MVP</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/yoaWhPIjROw/Mim-est-MVP" rel="alternate" type="text/html" title="Mim est MVP" />
    <id>urn:md5:57dcf6506c3bfbe07305b0df719c84c5</id>
    <updated>2008-04-02T09:19:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject><dc:subject>DGD</dc:subject><dc:subject>MVP</dc:subject>    
    <content type="html">    &lt;p&gt;Yallaaaa !!&lt;/p&gt;
&lt;p&gt;Mon collègue et ami &lt;strong&gt;Sébastien&lt;/strong&gt; (dit Mim dans la pègre
Warcraftienne) vient de recevoir son titre de &lt;strong&gt;MVP SQL
Server&lt;/strong&gt;.&lt;br /&gt;
Félicitations, c'est super pour toi, pour Bewise et pour le pôle DGD.&lt;/p&gt;
&lt;p&gt;Je vous rapelle l'URL de son Blog : &lt;a href="http://www.dotmim.com/"&gt;http://www.dotmim.com&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS : Cette fois-ci, ce n'est pas un poisson d'avril &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/yoaWhPIjROw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/02/Mim-est-MVP#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/226237</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/02/Mim-est-MVP</feedburner:origLink></entry>
    
  <entry>
    <title>Cadeau à la BDC 2008 !!!!</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/6KClw8Dft5Y/Cadeau-a-la-BDC-2008" rel="alternate" type="text/html" title="Cadeau à la BDC 2008 !!!!" />
    <id>urn:md5:97a7d280768c5e07aef6486a7cd9e4dc</id>
    <updated>2008-04-01T09:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Je ne présente plus la Bewise Developer Conference 2008 organisée par Bewise
à Toulouse le 10 avril. Par contre, cette nouvelle va en ravir plus d'un.&lt;/p&gt;
&lt;p&gt;Pour toute inscription et présence aux sessions SQL Server de la BDC,
une licence &lt;strong&gt;Enterprise Edition&lt;/strong&gt; sera offert.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.bewise.fr/BDC2008/?f=d50886ea-9d61-4544-9ffc-481d90f79933" hreflang="fr"&gt;Inscrivez-vous vite, il ne reste plus que quelques jours
!!!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h1 style="COLOR: white"&gt;POISSON D'AVRIL&lt;/h1&gt;
&lt;p style="COLOR: white"&gt;PS : désolé de gacher si vite la surprise pour les gens
qui ont un reader RSS texte, qui ne prends pas en compte le subterfuge &lt;img src="/themes/default/smilies/smile.png" alt=":-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/6KClw8Dft5Y" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/04/01/Cadeau-a-la-BDC-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/225944</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/04/01/Cadeau-a-la-BDC-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services SP2 sur Windows SP1: Erreur 401</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/noUPIQYCiP0/Reporting-Services-SP2-sur-Windows-SP1%3A-Erreur-401" rel="alternate" type="text/html" title="Reporting Services SP2 sur Windows SP1: Erreur 401" />
    <id>urn:md5:0a1d7cb84d8b8d3156a32f1d2e064f51</id>
    <updated>2008-03-28T22:02:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Reporting Services</dc:subject>    
    <content type="html">    &lt;p&gt;Un post pour relayer un problème (et sa résolution) que j'ai rencontré chez
un client récemment.&lt;/p&gt;
&lt;p&gt;Pour résoudre quelques bugs que nous avions sur &lt;strong&gt;Reporting
Services&lt;/strong&gt; (rsInternalError sur un drill-through, mauvais
raffraichissement des données et de la Document Map au changement de
paramètres), je décide [enfin] de passer le Service Pack 2 de SQL Server 2005
sur la production.&lt;/p&gt;
&lt;p&gt;Après l'installation, tout semble fonctionner correctement sauf une
application qui attaque le &lt;strong&gt;Web Service&lt;/strong&gt; de Reporting Services
(reportservice2005.asmx). Chaque appelle se solde par une erreur
d'authentification (&lt;strong&gt;HTTP 401&lt;/strong&gt;). A noter que le site web qui
attaque le Web Service est sur la même machine.&lt;/p&gt;
&lt;p&gt;C'est là que je m'aperçois que le serveur est loin d'être mis à jour
régulièrement puisque Windows est encore en Service Pack 1. Bien convaincu,
d'après différentes discussions dans les newsgroups, que le problème vient du
système obsolescent, j'allais planifier une coupure pour la mise à jour quand
mon collègue Nicolas a trouvé LE patch de derrière les fagots :&lt;/p&gt;
&lt;p&gt;dans la base de registre, ajouter la clé &lt;span class="userInput"&gt;&lt;strong&gt;DisableLoopbackCheck&lt;/strong&gt; (DWORD) avec une valeur de
&lt;strong&gt;1&lt;/strong&gt; dans&lt;/span&gt;
&lt;strong&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bon, cela ne me dispense pas de passer les patchs sur Windows mais ça nous a
permis de corriger rapidement (merci Nico).&lt;/p&gt;
&lt;p&gt;Voici la KB correspondante :&lt;br /&gt;
&lt;a href="http://support.microsoft.com/default.aspx/kb/896861/en-us"&gt;http://support.microsoft.com/default.aspx/kb/896861/en-us&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/noUPIQYCiP0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/28/Reporting-Services-SP2-sur-Windows-SP1%3A-Erreur-401#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/224996</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/28/Reporting-Services-SP2-sur-Windows-SP1%3A-Erreur-401</feedburner:origLink></entry>
    
  <entry>
    <title>De l'instruction COALESCE</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/HHo5Nv1Bgs0/De-linstruction-COALESCE" rel="alternate" type="text/html" title="De l'instruction COALESCE" />
    <id>urn:md5:a947fe456b765fc7d809b8d9e9dbc5df</id>
    <updated>2008-03-27T09:41:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;Ce petit post pour faire découvrir ou, je l'espère,  redécouvrir, une
instruction T-SQL : &lt;strong&gt;COALESCE&lt;/strong&gt;. La définition de cette
instruction est :&lt;/p&gt;
&lt;q&gt;&lt;em&gt;retourne la première valeur non nulle.&lt;/em&gt;&lt;/q&gt;
&lt;p&gt;Quand je parle de cette instruction que j'utilise depuis 2001, on me dit
toujours : &lt;q&gt;&lt;em&gt;ben t'as qu'à utiliser ISNULL...&lt;/em&gt;&lt;/q&gt; Ce n'est pas faux
car &lt;strong&gt;ISNULL&lt;/strong&gt; fait la même chose mais uniquement entre 2
valeurs.&lt;/p&gt;
&lt;p&gt;Récemment, je suis tombé sur ce code T-SQL, assez illisible : &lt;/p&gt;
&lt;p style="background:#eee"&gt;&lt;code&gt;ISNULL(matable.Col1,
ISNULL(maTable.col2, ISNULL(DefTable.Col1, @ValeurParDefaut))&lt;/code&gt;&lt;/p&gt;
En &amp;quot;correction&amp;quot;, j'ai proposé :
&lt;p style="background:#eee"&gt;&lt;code&gt;COALESCE(matable.Col1,
maTable.col2, DefTable.Col1, @ValeurParDefaut)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Voila, ça fait la même chose mais c'est plus propre et plus simple à
maintenir.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/HHo5Nv1Bgs0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/27/De-linstruction-COALESCE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/224428</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/27/De-linstruction-COALESCE</feedburner:origLink></entry>
    
  <entry>
    <title>TechDays 2008 - Les sessions en Webcast</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/sjXlGrg33QY/TechDays-2008-Les-sessions-en-Webcast" rel="alternate" type="text/html" title="TechDays 2008 - Les sessions en Webcast" />
    <id>urn:md5:14c6bbed63fd058022eb48597ae2e2c4</id>
    <updated>2008-03-25T22:37:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>SQL Server 2008</dc:subject><dc:subject>TechDays</dc:subject>    
    <content type="html">    &lt;p&gt;Comme l'an passé, vous pouvez revivre l'expérience des TechDays via les
Webcasts des sessions. A ma connaissance, toutes les sessions (environ 300) ont
été webcastées. Ca va en faire des heures devant l'écran...&lt;/p&gt;
&lt;p&gt;J'en profite pour faire de la promo pour ma session, co-animé avec Sébastien
Pertus, sur les nouveautés en termes de stockage avec
&lt;strong&gt;FileStream&lt;/strong&gt; et &lt;strong&gt;Remote BLOB&lt;/strong&gt;, les nouveautés de
la recherche &lt;strong&gt;Full-Text&lt;/strong&gt; et les nouveautés &lt;strong&gt;XML&lt;/strong&gt;
dans &lt;strong&gt;SQL Server 2008&lt;/strong&gt;. Vous pouvez la visionnez à l'adresse
suivante :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/france/vision/mstechdays08/WebcastTechNet.aspx?EID=fb17a388-7d57-4339-bd35-d357e7090600"&gt;
http://www.microsoft.com/france/vision/mstechdays08/WebcastTechNet.aspx?EID=fb17a388-7d57-4339-bd35-d357e7090600&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On bafouille un peu les 5 premières minutes mais une fois dans la
technique... bref, on va dire que c'est parceque ce sont les premiers TechDays
&lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;
&lt;p&gt;Un autre lien utile, l'accès direct aux Webcasts du parcours &lt;strong&gt;SQL
Server 2008&lt;/strong&gt; : &lt;a href="http://www.microsoft.com/france/vision/mstechdays08/Parcours.aspx?Oid=64379656-8b55-4158-a660-f840e29290c9"&gt;
http://www.microsoft.com/france/vision/mstechdays08/Parcours.aspx?Oid=64379656-8b55-4158-a660-f840e29290c9&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Et puis, rappelons le, si vous préférez échanger en direct avec des
spécialistes, l'équipe &lt;strong&gt;DGD&lt;/strong&gt;, quelques experts Microsoft et les
consultants Bewise vous attendent tous à la &lt;a href="http://www.bewise.fr/BDC2008/?f=d50886ea-9d61-4544-9ffc-481d90f79933" hreflang="fr"&gt;Bewise Developer Conference&lt;/a&gt; à Toulouse le 10 avril.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;UPDATE&lt;/ins&gt;&lt;/strong&gt; : j'oubliais, les sources de nos démos
sont &lt;a href="http://blog.djeepy1.net/public/techdays/DAT208-Code.zip" hreflang="fr"&gt;ICI&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/sjXlGrg33QY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/25/TechDays-2008-Les-sessions-en-Webcast#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/224044</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/25/TechDays-2008-Les-sessions-en-Webcast</feedburner:origLink></entry>
    
  <entry>
    <title>BDC 2008 - Les sessions DGD</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/5WBKwuqY_7o/BDC-2008-Les-sessions-DGD" rel="alternate" type="text/html" title="BDC 2008 - Les sessions DGD" />
    <id>urn:md5:abdd56cf99df842a3bd217fb53c6dd24</id>
    <updated>2008-03-23T12:00:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>Bewise</dc:subject><dc:subject>Bewise Developer Conference</dc:subject><dc:subject>DGD</dc:subject>    
    <content type="html">    &lt;p&gt;La &lt;strong&gt;BDC 2008&lt;/strong&gt; fait la part belle au domaine métier de Bewise
&lt;strong&gt;Décisionnel &amp;amp; Gestion de Données&lt;/strong&gt; (appelé dans le langage
courant &lt;strong&gt;DGD&lt;/strong&gt;). En effet, DGD aura le plaisir de vous présenter
2 sessions, de vous accueillir sur 4 espaces de démonstration avec pas moins de
6 spécialistes et accompagnera aussi techniquement les speakers des
pleinières.&lt;/p&gt;
&lt;p&gt;Du coté des sesssions, au programme :&lt;/p&gt;
&lt;h3&gt;Les nouveautés de SQL Server 2008&lt;/h3&gt;
&lt;p&gt;Cette session se place au coeur du moteur relationnel de SQL Server 2008. On
y verra notamment les nouveaux types (&lt;strong&gt;spatial&lt;/strong&gt;,
&lt;strong&gt;geography&lt;/strong&gt;, &lt;strong&gt;hierarchyID&lt;/strong&gt;, etc.), les nouveaux
modes de stockage (&lt;strong&gt;FileStream&lt;/strong&gt;, &lt;strong&gt;RemoteBlob&lt;/strong&gt;),
les améliorations du langages T-SQL, la nouvelle recherche Full-Text
(&lt;strong&gt;iFTS&lt;/strong&gt;), les nouveautés pour l'administration (&lt;strong&gt;Policy
Framework&lt;/strong&gt;, &lt;strong&gt;Resource Governor&lt;/strong&gt;) et bien d'autes
nouveautés encore. &lt;br /&gt;
Elle sera présentée par Sébastien Pertus (l'auteur de &lt;a href="http://www.dotmim.com/" hreflang="fr"&gt;DotMim&lt;/a&gt;) et Julien Duprat.&lt;/p&gt;
&lt;h3&gt;Les solutions décisionnelles avec SQL Server 2008  &lt;/h3&gt;
&lt;p&gt;Cette session se focalise sur les fonctionnalités décisionnelles de SQL
Server 2008. En plus de revenir sur les solutions qu'offre SQL Server en
matière de &lt;strong&gt;Business Intelligence&lt;/strong&gt;, seront présentées les
nouveautés de &lt;strong&gt;Integration Services&lt;/strong&gt;, les nouveautés de
&lt;strong&gt;Analysis Services&lt;/strong&gt;, la nouvelle architecture de
&lt;strong&gt;Reporting Services&lt;/strong&gt; et nous concluerons sur une méthode
originale de faire de la restitution de données géographiques avec
&lt;strong&gt;Virtual Earth&lt;/strong&gt;.&lt;br /&gt;
Elle sera présentée par votre serviteur accompagné par Philippe Lonvaud.&lt;/p&gt;
&lt;p&gt;Du coté des espaces de démonstration, venez découvrir :&lt;/p&gt;
&lt;h4&gt;Biztalk 2006 R2, le serveur de gestion de processus&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Eric Ortiz&lt;/strong&gt;, chef de produit &lt;strong&gt;Biztalk Server&lt;/strong&gt;
chez Microsoft, vous attend pour vous présenter Biztalk et les nouveautés de la
version R2&lt;/p&gt;
&lt;h4&gt;Microsoft Business Intelligence&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Philippe Blondet&lt;/strong&gt;, chef de produit &lt;strong&gt;Performance
Point&lt;/strong&gt; chez Microsoft, vous parlera de l'offre de Microsoft sur le
sujet et particulièrement de &lt;strong&gt;PerformancePoint Server&lt;/strong&gt; avec les
tableaux de bords, l'analyse avancée et la planification financière.&lt;/p&gt;
&lt;h4&gt;SQL Server 2008 et la mobilité&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Pascal Belaud&lt;/strong&gt;, évangéliste Microsoft qu'on ne présente
plus, sera présent pour vous montrer toutes les &lt;strong&gt;solutions
mobiles&lt;/strong&gt; et déconnectées qu'offre SQL Server 2008.&lt;/p&gt;
&lt;h4&gt;Select * From [SQL Server 2008]&lt;/h4&gt;
&lt;p&gt;Un titre original pour l'espace de démonstration consacré à &lt;strong&gt;SQL
Server&lt;/strong&gt; dans sa globalité. Venez rejoindre 3 consultants de Bewise
(&lt;strong&gt;Sébastien Pertus&lt;/strong&gt;, &lt;strong&gt;Philippe Lonvaud&lt;/strong&gt; et
moi-même) pour découvrir plus en détail SQL Server et les nouveautés de sa
prochaine édition.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Un beau programme et une bonne présence du domaine métier DGD à la Bewise
Developer Conference. Mais la BDC 2008, c'est aussi toutes les nouvelles
technologies Microsoft comme &lt;strong&gt;Silverlight 2.0&lt;/strong&gt;,
&lt;strong&gt;Sharepoint&lt;/strong&gt;, &lt;strong&gt;Team System 2008&lt;/strong&gt;, &lt;strong&gt;.NET
3.5&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;p&gt;Il vous reste quelques jours pour vous &lt;a href="http://www.bewise.fr/BDC2008/?f=d50886ea-9d61-4544-9ffc-481d90f79933" hreflang="fr"&gt;INSCRIRE&lt;/a&gt;... Attention, il reste peu de places pour les
pleinières.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.bewise.fr/bdc2008/img/logo.gif" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/5WBKwuqY_7o" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/13/BDC-2008-Les-sessions-DGD#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/220388</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/13/BDC-2008-Les-sessions-DGD</feedburner:origLink></entry>
    
  <entry>
    <title>Intellisense très lente dans Visual Studio 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/j3zuychjh3A/Intellisense-tres-lente-dans-Visual-Studio-2008" rel="alternate" type="text/html" title="Intellisense très lente dans Visual Studio 2008" />
    <id>urn:md5:a61e55773a7194f25a89654836b698b2</id>
    <updated>2008-03-21T22:07:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Visual Studio</dc:subject>    
    <content type="html">    &lt;p&gt;Par deux fois chez des clients je me suis retrouvé avec
l'&lt;strong&gt;intellisense&lt;/strong&gt; de &lt;strong&gt;Visual Studio 2008&lt;/strong&gt; qui se
met à ralentir au point de stopper complètement ma productivité.&lt;/p&gt;
&lt;p&gt;J'ai d'abord cru que ce problème de performance venait de mon OS
non-déterministe (ie. Vista) mais non, le problème venait bien de Visual
Studio.&lt;/p&gt;
&lt;p&gt;Le problème est apparu dans les cas suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisation d'un &amp;quot;gros&amp;quot; &lt;strong&gt;Dataset&lt;/strong&gt; typé&lt;/li&gt;
&lt;li&gt;utilisation d'une grosse référence de &lt;strong&gt;Web Service&lt;/strong&gt;
(ReportService2006.asmx vous connaissez ?)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Après quelques investigations, j'ai trouvé d'autres personnes avec le même
problème d'intellisense que moi. C'est bien un bug de Visual Studio 2008; la
preuve ici &lt;a href="http://support.microsoft.com/default.aspx/kb/946344/en-us"&gt;http://support.microsoft.com/default.aspx/kb/946344/en-us&lt;/a&gt; et
ici &lt;a href="http://www.chadgreen.com/post/2008/02/Visual-Studio-2008-Performance-Issues.aspx"&gt;
http://www.chadgreen.com/post/2008/02/Visual-Studio-2008-Performance-Issues.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Heureusemet, un &lt;strong&gt;hotfix&lt;/strong&gt; est disponible :&lt;/p&gt;
&lt;p&gt;&lt;a href="https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=11026&amp;amp;wa=wsignin1.0"&gt;
https://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=11026&amp;amp;wa=wsignin1.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voila, mes problèmes sont maintenant résolus. Et j'ai pu rassurer mes
clients sur le choix de Visual Studio 2008 &lt;img src="/themes/default/smilies/smile.png" alt=":-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/j3zuychjh3A" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/21/Intellisense-tres-lente-dans-Visual-Studio-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/222987</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/21/Intellisense-tres-lente-dans-Visual-Studio-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Migrer un cube Analysis Services 2000 vers 2005</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/M4dX-cXHSKU/Migrer-un-cube-Analysis-Services-2000-vers-2005" rel="alternate" type="text/html" title="Migrer un cube Analysis Services 2000 vers 2005" />
    <id>urn:md5:f3dfbeec66c5c46b00a24fa9fcc56f30</id>
    <updated>2008-03-16T12:46:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Analysis Services</dc:subject><dc:subject>SQL Server 2000</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SSAS</dc:subject>    
    <content type="html">    &lt;p&gt;Le propos de ce billet n'est pas de fournir un tutoriel complet sur la
migration de cubes entre AS 2000 et 2005 mais juste de présenter les méthodes
pour le faire. Je ne présenterai que les points d'entrée, je ne rentrerai pas
dans le détails des incompatibilités entre les versions.&lt;/p&gt;
&lt;h3&gt;Méthode 1 : In-place upgrade&lt;/h3&gt;
&lt;p&gt;C'est la méthode qui paraît la plus simple mais qui pour moi s'avère la plus
risquée. En effet, j'ai toujours l'impression de tout miser sur un coup de
dé.&lt;/p&gt;
&lt;p&gt;J'appelle cette méthode la &lt;em&gt;Next-&amp;gt;Next-&amp;gt;Next&lt;/em&gt;, car c'est tout
simplement le setup d'installation de SQL Server 2005 qui va effectuer la
migration du cube en 2005 et faire la bascule en redémarrant le service.
Le processus de migration est équivalent à la méthode présentée ci-dessous sauf
que tout est automatisé. La coupure de service est donc assez réduite (hormis
le fait qu'il faille refaire une process du cube).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Avantages&lt;/ins&gt;&lt;/strong&gt; : pas de modification des clients,
courte coupure de service&lt;br /&gt;
&lt;strong&gt;&lt;ins&gt;Inconvénients&lt;/ins&gt;&lt;/strong&gt; : risque d'incompatibilités&lt;/p&gt;
&lt;p&gt;PS : utilisez l'&lt;strong&gt;Upgrade Advisor&lt;/strong&gt; de SQL Server 2005 pour
avoir un aperçu des problèmes que vous pourriez rencontrer.&lt;/p&gt;
&lt;h3&gt;Méthode 2 : la migration&lt;/h3&gt;
&lt;p&gt;Contrairement à ce qu'on pourrait penser, la migration n'est pas une méthode
compliquée. On ne doit pas refaire complètement ses cubes. Un assistant livré
avec Analysis Services 2005 permet de monter un cube à partir des méta-données
d'un cube sous 2000.&lt;/p&gt;
&lt;p&gt;Cet assistant s'appelle le &lt;strong&gt;MigrationWizard.exe&lt;/strong&gt; et se trouve
dans &lt;em&gt;%programfiles%\Microsoft SQL
Server\90\Tools\Binn\VSShell\Common7\IDE&lt;/em&gt;.&lt;br /&gt;
&lt;img style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/SQL/migration-ssas-2000-to-2005.png" width="320" /&gt;On y accède aussi dans Management Studio avec un clic-droit sur
l'instance Analysis Service 2005 comme présenté dans ce screenshot.&lt;/p&gt;
&lt;p&gt;L'assistant est très intuitif et le résultat est très bien (mis à part les
incompatibilités connues).&lt;br /&gt;
Il ne reste plus qu'à ouvrir notre nouveau cube dans Business Intelligence
Development Studio (oui, je sais, Visual Studio) pour apporter si besoin des
petits correctifs et le tour est joué.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Avantages&lt;/ins&gt;&lt;/strong&gt; : simplicité, on maîtrise le passage
entre les versions&lt;br /&gt;
&lt;strong&gt;&lt;ins&gt;Inconvénients&lt;/ins&gt;&lt;/strong&gt; : changement de la chaîne de
connexion des clients&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Le choix de la méthode dépend de nombreux facteurs comme les utilisateurs et
l'utilisation qu'ils font du cube, les données sources, la volumétrie, la
conception initiale sous 2000, les incompatibilités remontées par l'Upgrade
Advisor... Dans tous les cas, une migration se planifie et se prépare :
&lt;strong&gt;audit, test, test, test, migration&lt;/strong&gt; !&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/M4dX-cXHSKU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/16/Migrer-un-cube-Analysis-Services-2000-vers-2005#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/221208</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/16/Migrer-un-cube-Analysis-Services-2000-vers-2005</feedburner:origLink></entry>
    
  <entry>
    <title>Il y a tout dans la BDC 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/rj5Wof9Mmo0/Il-y-a-tout-dans-la-BDC-2008" rel="alternate" type="text/html" title="Il y a tout dans la BDC 2008" />
    <id>urn:md5:16e05682d00ce9ff62e5e500b3ea3a26</id>
    <updated>2008-03-13T12:31:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>Bewise</dc:subject><dc:subject>Bewise Developer Conference</dc:subject>    
    <content type="html">    &lt;p&gt;...&lt;strong&gt;SQL Server 2008&lt;/strong&gt;, &lt;strong&gt;Virtual Earth&lt;/strong&gt;,
&lt;strong&gt;Linq&lt;/strong&gt;, &lt;strong&gt;Silverlight 2.0&lt;/strong&gt;, &lt;strong&gt;MOSS&lt;/strong&gt;,
&lt;strong&gt;Nova&lt;/strong&gt;, &lt;strong&gt;Team System&lt;/strong&gt;, &lt;strong&gt;WPF&lt;/strong&gt;,
&lt;strong&gt;Performance Point&lt;/strong&gt;, &lt;strong&gt;Sync Services&lt;/strong&gt;, ... Toutes
les nouvelles technologies se trouvent à la &lt;strong&gt;Bewise Developer
Conference&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Et niveau marketing, l'équipe commerciale de Bewise s'est
surpassée. Séquence...autopromo.&lt;/p&gt;
&lt;p&gt;&lt;a title="BDC 2008 - Les coulisses 3" href="http://video.msn.com/video.aspx?vid=342d5812-698d-464a-8974-281423c17421" target="_new"&gt;&lt;img height="84" alt="BDC 2008 - Les coulisses 3" src="http://img4.catalog.video.msn.com/Image.aspx?uuid=342d5812-698d-464a-8974-281423c17421&amp;amp;w=112&amp;amp;h=84" width="112" border="0" /&gt;&lt;br /&gt;
BDC 2008 - Les coulisses 3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Toutes les coulisses : &lt;a href="http://www.bewise.fr/bdc2008/actualite.aspx"&gt;http://www.bewise.fr/bdc2008/actualite.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/rj5Wof9Mmo0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/13/Il-y-a-tout-dans-la-BDC-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/220303</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/13/Il-y-a-tout-dans-la-BDC-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise Developer Conference 2008 : c'est parti !!</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/pQslIqtfOPw/Bewise-Developer-Conference-2008-%3A-cest-parti" rel="alternate" type="text/html" title="Bewise Developer Conference 2008 : c'est parti !!" />
    <id>urn:md5:03751c7ebe82a254be1644da8d01aa19</id>
    <updated>2008-03-11T00:01:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>BDC2008</dc:subject><dc:subject>Bewise</dc:subject><dc:subject>Bewise Developer Conference</dc:subject>    
    <content type="html">    &lt;p&gt;Et voila, la nouvelle édition de la &lt;strong&gt;Bewise Developer
Conference&lt;/strong&gt; est sur les rails. C'est l'événement informatique de
référence autour des technos Microsoft dans tout le sud-ouest et plus
particulièrement à &lt;strong&gt;Toulouse&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Reservez dès maintenant la date du &lt;strong&gt;10 avril&lt;/strong&gt; dans vos
agendas pour venir voir toute l'équipe de Bewise assistée de quelques speakers
Microsoft.&lt;br /&gt;
Toutes les informations son sur le site de la Bewise : &lt;a href="http://www.bewise.fr/BDC2008/?f=d50886ea-9d61-4544-9ffc-481d90f79933"&gt;http://www.bewise.fr/bdc2008/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="150" alt="" src="http://www.bewise.fr/bdc2008/img/BDC2008.jpg" width="444" /&gt;&lt;/p&gt;
&lt;p&gt;En plus, la BDC aura lieu cette année dans un lieu toulousain mythique : le
&lt;strong&gt;stade Ernest Wallon.&lt;/strong&gt; &lt;a href="http://www.bewise.fr/bdc2008/Default.aspx?f=d50886ea-9d61-4544-9ffc-481d90f79933" hreflang="fr"&gt;Inscrivez vous dès maintenant&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/pQslIqtfOPw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/11/Bewise-Developer-Conference-2008-%3A-cest-parti#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/217366</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/11/Bewise-Developer-Conference-2008-%3A-cest-parti</feedburner:origLink></entry>
    
  <entry>
    <title>Ne faites pas confiance au designer de requête</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/aiDQnzLS5D0/Ne-faites-pas-confiance-au-designer-de-requete" rel="alternate" type="text/html" title="Ne faites pas confiance au designer de requête" />
    <id>urn:md5:f7f91118f2480779df42d19991bb204e</id>
    <updated>2008-03-09T10:08:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;Chez presque tous mes clients, tout le monde utilise le &lt;strong&gt;Query
Designer&lt;/strong&gt; pour écrire un SELECT en T-SQL, que ce soit pour faire
une vue, une simple recherche ou encore pour créer un Dataset dans Reporting
Services. Nombre de mes collègues utilise cet outil également.&lt;/p&gt;
&lt;p&gt;A chaque fois je fais la même remarque qui me fait passer pour un vieux con
has been :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Evitez d'utiliser le designer de requête ou bien refaite une passe sur
le T-SQL généré.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Mes arguments étant les suivants : ordre des jointures, lisibilité du code
généré et une expérience avec la bête ayant développée ma mauvaise impression à
son égard.&lt;/p&gt;
&lt;p&gt;Mais depuis SQL Server 2005, j'ai dû souvent avaler mon chapeau car la
qualité de l'optimiseur de requêtes faisait passer mon argumentaire pour un
discours de bonimenteur.&lt;/p&gt;
&lt;p&gt;Mais j'ai enfin trouvé un cas reproductible où le designer de requête ne
ramène pas le résultat escompté et où l'optimiseur de requêtes ne peut pas
corriger le tir. En plus, pour appuyer mon discours, je tiens à préciser que
cette imprécision du designer a conduit à des erreurs dans des rapports de
synthèse.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Explication de texte :&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nous allons travailler avec AdventureWorks. Mon besoin est le suivant :
&lt;em&gt;je veux récupérer les produits bleus et, si j'ai l'info, afficher leur prix
en juillet 2002&lt;/em&gt;. Il y a 26 produits bleus dans la table Product.&lt;/p&gt;
&lt;p&gt;&lt;img height="121" alt="" src="http://blog.djeepy1.net/public/SQL/.query-designer-left-join_m.jpg" width="448" /&gt;&lt;/p&gt;
&lt;p&gt; Voici la requête fournie par l'éditeur de requête :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;SELECT Production.Product.ProductNumber,
Production.Product.Name, Production.ProductCostHistory.StandardCost AS
Cost200112&lt;br /&gt;
FROM Production.Product LEFT OUTER JOIN&lt;br /&gt;
Production.ProductCostHistory ON Production.Product.ProductID =
Production.ProductCostHistory.ProductI&lt;br /&gt;
WHERE (Production.ProductCostHistory.StartDate = CONVERT(DATETIME, '2002-07-01
00:00:00', 102)) AND&lt;br /&gt;
(Production.Product.Color = N'Blue')&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Et en résultat, je n'ai qu'un seul produit bleu au lieu de 26. Le problème
est que le designer ajoute la condition de la date à l'ensemble du jeu de
résultat, or s'il n'y a pas de prix disponible à la date demandée, la valeur
sera NULL à cause de la jointure externe.&lt;/p&gt;
&lt;p&gt;Pour corriger le problème, il faut remonter la condition sur la jointure
pour filter la table ProductCostHistory avant de faire la jointure.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;ON Production.Product.ProductID =
Production.ProductCostHistory.ProductID AND&lt;br /&gt;
(Production.ProductCostHistory.StartDate = CONVERT(DATETIME, '2002-07-01
00:00:00', 102))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; Ainsi, le LEFT JOIN est correctement interprété à l'exécution et on
obtient bien les 26 produits bleus. On utilisait cette  technique
pour optimiser sous SQL Server 2000 car il arrivait que l'optimiseur ordonne
mal les opérations dans le plan d'exécution.&lt;/p&gt;
&lt;p&gt;&lt;img height="105" alt="" src="http://blog.djeepy1.net/public/SQL/left-join-result.png" width="338" /&gt;&lt;/p&gt;
&lt;p&gt;Si on réouvre la requête avec l'éditeur, il représente bien la condition
mais de façon assez... bizarre. D'ailleurs, je ne saurais même
pas le refaire à la souris. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/.designer-left-join-fixed_m.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Aussi, le designer écrit les tables de la clause FROM dans l'ordre où vous
posez les tables sur la surface de travail, ce qui lui fait mettre un RIGHT
JOIN au lieu d'une lecture plus naturelle avec un LEFT JOIN. Ceci entraîne une
maintenance plus complexe, déjà que se plonger dans une grosse requête n'est
pas forcément trivial...&lt;/p&gt;
&lt;p&gt;Autre problème que j'ai rencontré quelques fois, quand il y a trop de
jointures, LEFT, RIGHT et INNER, en essayant de les mettre bout à bout il
arrive qu'il se rate sur le résultat global (bien souvent avec des données non
remontées) :-(.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;En conclusion&lt;/ins&gt;&lt;/strong&gt;, même si le designer vous fait
gagner du temps de rédaction, pensez à vérifier les jointures (ordre,
condition) et en particulier les jointures externes.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/aiDQnzLS5D0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/09/Ne-faites-pas-confiance-au-designer-de-requete#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/215200</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/09/Ne-faites-pas-confiance-au-designer-de-requete</feedburner:origLink></entry>
    
  <entry>
    <title>Connection String et Application Name</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/EnDHlmfgu6U/Connection-String-et-Application-Name" rel="alternate" type="text/html" title="Connection String et Application Name" />
    <id>urn:md5:a9c7254f0d01a93bd1163bc1054801b7</id>
    <updated>2008-03-06T12:29:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Je voudrais passer un message à tous les développeurs. Dans tous vos
développements, lorsque vous avez des chaînes de connexion...&lt;/p&gt;
&lt;h3&gt;utilisez la propriété &amp;quot;application name&amp;quot; !!&lt;/h3&gt;
&lt;p&gt; &lt;img style="FLOAT: right; MARGIN: 0 0 1em 1em" alt="" src="http://blog.djeepy1.net/public/SQL/.profiling_m.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;En effet, quand on profile une base de données pour auditer les performances
ou pour recenser les utilisateurs en vue d'un migration par exemple, cette
information est importante pour voir plus facilement qui fait quoi. Sinon, vous
verrez apparaître dans vos traces l'application &lt;strong&gt;.NET SqlClient Data
Provider&lt;/strong&gt; qui est tout simplement la valeur par défaut de ADO.NET.&lt;/p&gt;
&lt;p&gt;Pour pallier à cela, voilà à quoi doit ressembler votre chaîne de connexion
:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Data Source=SERVER;Initial Catalog=DATABASE;Integrated
Security=SSPI;&lt;strong&gt;Application Name=www.bewise.fr&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Merci d'avance pour les gens qui travaillent sur la BD.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/EnDHlmfgu6U" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/06/Connection-String-et-Application-Name#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/217288</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/06/Connection-String-et-Application-Name</feedburner:origLink></entry>
    
  <entry>
    <title>SSDS : SQL Server Data Services</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/IpQ3n-NEx2A/SSDS-%3A-SQL-Server-Data-Services" rel="alternate" type="text/html" title="SSDS : SQL Server Data Services" />
    <id>urn:md5:24f2b1dfc2e6fa72dc1f0bb038f5c0d7</id>
    <updated>2008-03-05T21:35:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Services</dc:subject>    
    <content type="html">    &lt;p&gt;Ce soir, il y a eu une annonce au &lt;strong&gt;MIX'08&lt;/strong&gt; de Las Vegas d'un
nouveau produit dans la famille SQL Server :&lt;/p&gt;
&lt;h3&gt;SQL Server Data Services&lt;/h3&gt;
&lt;p&gt;Kezako. C'est une base de données en ligne, un SQL Server en mode ASP. Cela
permet de démarrer une activité et de disposer d'une base de données rapidement
sans avoir à trouver une hébergeur, installer un serveur, etc. On paie à
l'usage.&lt;/p&gt;
&lt;p&gt;La techno semble séduisante et mystérieuse. Au programme : un requêtage en
&lt;strong&gt;LINQ&lt;/strong&gt;, de la recherche &lt;strong&gt;Full-Text&lt;/strong&gt;, une
communication via &lt;strong&gt;SOAP&lt;/strong&gt;, un &lt;strong&gt;stockage illimité&lt;/strong&gt;
(moyennant des $$) et un &lt;strong&gt;SLA&lt;/strong&gt; sur de la
haute-disponibilité...&lt;/p&gt;
&lt;p&gt;Une chose m'intrigue, dans la page de présentation du produit on peut
lire :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Years of experience running these technologies in-house.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;C'est qu'ils savent bien garder un secret chez MS. Et dire que moi je
critiquais l'ouverture de Endpoint HTTP dans un serveur de données, peut-être
était-ce ceci la finalité. Ca me fait penser à &lt;a href="http://www.sqlskills.com/blogs/bobb/2008/03/04/FeatureSynergyInSQLServer2008.aspx" hreflang="fr"&gt;ce bon article&lt;/a&gt; de Bob Beauchemin sur les synergies de
développement chez MS.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Toutes les infos et pour s'enregistrer dans le programme beta
:&lt;/ins&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;a href="http://www.microsoft.com/sql/dataservices/default.mspx"&gt;http://www.microsoft.com/sql/dataservices/default.mspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je vous laisse, je vais revendre mes serveurs sur eBay.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/.SSDS_m.jpg" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/IpQ3n-NEx2A" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/03/05/SSDS-%3A-SQL-Server-Data-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/217136</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/03/05/SSDS-%3A-SQL-Server-Data-Services</feedburner:origLink></entry>
    
  <entry>
    <title>Microsoft Certified Professional</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/GgGRCun2Omw/Microsoft-Certified-Professional" rel="alternate" type="text/html" title="Microsoft Certified Professional" />
    <id>urn:md5:ca31338607b62140406d1fa1fb19bd24</id>
    <updated>2008-02-28T18:40:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Perso</dc:subject>
        <dc:subject>Certifications</dc:subject>    
    <content type="html">    &lt;p&gt;Sur une idée originale de mon ami &lt;a href="http://christophelaporteatwork.spaces.live.com/Blog/cns!2539BA92E95003A1!244.entry" hreflang="fr"&gt;Christophe&lt;/a&gt;, je publie ici tout mon pedigree :&lt;/p&gt;
&lt;h4&gt;Microsoft Certification Status&lt;/h4&gt;
&lt;table cellspacing="0" cellpadding="0" width="100%" border="0"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width="30%"&gt;&lt;ins&gt;Credential&lt;/ins&gt;&lt;/td&gt;
&lt;td width="50%"&gt;&lt;ins&gt;Certification / Version&lt;/ins&gt;&lt;/td&gt;
&lt;td width="20%"&gt;&lt;ins&gt;Date Achieved&lt;/ins&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;&lt;strong&gt;Microsoft Certified IT Professional&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Sep 28, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;Business Intelligence Developer&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Sep 28, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;&lt;strong&gt;Microsoft Certified Professional
Developer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;May 16, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;Enterprise Application Developer&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;May 16, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top"&gt;&lt;strong&gt;Microsoft Certified Technology
Specialist&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Feb 15, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;Microsoft® SQL Server™ 2005 Business Intelligence
Development&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Sep 28, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;.Net Framework 2.0: Distributed Applications&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;May 16, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;SQL Server 2005&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Mar 20, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;.Net Framework 2.0: Web Applications&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Feb 15, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td valign="top"&gt;&lt;em&gt;.Net Framework 2.0: Windows Applications&lt;/em&gt;&lt;/td&gt;
&lt;td valign="top" align="right"&gt;Feb 15, 2007&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/GgGRCun2Omw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/28/Microsoft-Certified-Professional#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/215001</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/28/Microsoft-Certified-Professional</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Sever 2008 : Change Data Capture</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/eFxHOZoGf9M/SQL-Sever-2008-%3A-Change-Data-Capture" rel="alternate" type="text/html" title="SQL Sever 2008 : Change Data Capture" />
    <id>urn:md5:3358c46edddfd3cef6a6571d6ca04e6a</id>
    <updated>2008-02-26T22:23:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Je viens d'écrire un article sur une des fonctionnalités de &lt;strong&gt;SQL
Server 2008&lt;/strong&gt; : le &lt;strong&gt;Change Data Capture&lt;/strong&gt; (ou CDC). Je
l'avais commencé avec la CTP2 (ça date). Il est maintenant terminé. Cet article
dresse un portrait assez complet de la fonctionnalité et propose un petit
tutoriel de mise en oeuvre.&lt;/p&gt;
&lt;p&gt;Vous pouvez le consulter sur le site de Bewise: &lt;a href="http://www.bewise.fr/SiteCollectionDocuments/Articles/article-57.doc"&gt;&lt;/a&gt;&lt;a href="http://www.bewise.fr/SiteCollectionDocuments/Articles/article-57.doc"&gt;http://www.bewise.fr/SiteCollectionDocuments/Articles/article-57.doc&lt;/a&gt; &lt;br /&gt;

Le code source est disponible &lt;a href="http://blog.djeepy1.net/public/labs/cdc/cdc_work.sql" hreflang="fr"&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Prochaine étape : l'utilisation dans un cas concret d'ETL avec SSIS.&lt;/p&gt;
&lt;p&gt;Voici un petit aperçu en ligne :&lt;/p&gt;
&lt;blockquote&gt;
&lt;h3 style="MARGIN: 24pt 0cm 0"&gt;Introduction&lt;/h3&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Le Change Data Capture (que
nous appellerons CDC) est une nouvelle fonctionnalité de SQL Server 2008.
Apparu dès la CTP2, Cet article se base sur la CTP5 et il n’est pas exclu qu’il
y ait des modifications dans les versions suivantes.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Le CDC a une orientation
initiale pour les processus d’ETL. L’objectif de CDC est d’optimiser
l’intégration des données&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt; en
requêtant directement les modifications faites sur les bases de productions,
plutôt que de comparer la source et la destination.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Bien entendu, on peut étendre
l’utilisation du CDC à de la synchronisation entre 2 bases, à de l’audit ou à
tout autre besoin nécessitant de connaître ce qu’il se passe sur une table.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Les exemples de cet article
se basent sur AdventureWorks. Nous utiliserons la table des commandes
SalesOrderHeader.&lt;/p&gt;
&lt;h3 style="MARGIN: 24pt 0cm 0"&gt;Principes de fonctionnement&lt;/h3&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Le CDC capture les
modifications qui se font sur les tables. On choisit les tables sur lesquelles
on souhaite faire la capture, toutes les modifications ne sont évidemment pas
monitorées. On peut même restreindre la capture à quelques colonnes d’une
table.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;Le CDC est un processus
asynchrone. Il fonctionne comme la réplication transactionnelle à savoir qu’un
« agent » lit le journal de transaction (transaction log) et met de
côté les modifications dans des tables spécifiques.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;C’est la (ou les)
applications « clients » qui viennent chercher les modifications. La
récupération des modifications se fait sur demande en mode pull.&lt;/p&gt;
&lt;/blockquote&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/eFxHOZoGf9M" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/26/SQL-Sever-2008-%3A-Change-Data-Capture#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/214279</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/26/SQL-Sever-2008-%3A-Change-Data-Capture</feedburner:origLink></entry>
    
  <entry>
    <title>SQL Server 2008 CTP6</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/46i_wnwWfwo/SQL-Server-2008-CTP6" rel="alternate" type="text/html" title="SQL Server 2008 CTP6" />
    <id>urn:md5:401f2949de13b8c057c35a6f4c899638</id>
    <updated>2008-02-21T12:19:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;La dernière CTP de SQL Server 2008 est enfin disponible en téléchargement.
Au programme :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;iFTS (Integrated Full-Text Search)&lt;/li&gt;
&lt;li&gt;Compression&lt;/li&gt;
&lt;li&gt;Filtres sur les index (oh oui)&lt;/li&gt;
&lt;li&gt;Audit&lt;/li&gt;
&lt;li&gt;Type SPARSE&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SQL/ctp6-features.png"&gt;&lt;img style="DISPLAY: block; MARGIN: 0 auto" alt="" src="http://blog.djeepy1.net/public/SQL/.ctp6-features_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Le lien est le suivant : &lt;a href="http://go.microsoft.com/fwlink/?LinkId=110125&amp;amp;clcid=0x409" hreflang="fr"&gt;x86&lt;/a&gt;&lt;br /&gt;
Pour les ISO ou autres versions je vous invite à consulter le site de
Microsoft.&lt;/p&gt;
&lt;p&gt;Enfin, je vais pouvoir jouer avec l'iFTS que j'ai présenté lors de ma
session aux TechDays (d'ailleurs, j'ai un post en cours pour présenter ma
session de façon epistolaire).&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/sql-2008.jpg" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/46i_wnwWfwo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/21/SQL-Server-2008-CTP6#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/212089</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/21/SQL-Server-2008-CTP6</feedburner:origLink></entry>
    
  <entry>
    <title>Insertion en masse et Triggers</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/_USTfB9-ftg/Insertion-en-masse-et-Triggers" rel="alternate" type="text/html" title="Insertion en masse et Triggers" />
    <id>urn:md5:62c03c742d3cb7aa71e75746088c440b</id>
    <updated>2008-02-17T10:36:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Integration Services</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;On m'a récemment posé cette question :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;j'ai 300.000 enregistrements à insérer et pour chaque insertion, les
triggers doivent être exécutés&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Quand on parle d'une telle volumétrie d'insertion, on pense tout
de suite à de l'&lt;strong&gt;insertion en mode BULK&lt;/strong&gt;. Pour ce faire, nous
avons à disposition :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un utilitaire en ligne de commande : &lt;strong&gt;bcp&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;l'instruction T-SQL : &lt;strong&gt;BULK INSERT&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le problème c'est que l'insertion BULK désactive les triggers par défaut.
Mais les deux méthodes proposent une option pour ré-activer les triggers.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;bcp -h &amp;quot;FIRE_TRIGGERS&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;BULK INSERT .... WITH
(FIRE_TRIGGERS)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Integration Services&lt;/strong&gt; utilise intensivement l'insertion BULK
via son composant &lt;strong&gt;OLE DB Destination&lt;/strong&gt; avec l'option
&lt;strong&gt;FastLoad&lt;/strong&gt;. Les triggers étant désactivés par défaut, il faut
les réactiver dans les options avancées du composant. Dans les propriétés, il y
en a une appelée &lt;strong&gt;FastLoadOptions&lt;/strong&gt; qui correspond au WITH de
l'instruction BULK INSERT. Il suffit juste de rajouter FIRE_TRIGGERS dans la
liste (séparé par des virgules).&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SSIS/bulk-insert-with-trigger.png" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/_USTfB9-ftg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/17/Insertion-en-masse-et-Triggers#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/210080</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/17/Insertion-en-masse-et-Triggers</feedburner:origLink></entry>
    
  <entry>
    <title>Faire un cumul avec Reporting Services</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/-Ervf6tlHvI/Faire-un-cumul-avec-Reporting-Services" rel="alternate" type="text/html" title="Faire un cumul avec Reporting Services" />
    <id>urn:md5:6af175ec4a3ae7d45475fd5ec1f84561</id>
    <updated>2008-02-16T15:17:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;h2&gt;Erratum :&lt;/h2&gt;
&lt;p&gt;J'étais fatigué (retour de TechDays ??) quand j'ai écrit cet article
car il y a une solution beaucoup plus simple (que je connaissais en plus). Je
n'ai pas voulu écouter la petite voix dans ma tête qui me disait &amp;quot;abruti,
abruti&amp;quot; quand j'ai cité la fonction Previous. Bref, la solution est :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;=RunningValue(Fields!SubTotal.Value, Sum,
Nothing)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mais je vous invite à lire la solution proposée ci-dessous car elle est
utile pour de aggrégats un peu custom (et puis pour dire que je n'ai pas gratté
pour rien).&lt;/p&gt;
&lt;h2&gt;Article Original&lt;/h2&gt;
&lt;p&gt;Dans cet article nous allons voir comment faire une &lt;strong&gt;somme cumulée
dans un rapport&lt;/strong&gt;. Le principe est simple, j'ai des ventes dans le
temps et pour chaque date, je veux le cumul depuis la première date.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reporting Services&lt;/strong&gt; n'offre pas cette fonctionnalité en
natif mais nous allons mettre en place les élements pour le suporter. Sans
vouloir gâcher la surprise, je peux déjà vous annoncer que l'on va passer par
du code .NET ajouté au rapport.&lt;/p&gt;
&lt;p&gt;Pour commencer, voyons ce que nous offre Reporting Services comme fonction
en rapport avec notre besoin. Il y a la fonction &lt;strong&gt;Previous&lt;/strong&gt; qui
permet de récupérer des données dans la ligne précédente. Cependant, cela ne
marche plus à partir de la 3eme ligne car la fonction ne remonte pas plus
haut.&lt;/p&gt;
&lt;p&gt;L'idée pour résoudre cette problématique est d'utiliser une variable qui va
tenir le cumul depuis la première ligne. A chaque ligne, on ajoute la valeur en
cours. Pour garder une variable, on doit passer par le code .NET.&lt;/p&gt;
&lt;p&gt;Pour ce faire on passe par la fenêtre de propriétés du rapport, dans
l'onglet Code.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/WindowsLiveWriter_FaireuncumulavecReportingServices_E19A_ssrs-cumul-dans-une-liste-01_1_.png"&gt;
&lt;img style="BORDER-TOP-WIDTH: 0; BORDER-LEFT-WIDTH: 0; BORDER-BOTTOM-WIDTH: 0; BORDER-RIGHT-WIDTH: 0" src="http://blog.djeepy1.net/public/WindowsLiveWriter_FaireuncumulavecReportingServices_E19A_ssrs-cumul-dans-une-liste-01_1_.png" width="300" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Oubliez le confort de l'Intellisense, vous n'êtes pas dans Visual Studio,
l'éditeur ressemble plutôt à Notepad. En espérant que &lt;strong&gt;Reporting
Services 2008&lt;/strong&gt; apporte des améliorations dans ce sens (comme pour
Integration Services). En plus, vous êtes limité uniquement à VB.NET comme
langage.&lt;/p&gt;
&lt;p&gt;Quant au code en lui-même il est assez simple. On garde un
variable &lt;strong&gt;Shared&lt;/strong&gt; (&lt;strong&gt;static&lt;/strong&gt;) et on fournit une
petite fonction pour mettre à jour et retourner le cumul.  Ici
j'ai choisi le type Decimal car je souhaite retourner une somme d'argent. Rien
de plus simple :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Shared cumul As Decimal = 0.0&lt;br /&gt;
Public Shared Function GetCumulativeSum(ByVal currentValue As Decimal) As
Decimal&lt;br /&gt;
  cumul += currentValue&lt;br /&gt;
  Return cumul&lt;br /&gt;
End Function&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Reste à utiliser ce code dans le rapport. Pour cela, on utilise une
&lt;strong&gt;Expression&lt;/strong&gt; dans un élément de notre DataRegion :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;
&lt;code&gt;=Code!GetCumulativeSum(Fields!SalesAmount.Value)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://blog.djeepy1.net/public/WindowsLiveWriter_FaireuncumulavecReportingServices_E19A_ssrs-cumul-dans-une-liste-02_2_.png"&gt;&lt;img style="BORDER-RIGHT: 0; BORDER-TOP: 0; BORDER-LEFT: 0; BORDER-BOTTOM: 0" height="169" src="http://blog.djeepy1.net/public/WindowsLiveWriter_FaireuncumulavecReportingServices_E19A_ssrs-cumul-dans-une-liste-02_2_.png" width="330" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un des problèmes est que l'on ne peut pas utiliser cette technique de cumul
à différents endroits. En effet, on ne repart jamais à zéro. Plutôt que de
tenter de réinitialiser le cumul dans la première ligne d'une DataRegion, on
préfèrera l'utilisation d'un &lt;strong&gt;dictionnaire&lt;/strong&gt; dans le
&lt;strong&gt;Custom Code&lt;/strong&gt;. Voici le code utilisant un dictionnaire :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Shared cumuls As
System.Collections.Generic.Dictionary(Of String, Decimal) = _&lt;br /&gt;
     New System.Collections.Generic.Dictionary(Of String,
Decimal)&lt;br /&gt;
Public Shared Function GetCumulativeSum(ByVal currentValue As Decimal, ByVal
sumKey As String) As Decimal&lt;br /&gt;
  If Not cumuls.ContainsKey(sumKey) Then&lt;br /&gt;
    cumuls.Add(sumKey, 0.0)&lt;br /&gt;
  End If&lt;br /&gt;
  cumuls.Item(sumKey) += currentValue&lt;br /&gt;
  Return cumuls.Item(sumKey)&lt;br /&gt;
End Function&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Dans le rapport, on utilisera l'expression suivante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;
&lt;code&gt;=Code!GetCumulativeSum(Fields!SalesAmount.Value, &amp;quot;salesInChart&amp;quot;)&lt;br /&gt;
...&lt;br /&gt;
=Code!GetCumulativeSum(Fields!TaxAmount.Value, &amp;quot;taxInMatrix&amp;quot;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Note&lt;/ins&gt;&lt;/strong&gt; : pour faire du C#, il faudra coder la
fonction dans une assembly et la référencer dans le rapport.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/-Ervf6tlHvI" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/16/Faire-un-cumul-avec-Reporting-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/209869</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/16/Faire-un-cumul-avec-Reporting-Services</feedburner:origLink></entry>
    
  <entry>
    <title>Compatibilité Management Studio 2008 et SQL Server 2005</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/tPqkww1ylD4/Compatibilite-Management-Studio-2008-et-SQL-Server-2005" rel="alternate" type="text/html" title="Compatibilité Management Studio 2008 et SQL Server 2005" />
    <id>urn:md5:fa1cd7fb2da86063b624eac03b609ee1</id>
    <updated>2008-02-15T09:17:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;J'en avais assez de travailler sur &lt;strong&gt;SQL Server 2008&lt;/strong&gt; sur une
VPC alors j'ai sauté le pas en essayant de l'installer sur mon Vista
classique. Pour une raison que j'ignore, la première installation s'est mal
passée dans le sens ou il était impossible d'xécuter une requête sur aucune des
instances (2005 &amp;amp; 2008).&lt;/p&gt;
&lt;p&gt;Je tente un tout bête uninstall / install et miracle, tout marche bien. Les
2 versions cohabitent super bien et l'effet que j'attendais :&lt;/p&gt;
&lt;p&gt;J'ai l'&lt;strong&gt;intellisense sous SQL Server 2005&lt;/strong&gt; grâce à Management
Studio 2008 qui arrive à travailler avec une base de données de version
inférieure.&lt;/p&gt;
&lt;p&gt;Je n'ai évidemment pas tout testé : Full-Text, Broker, connexion IP, etc.
mais je vous remonterais les problèmes si j'en rencontre.&lt;/p&gt;
&lt;p&gt;A noter que je n'ai rien installé des outils de Business Intelligence (je
suis sur un projet et je ne veux rien casser), je vais faire des essais et je
reviendrai dessus dans un prochain post.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/tPqkww1ylD4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/15/Compatibilite-Management-Studio-2008-et-SQL-Server-2005#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/209266</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/15/Compatibilite-Management-Studio-2008-et-SQL-Server-2005</feedburner:origLink></entry>
    
  <entry>
    <title>Récupérer uniquement la date d'un champ DateTime</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/9hgHh7FUIVY/Recuperer-uniquement-la-date-dun-champ-DateTime" rel="alternate" type="text/html" title="Récupérer uniquement la date d'un champ DateTime" />
    <id>urn:md5:b1ab7b4b11067eb63f32aeefc25a2aed</id>
    <updated>2008-02-14T12:38:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;En attendant l'utilisation massive du champ Date (juste la date) de SQL
Server 2008, il faut ruser pour récupérer une date sans les heures/minutes
depuis un champ DateTime.&lt;/p&gt;
&lt;p&gt;2 méthodes s'offrent à nous :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;Cast(DATEDIFF(day, 0, monchampDateTime) As DateTime)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Convert(varchar(20), monchampDateTime, 102)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Le premier est plus performant que le second. Le second renvoie un type
string.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/9hgHh7FUIVY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/14/Recuperer-uniquement-la-date-dun-champ-DateTime#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/208960</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/14/Recuperer-uniquement-la-date-dun-champ-DateTime</feedburner:origLink></entry>
    
  <entry>
    <title>TechDays, c'est fini</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/cpJbfo_5Of0/TechDays-cest-fini" rel="alternate" type="text/html" title="TechDays, c'est fini" />
    <id>urn:md5:7329edcd9fa6d0b52db1a4c07e9db7a1</id>
    <updated>2008-02-14T00:31:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>TechDays 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Juste un post rapide pour marquer la fin des TechDays. Je ferai un post plus
important dans quelques jours pour vous relater cette première expérience des
TechDays.&lt;/p&gt;
&lt;p&gt;Notre session (à &lt;a href="http://www.dotmim.com/blogs/mim/default.aspx" hreflang="fr"&gt;Seb&lt;/a&gt; et moi) c'est bien passée, des questions
intéressantes que je relaierai ici dans quelques temps.&lt;/p&gt;
&lt;p&gt;Un coucou aux gens croisés sur place : Eric, Lionel, Philippe, Nicolas (du
stand EMC), Sébastien de Criteo, etc.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/techdays/techdays-2008.JPG"&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/techdays/.techdays-2008_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS : je re-râle après les grévistes de l'aviation civile... nous avons
mis 7h30 pour revenir à Toulouse :-( &lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/cpJbfo_5Of0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/14/TechDays-cest-fini#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/209229</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/14/TechDays-cest-fini</feedburner:origLink></entry>
    
  <entry>
    <title>Coup de Gueule &amp; TechDays</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/DTAWDsnId88/Coup-de-Gueule-TechDays" rel="alternate" type="text/html" title="Coup de Gueule &amp; TechDays" />
    <id>urn:md5:bd1ed14ab050344d3dad2d7b04c87acd</id>
    <updated>2008-02-11T22:31:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject><dc:subject>TechDays 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Mon vol pour Paris est annulé...merci la CGT !! (Et encore je suis poli).
Donc il fallait que je râle publiquement. C'est fait ! Je dois me rabattre sur
la SNCF (ce qui n'est pas forcément mieux).&lt;/p&gt;
&lt;p&gt;Je vais tout faire pour être présent à ma session de mercredi. Ne t'inquiète
pas Seb, je ne te laisserai pas tout seul !&lt;/p&gt;
&lt;p&gt;Donc, à tous, &lt;strong&gt;J-2&lt;/strong&gt; pour la session sur les fonctionnalités
&lt;strong&gt;FileStream&lt;/strong&gt;, &lt;strong&gt;Remote BLOB&lt;/strong&gt;  et
&lt;strong&gt;iFTS&lt;/strong&gt; de &lt;strong&gt;SQL Server 2008&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href="http://galilee.microsoft.fr/TechDays2008/Session.aspx?CellID=171922f0-b4d4-4f9d-8a3d-7bee3bf1feaa"&gt;
Gestion des textes et des images avec SQL Server 2005 et 2008 : XML, FTS,
FileStream, Gestion des BLOB...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;RDV au palais des congrès !!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/DTAWDsnId88" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/11/Coup-de-Gueule-TechDays#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/208156</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/11/Coup-de-Gueule-TechDays</feedburner:origLink></entry>
    
  <entry>
    <title>TABLESAMPLE, une alternative à ORDER BY NEWID()</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/wZkAe1EOOrs/TABLESAMPLE" rel="alternate" type="text/html" title="TABLESAMPLE, une alternative à ORDER BY NEWID()" />
    <id>urn:md5:6885ebad4e054f23b5cf160c2759acbe</id>
    <updated>2008-02-02T18:03:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;Juste un petit post pour présenter une instruction TSQL utile à connaître.
Quand vous voulez obtenir un jeu d'enregistrement d'une table de façon
aléatoire, il était commode d'utiliser la fonction &lt;strong&gt;NEWID&lt;/strong&gt; (qui
génère un GUID) dans une &lt;strong&gt;clause ORDER BY&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;select top 1000 * from person.contact order by newid()&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le problème c'est que l'on arrive vite à des performances médiocres, surtout
avec des volumes de données importants. L'instruction
&lt;strong&gt;TABLESAMPLE&lt;/strong&gt; sert à récupérer un échantillon d'enregistrements
de façon aléatoire et un petit bench nous montre que cette technique enterre la
première.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;select * from person.contact tablesample (1000 rows)&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;Remarques&lt;/h4&gt;
&lt;p&gt;&lt;ins&gt;L'instruction TABLESAMPLE ne ramène pas le nombre exact
d'enregistrement&lt;/ins&gt; : c'est parce que le moteur de requêtes choisit
aléatoirement des pages (8ko) de l'index clustered. Et une fois une page
choisie, il remonte tous les enregistrements qui s'y trouvent. En fonction de
la fragmentation et de la taille de l'enregistrement, vous aurez plus ou moins
de lignes remontées.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;L'instruction TABLESAMPLE fait toujours un SCAN dans le plan
d'exécution&lt;/ins&gt; : c'est parce que le requêteur attribue une valeur aléatoire
à chaque page de l'index clustered ou HEAP et choisit ensuite les
pages en fonctions de ces valeurs. Le scan est donc obligatoire.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS : merci à Matthieu de Bordeaux de m'en avoir parlé&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/wZkAe1EOOrs" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/29/TABLESAMPLE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/201990</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/29/TABLESAMPLE</feedburner:origLink></entry>
    
  <entry>
    <title>Notification Services est mort ?</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/xoBI1_tqcRI/Notification-Services-est-mort" rel="alternate" type="text/html" title="Notification Services est mort ?" />
    <id>urn:md5:71ca74dc710c675f04d6cf86d099e874</id>
    <updated>2008-02-02T11:36:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Notification Services</dc:subject><dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Beaucoup de monde me pose des questions en formation ou en consulting sur
Notification Services. Apparemment, la news circule mal donc je la relaye via
mon blog :&lt;/p&gt;
&lt;h3&gt;Notification Services ne se trouvera pas dans SQL Server 2008.&lt;/h3&gt;
&lt;p&gt;On ne sait pas grand chose sinon ceci :&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 35pt"&gt;&lt;q&gt;&lt;em&gt;5.0 Deprecated Features&lt;/em&gt;&lt;/q&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 35pt"&gt;&lt;em&gt;This section covers SQL Server 2005 features
that are no longer included with SQL Server 2008.&lt;/em&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 35pt"&gt;&lt;em&gt;5.1 SQL Server Notification Services Removed
from SQL Server 2008&lt;/em&gt;&lt;/p&gt;
&lt;p style="MARGIN-LEFT: 35pt"&gt;&lt;em&gt;SQL Server Notification Services will not be
included as a component of SQL Server 2008, but will continue to be supported
as part of the SQL Server 2005 product support life-cycle. Moving forward,
support for key notification scenarios will be incorporated into SQL Server
Reporting Services. Existing Reporting Services functionality, such as data
driven subscriptions, addresses some of the notification requirements. Features
to support additional notification scenarios may be expected in future
releases.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Attention, ne confondez pas avec les &lt;strong&gt;Query Notifications&lt;/strong&gt;
qui sont à la base du &lt;strong&gt;SqlDependency&lt;/strong&gt; et
&lt;strong&gt;SqlNotificationRequest&lt;/strong&gt;. D'ailleurs, j'ai un petit post en
préparation sur le sujet.&lt;/p&gt;
&lt;p&gt;Merci à Christian pour avoir transmis l'info sur la communauté française. Au
passage, petite pub pour son blog qui est une mine d'infos sur SQL Server :
&lt;a href="http://blogs.codes-sources.com/christian/archive/2007/08/02/sql-server-adieu-notification-services.aspx"&gt;
http://blogs.codes-sources.com/christian/archive/2007/08/02/sql-server-adieu-notification-services.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/xoBI1_tqcRI" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/02/01/Notification-Services-est-mort#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/203104</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/02/01/Notification-Services-est-mort</feedburner:origLink></entry>
    
  <entry>
    <title>Vues indexées et optimisation</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/LcCat1XWN4Q/Vues-indexees-et-optimisation" rel="alternate" type="text/html" title="Vues indexées et optimisation" />
    <id>urn:md5:1a8888d77fafd6faf147051c9e63140f</id>
    <updated>2008-01-29T22:50:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Index</dc:subject><dc:subject>SQL Server 2005</dc:subject><dc:subject>vues</dc:subject>    
    <content type="html">    &lt;p&gt;Les vues indexées sont un excellent vecteur d'optimisation et j'en suis un
des ardents défenseurs !! Je les utilise depuis SQL Server 2000 pour optimiser
des requêtes un peu complexes ou fréquemment utilisées. Le but de ce post n'est
pas de détailler les vues indexées mais de présenter un problème qui m'est
arrivé.&lt;/p&gt;
&lt;p&gt;Lors d'une formation SQL Server, je présente comme d'habitude l'intérêt des
vues indexées et on décide de faire une petite démo avec AdventureWorks. L'idée
est d'optimiser la récupération des descriptions de produits. La vue est la
suivante : &lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Create View [dbo].[vProdDesc]&lt;br /&gt;
WITH SCHEMABINDING&lt;br /&gt;
as&lt;br /&gt;
select p.name, d.description&lt;br /&gt;
from production.product p&lt;br /&gt;
    inner join Production.ProductModelProductDescriptionCulture
dc&lt;br /&gt;
        on dc.ProductModelID =
p.ProductModelID&lt;br /&gt;
        and cultureid = 'fr'&lt;br /&gt;
    inner join production.productdescription d&lt;br /&gt;
        on d.ProductDescriptionID =
dc.ProductDescriptionID&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Je pose un index &lt;strong&gt;UNIQUE&lt;/strong&gt; et &lt;strong&gt;CLUSTERED&lt;/strong&gt; sur
la vue et pour montrer l'utilisation de l'index j'exécute un simple SELECT sur
la vue :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select * From dbo.vProdDesc&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le plan d'exécution généré montre clairement que l'index n'est pas utilisé.
J'utilise donc tous les grigris SQL en ma possession : &lt;strong&gt;DBCC
FREEPROCCACHE&lt;/strong&gt;, &lt;strong&gt;sp_recompile&lt;/strong&gt;, &lt;strong&gt;table
hint&lt;/strong&gt;, mais rien n'y fait.&lt;/p&gt;
&lt;p&gt;Un petit tour dans l'aide pour voir si je n'ai pas zappé quelquechose et je
tombe sur une phrase annodine :&lt;/p&gt;
&lt;p&gt;&lt;q&gt;&lt;em&gt;Indexed views can be created in any edition of SQL Server 2005. In
SQL Server 2005 Enterprise Edition, the query optimizer automatically considers
the indexed view. To use an indexed view in all other editions, the NOEXPAND
table hint must be used.&lt;/em&gt;&lt;/q&gt;&lt;/p&gt;
&lt;p&gt;Je n'ai pourtant jamais utiliser ce hint pour activer des vues indexées. Et
pourtant, en l'ajoutant à ma requête, le plan d'exécution est correct et tire
bénéfice de l'index.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select * From dbo.vProdDesc WITH
(NOEXPAND)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Un coup d'oeil sur la version :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select @@version&lt;br /&gt;
&lt;br /&gt;
Microsoft SQL Server 2005 - 9.00.3054.00 (Intel X86)   Mar 23 2007
16:28:52   Copyright (c) 1988-2005 Microsoft Corporation 
Developer Edition on Windows NT 6.0 (Build 6000: )&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Conclusion&lt;/ins&gt;&lt;/strong&gt; : l'édition Developer est bien bridée
par rapport à la version Enterprise. Et l'effet de bord à cela c'est que l'on
ne peut pas utiliser de vue indexées dites &amp;quot;&lt;em&gt;techniques&lt;/em&gt;&amp;quot; (ie. utilisées
implicitement par l'optimiseur de requêtes) car on ne peut pas préciser
l'option NOEXPAND si la vue n'est pas utilisée directement.&lt;/p&gt;
&lt;p&gt;Ce que je ne comprends pas c'est qu'il me semblait toujours avoir développé
sur des Developer Edition or je n'ai jamais rencontré cet effet de bord. Donc
je commence à croire que c'était des Enterprise... Ah le luxe, quand tu nous
tiens...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/LcCat1XWN4Q" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/29/Vues-indexees-et-optimisation#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/202086</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/29/Vues-indexees-et-optimisation</feedburner:origLink></entry>
    
  <entry>
    <title>Requêter un cube Analysis Services depuis SSIS</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/wJxQURpTCe4/Requeter-un-cube-Analysis-Services-depuis-SSIS" rel="alternate" type="text/html" title="Requêter un cube Analysis Services depuis SSIS" />
    <id>urn:md5:216bb85897e3910f6cec9b85978f9849</id>
    <updated>2008-01-28T23:24:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Analysis Services</dc:subject><dc:subject>Integration Services</dc:subject><dc:subject>MDX</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;On pourrait penser que &lt;strong&gt;requêter un cube OLAP avec Integration
Services&lt;/strong&gt; est trivial et pourtant, avec un collègue, nous nous
sommes heurtés à quelques difficultés.&lt;/p&gt;
&lt;h4&gt;Première tentative :&lt;/h4&gt;
&lt;p&gt;Naïvement, nous créons une connexion de type &lt;strong&gt;OLE DB Provider for
Analysis Services 9.0&lt;/strong&gt;. On la branche sur un &lt;strong&gt;OLE DB
Source&lt;/strong&gt; et en guise de &lt;strong&gt;SQL Command&lt;/strong&gt;, je tape ma requête
MDX (les ventes par catégories depuis le DataWarehouse de AdventureWorks) :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;SELECT NON EMPTY { [Measures].[Sales Amount]
} ON COLUMNS,NON EMPTY { ([Dim Product].[Dim Product Category].[Dim Product
Category].ALLMEMBERS ) } ON ROWS FROM [AdventureWorks]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;A la confirmation, l'avertissement suivant apparaît :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;[OLE DB Source [1]] Warning: The output &amp;quot;OLE
DB Source Output&amp;quot; (11) references an external data type that cannot be mapped
to a Data Flow task data type. The Data Flow task data type DT_WSTR will be
used instead.&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Soit, qu'il en soit ainsi, un WSTR me plait bien, de plus que la preview me
montre bien le résultat attendu. Je termine mon package en dirigeant le flux
vers un bête FlatFile.&lt;/p&gt;
&lt;p&gt;A l'exécution, le warning réapparaît mais plus grave, le package plante
violemment(lançant SQLDumper.Exe au passage).&lt;/p&gt;
&lt;h4&gt;La solution :&lt;/h4&gt;
&lt;p&gt;Il faut en fait passer par .NET et utiliser les providers
&amp;quot;&lt;em&gt;managed&lt;/em&gt;&amp;quot;. On crée donc une &lt;strong&gt;ADO.NET Connection&lt;/strong&gt; via un
clic droit dans la zone des &lt;strong&gt;Connection Managers&lt;/strong&gt;. Dans la liste
des &lt;strong&gt;.NET Providers for OleDb&lt;/strong&gt;, on choisit &lt;strong&gt;Analysis
Services 9.0&lt;/strong&gt; (oui, le même mais en managé) et on le configure pour
pointer sur notre cube.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SQL/SSIS_MDX.png"&gt;&lt;img style="FLOAT: right; MARGIN: 0 0 1em 1em" height="156" alt="" src="http://blog.djeepy1.net/public/SQL/.SSIS_MDX_s.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans le Data Flow Task, on glisse un &lt;strong&gt;DataReader Source&lt;/strong&gt;
auquel on branche la connexion créée ci-dessus. Pas d'avertissement, on
continue en branchant la sortie vers le fichier, on teste et ça marche
immédiatement. Vous aurez peut-être juste besoin d'une conversion de type
si vous n'êtes pas en UNICODE mais rien de difficile là-dedans (Data
Conversion Transformation).&lt;/p&gt;
&lt;p&gt;Merci à Julien sans qui je n'aurai jamais publié cet article (avant un
moment).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;PS : désolé, toutes les instructions sont en anglais car j'utilise une
version US des produits, ce que je vous conseille même si vous êtes fan de la
loi Toubon.&lt;/em&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/wJxQURpTCe4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/28/Requeter-un-cube-Analysis-Services-depuis-SSIS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/201944</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/28/Requeter-un-cube-Analysis-Services-depuis-SSIS</feedburner:origLink></entry>
    
  <entry>
    <title>Affichage d'un tableau vide dans Reporting Services</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/6L3R-wDYHS0/Visibility-dans-Reporting-Services" rel="alternate" type="text/html" title="Affichage d'un tableau vide dans Reporting Services" />
    <id>urn:md5:57ebff11d2628863d9bd04d3d775d519</id>
    <updated>2008-01-28T15:38:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
            
    <content type="html">    Dans les newsgroups (US), de nombreuses personnes demandent comment gérer
l'absence de données dans un tableau (ou un autre type de Data Region). Voici
un petit condensé des solutions techniques...
&lt;h4&gt;Utilisation de NoRows&lt;/h4&gt;
&lt;p&gt;C'est la méthode la plus simple, si le DataSet lié à une DataRegion de type
Table est vide, il est possible d'afficher un texte à la place du tableau grâce
à la propriété &lt;strong&gt;NoRows&lt;/strong&gt;. Le problème est que l'on ne peut pas
modifier la mise en forme du texte et que rien d'autre ne s'affiche (pas
d'entêtes de colonne). Aussi, si votre tableau mesure plusieurs centimètres de
haut, l'espace reste réservé au rendu, laissant souvent un espace blanc et
vide.&lt;/p&gt;
&lt;h4&gt;Utilisation d'une ligne cachée&lt;/h4&gt;
&lt;p&gt;L'idée ici est de garder les entêtes de colonne mais d'ajouter le texte
explicatif d'absence de données. On ajoute une ligne de Header dans la Table.
On écrit le texte dedans (avec une fusion de cellules au besoin). Puis on met
une &lt;em&gt;expression&lt;/em&gt; dans la propriété &lt;strong&gt;Visibility&lt;/strong&gt; afin
d'afficher la ligne uniquement s'il n'y a pas de ligne dans le DataSet:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;=(CountRows()&amp;gt;0)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Attention, on doit retourner &lt;strong&gt;false&lt;/strong&gt; si on veut cacher
l'élément; il faut donc réfléchir à l'envers... Cette solution ne règle
toujours pas le problème de l'espace vide avant l'élément suivant.&lt;/p&gt;
&lt;h4&gt;Utilisation d'une TextBox&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SQL/SSRS-Visibility.png"&gt;&lt;img style="FLOAT: right; MARGIN: 0 0 1em 1em" height="134" alt="" src="http://blog.djeepy1.net/public/SQL/.SSRS-Visibility_s.jpg" width="240" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On utilise le principe de la propriété Visibility pour cacher entièrement la
Table si elle est vide
&lt;em&gt;Visibility.Hidden=(&lt;strong&gt;CountRows()=0&lt;/strong&gt;)&lt;/em&gt;. On place une
&lt;strong&gt;TextBox&lt;/strong&gt; contenant le message au-dessus de la Table et on lui
applique une expression similaire dans sa propriété Visibility pour l'afficher
à la bonne condition. La Table étant cachée, il n'y a pas d'espace utilisé et
inversement.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;PS : je n'ai pas réglé le cas où on souhaite afficher les entêtes sans
l'espace vide. La propriété Visible n'est pas prise en compte sur une ligne de
Table, il en est de même avec la propriété CanShrink. La solution que je vois
est de recréer les entêtes dans un rectangle et d'utiliser la technique de la
TextBox présentée ci-dessus.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/6L3R-wDYHS0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/28/Visibility-dans-Reporting-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/201747</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/28/Visibility-dans-Reporting-Services</feedburner:origLink></entry>
    
  <entry>
    <title>CREATE APPLICATION ROLE</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/jNHYcyeAK20/CREATE-APPLICATION-ROLE" rel="alternate" type="text/html" title="CREATE APPLICATION ROLE" />
    <id>urn:md5:017bd4c30aa84f388336a33971442670</id>
    <updated>2008-01-24T08:40:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>Sécurité</dc:subject>    
    <content type="html">    &lt;p&gt;Tout le monde connaît l'utilisation des rôles dans la sécurité des
applications. On n'y échappe pas avec SQL Server puisque l'on peut
définir  (&lt;strong&gt;CREATE ROLE&lt;/strong&gt;) et affecter
(&lt;strong&gt;sp_addrolemember&lt;/strong&gt;) des rôles au sein de sa base de données. On
appelle ces rôles des : &lt;strong&gt;databases-roles&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;SQL Server 2005 offre un autre type de rôle qui sont les :
&lt;strong&gt;application-roles&lt;/strong&gt;. La philosophie de ces rôles est de donner
des droits à une application plutôt qu'aux utilisateurs en la mettant dans un
rôle particulier. J'ai longtemps tourné autour de cette fonctionnalité,
n'arrivant pas à me convaincre de son utilité. En effet, dans 99% des
applications que j'approche, l'application se connecte avec sa propre identité.
Donc, au niveau sécurité, je peux la configurer finement, indépendamment de ses
utilisateurs (qui eux peuvent être db_owner, sysadmin ou de parfaits inconnus
dans un autre contexte). En conséquence, j'avais écarté cette technique de ma
boîte à outils.&lt;/p&gt;
&lt;p&gt;C'était sans compter sur mes stagiaires du moment qui ont voulu s'en
convaincre et nous avons repris la problématique du début. Donc reprenons :&lt;/p&gt;
&lt;p&gt;Premièrement, créons un rôle d'application&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;CREATE APPLICATION ROLE app1 WITH PASSWORD =
'pass31', default_schema = Person&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Nous parlons bien d'un rôle donc il est impossible de se connecter avec. Il
nous faut donc des logins classiques. Vous pouvez garder l'authentification
intégrée et autoriser les login windows ou bien en créer ou en réutiliser.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;CREATE LOGIN [NT AUTHORITY\Authenticated
Users] FROM WINDOWS --tous les utilisateurs windows&lt;br /&gt;
CREATE LOGIN appUser WITH PASSWORD = 'appUser' --utilisateur
spécifique&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La phase suivante que l'on a classiquement est de créer un utilisateur dans
la base de données et de la mapper sur un login. Cette phase est maintenant
inutile car on va faire en sorte que l'utilisateur soit vu comme l'application
par la base de données. Cela se fait via l'éxecution d'une procédure système
qui va faire du &lt;strong&gt;context switching&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;EXEC sp_setapprole 'app1',
'pass31'&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Maintenant, tout le code T-SQL est exécuté avec les droits du rôle
d'application. Pour vérifier, on peut appeler la fonction USER_NAME(). Pour
revenir au contexe d'éxécution précédent, il suffit de fermer la connexion ou
d'appeler la procédure système &lt;strong&gt;sp_unsetapprole&lt;/strong&gt; (par contre, il
faudra conserver un token fourni par &lt;strong&gt;sp_setapprole&lt;/strong&gt; et le
redonner à sp_unsetapprole).&lt;/p&gt;
&lt;p&gt;Il ne reste plus qu'à intégrer cette technique dans une application. Pour
cela, on communique avec la base de données de façon classique sauf qu'en début
de connexion, on doit faire le changement de contexte comme présenté dans le
code ci-dessous. A noter qu'avec une architecture correcte (ie. une vraie
couche d'accès aux données), on masque aisément cette tuyauterie technique.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;using (SqlConnection cnn = new
SqlConnection(&lt;br /&gt;
    string.Format(&amp;quot;data source=(local);initial catalog=Lab;user
id={0};password={1}&amp;quot;, txtLogin.Text, txtPassword.Text)))&lt;br /&gt;
{&lt;br /&gt;
  cnn.Open();&lt;br /&gt;
&lt;br /&gt;
  SqlCommand cmd = cnn.CreateCommand();&lt;br /&gt;
  cmd.CommandType = CommandType.StoredProcedure;&lt;br /&gt;
  cmd.CommandText = &amp;quot;sp_setapprole&amp;quot;;&lt;br /&gt;
  cmd.Parameters.AddWithValue(&amp;quot;@rolename&amp;quot;, txtAppRole.Text);&lt;br /&gt;
  cmd.Parameters.AddWithValue(&amp;quot;@password&amp;quot;, &amp;quot;pass31&amp;quot;);&lt;br /&gt;
  cmd.ExecuteNonQuery();&lt;br /&gt;
&lt;br /&gt;
  SqlDataAdapter adpater = new SqlDataAdapter(&amp;quot;select top 50 firstname,
lastname, emailaddress from person.contact&amp;quot;, cnn);&lt;br /&gt;
  adpater.Fill(contactsDataSet);&lt;br /&gt;
  cnn.Close();&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ici, c'est bien un utilisateur autorisé sur le serveur qui se connecte mais
les droits sont ceux de l'application. L'énorme avantage que je vois (mais
comment ai-je pu passer à côté) est le fait que si l'application tombe entre de
mauvaises mains, sans l'étape Login, elle ne pourra pas atteindre le niveau
base de données, même si le rôle d'application a tous les droits.&lt;br /&gt;
Aussi, si je récupère un login/mot de passe, je peux juste me connecter au
serveur mais je ne peux pas accéder aux bases. Inversement avec le rôle, avec
lequel on ne peut pas se connecter.&lt;/p&gt;
&lt;p&gt;Passons quand même en revue les inconvénients. Le principal (et le
seul) est que je base toute l'authentification de mon application sur SQL
Server et donc je dois créer des login pour tous les utilisateurs. Bien sûr,
avec un peu d'architecture, on doit pouvoir rendre cela plus souple et
élégant.&lt;/p&gt;
&lt;p&gt;Conclusion, grâce aux rôles d'application et au context switching,
on découple fortement la paire login/user et on rationnalise la gestion de
la sécurité des applications dans la base de données.&lt;/p&gt;
&lt;p&gt;Merci Mathieu d'avoir insisté &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/jNHYcyeAK20" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/24/CREATE-APPLICATION-ROLE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/200446</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/24/CREATE-APPLICATION-ROLE</feedburner:origLink></entry>
    
  <entry>
    <title>Hiérarchies non-naturelles avec Analysis Services</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/74sByrqAYjY/Hierarchies-non-naturelles-avec-Analysis-Services" rel="alternate" type="text/html" title="Hiérarchies non-naturelles avec Analysis Services" />
    <id>urn:md5:19544150949a76f625eba26df906224d</id>
    <updated>2008-01-22T18:04:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Analysis Services</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;Ce webcast traite des hiérarchies dans les dimensions sous &lt;strong&gt;Analysis
Services&lt;/strong&gt;. On aborde la cas particulier des hiérarchies
&lt;strong&gt;non-naturelles&lt;/strong&gt; avec un exemple trivial d’une dimension
Année-Mois-Semaine-Jour. Cette hiérarchie a la spécificité d’avoir une relation
many-to-many entre 2 niveaux (mois-semaine). Voici une solution pour traiter le
cas sans créer d’erreur de calcul dans le cube l’utilisant.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://video.msn.com/video.aspx?vid=9db6e925-c76e-4165-9f6e-43611942a875" target="_new" title="Hiérarchies non-naturelles avec Analysis Services"&gt;&lt;img src="http://a58.g.akamai.net/f/58/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/b3/72/8a/88596666-677f-4860-abd4-d583a38a72b3.jpg" border="0" alt="Hiérarchies non-naturelles avec Analysis Services" width="112" height="84" /&gt;&lt;br /&gt;
Hiérarchies non-naturelles avec Analysis Services&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/74sByrqAYjY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/22/Hierarchies-non-naturelles-avec-Analysis-Services#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/199971</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/22/Hierarchies-non-naturelles-avec-Analysis-Services</feedburner:origLink></entry>
    
  <entry>
    <title>TechDays 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/oICY4DLlqGA/TechDays-2008" rel="alternate" type="text/html" title="TechDays 2008" />
    <id>urn:md5:18a110e7a2e0d4e08f0a60e722cab380</id>
    <updated>2008-01-20T18:09:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject><dc:subject>TechDays</dc:subject>    
    <content type="html">    &lt;p&gt;L'annonce des &lt;strong&gt;TechDays 2008&lt;/strong&gt; n'a pas dû vous échapper étant
donné que c'est relayé sur la toile depuis des mois. J'en remet une louche en
faisant un peu de pub pour la session que je co-anime avec &lt;strong&gt;Sébastien
Pertus&lt;/strong&gt; (un autre Bewisien dont je vous recommande le &lt;a href="http://www.dotmim.com/blogs/mim/" hreflang="fr"&gt;blog&lt;/a&gt;) :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://galilee.microsoft.fr/TechDays2008/Session.aspx?CellID=171922f0-b4d4-4f9d-8a3d-7bee3bf1feaa"&gt;
Gestion des textes et des images avec SQL Server 2005 et 2008 : XML, FTS,
FileStream, Gestion des BLOB...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C'est une session sur SQL Server 2008 et plus particulièrement sur la
fonctionnalité FILESTREAM. Je vous invite à vous inscrire aux TechDays en
cliquant sur le lien ci-dessous. Pour rappel, les TechDays se tiennent à Paris
au palais des Congrès les 11, 12 et 13 février. La session aura lieu le dernier
jour.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/france/mstechdays/default.aspx?e=commdevblogdj"&gt;&lt;img height="70" alt="TechDays 2008" src="http://blog.djeepy1.net/public/TechDays.png" width="209" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/oICY4DLlqGA" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/20/TechDays-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/199286</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/20/TechDays-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Ajax: UpdatePanel Injection</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Bhn3_7DmeDo/Ajax-UpdatePanel-Injection" rel="alternate" type="text/html" title="Ajax: UpdatePanel Injection" />
    <id>urn:md5:4ceaddfc1c65c231730936ee871f5f81</id>
    <updated>2008-01-16T23:16:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>AJAX</dc:subject><dc:subject>ASP.NET</dc:subject>    
    <content type="html">    &lt;p&gt;Je vais vous présenter une technique utile pour optimiser la gestion des
&lt;strong&gt;UpdatePanel&lt;/strong&gt; dans &lt;strong&gt;ASP.NET Ajax&lt;/strong&gt; :
l'&lt;strong&gt;injection d'UpdatePanel&lt;/strong&gt;.&lt;br /&gt;
&lt;em&gt;[Le code source est disponible en fin d'article]&lt;/em&gt;&lt;/p&gt;
&lt;h5&gt;La problématique :&lt;/h5&gt;
&lt;p&gt;Dans une page se trouve une liste d'éléments présentés dans un contrôle.
Prenons un contrôle template comme le Repeater par exemple (bien que je préfère
créer ma propre liste templatée). Une action sur un élément doit changer son
état et l'affichage doit refléter ce changement en conséquence. L'image
ci-dessous montre l'exemple utilisé.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/app-updatepanelinjection.png"&gt;
&lt;img height="380" alt="" src="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/.app-updatepanelinjection_m.jpg" width="448" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Avec un PostBack classique, on doit reconstruire tout l'arbre de contrôle
pour pouvoir rendre la liste modifiée. Une optimisation (même si on ne gagne
que de la bande passante) consisterait à placer le template de l'élément dans
un UpdatePanel mais on ne gagne pas le temps de Render car la page reconstruit
quand même l'arbre de contrôle (CreateChildControl) comme présenté dans la
trace ASP.NET suivante.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/controltree-injectionupdatepanel.png"&gt;
&lt;img height="352" alt="arbre de controle du repeater" src="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/.controltree-injectionupdatepanel_m.jpg" width="448" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;En plus, à moins que vous ne l'ayez prévu dans votre code, il y aura un
nouvel appel à la base de données pour recharger la liste.&lt;/p&gt;
&lt;h5&gt;L'objectif :&lt;/h5&gt;
&lt;p&gt;Ne pas reconstruire l'ensemble de l'arbre (le Repeater) mais construire
juste le template de l'élément modifié. On envoie le HTML généré au client via
AJAX pour mettre à jour le DOM.&lt;/p&gt;
&lt;h5&gt;La solution :&lt;/h5&gt;
&lt;p&gt;On va utiliser un faux UpdatePanel qui représente la partie à modifier et
qui sera plus haut dans la hiérarchie de contrôles (à la racine par exemple).
On intercepte l'événement dans la page, on effectue la modification visuelle
(après avoir fait son traitement métier bien évidemment) dans ce faux
UpdatePanel et on va le réinjecter côté client à la place du vrai UpdatePanel à
modifier. Bien entendu, on ne recharge pas la liste d'éléments.&lt;/p&gt;
&lt;h5&gt;Comment faire ? :&lt;/h5&gt;
&lt;p&gt;Premièrement, il faut placer la partie à mettre à jour selon cette technique
dans un UserControl (ASCX) pour factoriser; je rappelle qu'il y a les instances
dans le Repeater et la fausse instance à la racine. Dans notre cas c'est le
bloc jaune (l'élément) que j'exporte. Cet export nous oblige à réifier
l'affichage d'un élément en lui créant par exemple des propriétés publiques
correspondant aux infos à afficher. On peut aussi le
rendre &lt;em&gt;autonome&lt;/em&gt; afin qu'il sache les retrouver à partir de
l'identifiant de l'élément mais là je rentre dans le détail. Il faudra
aussi faire de même avec les événements que l'élément peut lancer.&lt;/p&gt;
&lt;p&gt;Deuxièmement, on place un instance de ce contrôle dans l'ItemTemplate du
Repeater et à la racine de la page, dans un UpdatePanel. Pour le second, on
veillera à mettre Visible à False afin de ne pas perturber l'affichage normal.
Je vous rappelle que ce second élément n'est là que pour simuler un autre
UpdatePanel, c'est un contrôle &amp;quot;&lt;em&gt;technique&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
 &amp;lt;Custom:Department runat=&amp;quot;server&amp;quot; ID=&amp;quot;DeptBlock&amp;quot;
IsSelected='&amp;lt;%#Eval(&amp;quot;DepartmentID&amp;quot;).ToString()==ElemID %&amp;gt;'&lt;br /&gt;
   ElemGroup='&amp;lt;%#Eval(&amp;quot;GroupName&amp;quot;) %&amp;gt;'
ElemName='&amp;lt;%#Eval(&amp;quot;Name&amp;quot;) %&amp;gt;' ElemID='&amp;lt;%#Eval(&amp;quot;DepartmentID&amp;quot;) %&amp;gt;'
/&amp;gt;&lt;br /&gt;
&amp;lt;/ItemTemplate&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Troisièment, désactiver les raffraichissements automatiques des UpdatePanel
pour prendre la main avec les attributs suivants :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;ChildrenAsTriggers=&amp;quot;false&amp;quot;
UpdateMode=&amp;quot;Conditional&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Quatrièment, il ne reste plus qu'à modifier l'événement déclencheur (j'ai
choisi ici ItemCommand du Repeater). Les étapes sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;désactiver le Repeater pour prendre la main&lt;/li&gt;
&lt;li&gt;remplir le faux UpdatePanel&lt;/li&gt;
&lt;li&gt;faire croire au système que c'est le bon UpdatePanel que l'on envoie&lt;/li&gt;
&lt;li&gt;L'envoyer côté client&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;protected void
DepartmentList_ItemCommand(object source, RepeaterCommandEventArgs e)&lt;br /&gt;
{&lt;br /&gt;
 //on ne rebind PLUS la liste&lt;br /&gt;
 // DepartmentList.DataBind();&lt;br /&gt;
 //et on la &amp;quot;désactive&amp;quot; sinon, elle a tendance à se construire toute
seule&lt;br /&gt;
 DepartmentList.DataSource = null;&lt;br /&gt;
 DepartmentList.DataSourceID = null;&lt;br /&gt;
&lt;br /&gt;
 //en revanche, on configure le FakeUpdatePanel&lt;br /&gt;
 //...ici, je mets des données bidon mais je devrais charge mon élément
individuel&lt;br /&gt;
 FakeDepElem.ElemGroup = &amp;quot;FAKE MIS A JOUR&amp;quot;;&lt;br /&gt;
 FakeDepElem.ElemName = &amp;quot;Fake Dept&amp;quot;;&lt;br /&gt;
 FakeDepElem.ElemID = e.CommandArgument.ToString();&lt;br /&gt;
 FakeDepElem.IsSelected = true;&lt;br /&gt;
 //on rend l'élément visible sinon la méthode Render ne retournera
rien&lt;br /&gt;
 FakeDepElem.Visible = true;&lt;br /&gt;
&lt;br /&gt;
 //ICI, c'est le point technique, on change l'ID du faux UpdatePanel&lt;br /&gt;
 //le fait de changer l'identifiant de l'update panel va permettre de
cibler un autre updatepanel coté client.&lt;br /&gt;
 &lt;ins&gt;FakeElementUP.ID = e.CommandName;&lt;/ins&gt;&lt;br /&gt;
 //on envoie le panel au client&lt;br /&gt;
 FakeElementUP.Update();&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le point le plus important est le remplacement de l'identifiant de mon faux
UpdatePanel. Une fois renvoyé au client, la partie JavaScript d'Ajax cherche
l'UpdatePanel spécifié et le remplace, sans se rendre compte de l'altération.
La capture faite avec Fiddler ci-dessous montre ce que renvoie Ajax au client.
Une entête identifie le bloc (l'UpdatePanel) à mettre à jour suivi du code HTML
à remplacer. C'est cette entête finalement que nous avons altéré.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;632|updatePanel|DepartmentList_ctl03_DeptBlock_ElementUP|&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/fiddler-injectionupdatepanel.png"&gt;
&lt;img alt="Verification avec Fiddler" src="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/.fiddler-injectionupdatepanel_m.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans ce code, vous voyez que j'utilise &lt;em&gt;e.CommandName&lt;/em&gt;. Ce choix est
arbitraire. Pour fonctionner, le handler de l'événement a besoin à minima des
informations suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;l'identifiant de l'élément (ou un moyen de le retrouver)&lt;/li&gt;
&lt;li&gt;l'identifiant de l'UpdatePanel à mettre à jour&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;SelectBtn.CommandArgument = ElemID;&lt;br /&gt;
SelectBtn.CommandName = ElementUP.UniqueID;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Moi je les passe explicitement dans la commande mais on peut imaginer de les
retrouver avec le paramètre &lt;em&gt;source&lt;/em&gt; ou par un autre moyen.&lt;/p&gt;
&lt;p&gt;J'ai pu mettre en oeuvre cette technique massivement dans un site web grand
public de courses en ligne que nous (Bewise) avons réalisé pour un client.
Je peux donc vous dire qu'elle a été validée à tous les niveaux : performances,
maintenabilité, fiabilité, sécurité. Bien évidement, elle est beaucoup plus
complexe que cela car beaucoup plus riche fonctionnellement (je dis cela pour
ceux qui peuvent rester sur leur faim).&lt;/p&gt;
&lt;h5&gt;Effets de bord :&lt;/h5&gt;
&lt;p&gt;Si la Trace est active, vous risquez de voir apparaître une erreur précisant
qu'il y a des doublons dans les ID des contrôles et le module de Trace ne sait
pas le gérer (et donc lève une exception). Bizarrement, l'erreur n'est plus
levée si la pile est pleine (requestLimit). Si vous avez plus d'infos sur ce
comportement non déterministe ou un moyen de contournement...&lt;/p&gt;
&lt;h5&gt;Code Source :&lt;/h5&gt;
&lt;p&gt;Le code source utilise juste une connexion à la base AdventureWorks de
Microsoft. Vous aurez juste à changer la chaîne de connexion dans le
web.config et le nom du serveur web dans les propriétés du projet. Le code
est téléchargeable &lt;a href="http://blog.djeepy1.net/public/labs/UpdatePanel-injection/UpdatePanelInjection.zip" hreflang="fr"&gt;ici&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Bhn3_7DmeDo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/16/Ajax-UpdatePanel-Injection#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/198266</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/16/Ajax-UpdatePanel-Injection</feedburner:origLink></entry>
    
  <entry>
    <title>Intellisense dans SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/8wy6Q_ZOfpw/Intellisense-dans-SQL-Server-2008" rel="alternate" type="text/html" title="Intellisense dans SQL Server 2008" />
    <id>urn:md5:b7f24812fee0a61679e3cbc72c2a1982</id>
    <updated>2008-01-05T12:43:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Bon d'accord, ce n'est pas vraiment dans &lt;strong&gt;SQL Server 2008&lt;/strong&gt;
mais bien dans l'éditeur de T-SQL SSMS (&lt;strong&gt;Management
Studio&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/intellisense-sql-2008.png" /&gt;&lt;/p&gt;
&lt;p&gt;Comme pour Visual Studio, elle marche pour les mot-clés mais aussi de façon
contextuelle dans les clauses &lt;strong&gt;SELECT&lt;/strong&gt;, &lt;strong&gt;FROM&lt;/strong&gt;,
&lt;strong&gt;WHERE&lt;/strong&gt;, etc.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/8wy6Q_ZOfpw" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/05/Intellisense-dans-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/194443</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/05/Intellisense-dans-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Bonne année !!</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Xe4SyrBHN1o/Bonne-annee" rel="alternate" type="text/html" title="Bonne année !!" />
    <id>urn:md5:bba7589c0b284c64ab42faa8d3d1a340</id>
    <updated>2008-01-05T12:28:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Perso</dc:subject>
            
    <content type="html">    &lt;p&gt;Comme il est de coutume, je ne déroge pas aux voeux de la nouvelle année.
Que 2008 soit une année flamboyante pour &lt;strong&gt;SQL Server&lt;/strong&gt; et la
&lt;strong&gt;Business Intelligence&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Xe4SyrBHN1o" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2008/01/05/Bonne-annee#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/194438</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2008/01/05/Bonne-annee</feedburner:origLink></entry>
    
  <entry>
    <title>Contrainte d'intégrité : Unique ou NULL</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/4OqVZ7bbGb4/Contrainte-dintegrite-%3A-Unique-ou-NULL" rel="alternate" type="text/html" title="Contrainte d'intégrité : Unique ou NULL" />
    <id>urn:md5:c6b616e284a7e83b6bb44760147df777</id>
    <updated>2007-10-30T17:59:00+01:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;h3&gt;Problématique :&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;On a besoin sur une table d’ajouter une contrainte
d’intégrité qui est la suivante : je veux que les valeurs de mon champ
soient uniques ou NULL (i.e. uniques sauf si elles sont nulles).  J’ai
rencontré souvent cette utilisation pour stocker des utilisateurs où l’on
souhaite avoir l’unicité des N° de téléphone mais où ce même numéro n’est pas
une saisie obligatoire.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;La solution triviale à laquelle on pense tout de suite est
de mettre un index unique sur le champ. Mais on s’aperçoit vite que ça ne
marche pas car à la 2&lt;sup&gt;ème&lt;/sup&gt; valeur nulle insérée, on viole l’intégrité
alors que, fonctionnellement, la saisie est correcte.&lt;/p&gt;
&lt;h3&gt;Solutions :&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;Je vous propose 2 solutions :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;Utiliser une contrainte d’intégrité sur la table&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: Symbol"&gt;&lt;span style="FONT: 7pt 'Times New Roman'"&gt; &lt;/span&gt;&lt;/span&gt;Utiliser une vue
indexée&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Check Constraint :&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;La première solution est d’utiliser une &lt;strong&gt;CHECK
CONSTRAINT&lt;/strong&gt; qui nous permet de « coder » une contrainte
d’intégrité sur une table. Pour rappel, voici la syntaxe d’une CHECK
CONSTRAINT :&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee; MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ALTER&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&lt;/span&gt;MaTable&lt;span style="COLOR: gray"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ADD&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;CONSTRAINT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&lt;/span&gt;CK_NAME&lt;span style="COLOR: gray"&gt;&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;CHECK&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt; 
&lt;span style="COLOR: gray"&gt;(&lt;/span&gt; &lt;span style="COLOR: gray"&gt;&amp;lt;&lt;/span&gt;ici la
contrainte&lt;span style="COLOR: gray"&gt;&amp;gt;&lt;/span&gt; &lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;On serait donc tenté d’écrire un truc du genre :&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;CHECK&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt; [Phonenumber] &lt;span style="COLOR: gray"&gt;IS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt; &lt;span style="COLOR: gray"&gt;OR&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;EXISTS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;*&lt;/span&gt; &lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; Person&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[Contact] U
&lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; U&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[Phonenumber] &lt;span style="COLOR: gray"&gt;=&lt;/span&gt;
[Phonenumber] &lt;span style="COLOR: gray"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Sauf que, si vous essayez d’exécuter cette instruction
vous aurez l’erreur suivante :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 8pt; COLOR: red; FONT-FAMILY: 'Courier New'"&gt;Subqueries are not allowed in this context. Only scalar
expressions are allowed.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;La solution pour contourner ce message d’erreur est de
créer une fonction qui encapsule la sous-requête. &lt;span lang="EN-US"&gt;La contrainte devient :&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;CHECK&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;[Phonenumber] &lt;span style="COLOR: gray"&gt;IS&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt; &lt;span style="COLOR: gray"&gt;OR&lt;/span&gt; [dbo]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[PhoneExists]&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;[Phonenumber]&lt;span style="COLOR: gray"&gt;)=&lt;/span&gt;0&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Nous avons donc besoin d’une fonction scalaire qui renvoie
un type bit. Vous noterez que l’on est obligé de faire un test sur le résultat
car le type bit n’est pas utilisable en T-SQL comme un booléen d’un langage de
programmation.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Voici le code de la fonction :&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee; MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATE&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;FUNCTION&lt;/span&gt; [dbo]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[PhoneExists]&lt;br /&gt;&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      @Phone &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: blue"&gt;char&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;10&lt;span style="COLOR: gray"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;)&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;RETURNS&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;bit&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;AS&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;BEGIN&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      &lt;span style="COLOR: blue"&gt;declare&lt;/span&gt;
@result  &lt;span style="COLOR: blue"&gt;bit&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;     &lt;/span&gt; if&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: gray"&gt;Exists(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Select&lt;/span&gt; &lt;span style="COLOR: gray"&gt;*&lt;/span&gt; &lt;span style="COLOR: blue"&gt;From&lt;/span&gt; Person&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Contact
&lt;span style="COLOR: blue"&gt;Where&lt;/span&gt; Phonenumber &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; @Phone&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;     &lt;/span&gt;&lt;/span&gt; set&lt;/span&gt; @result
&lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 1&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;      &lt;span style="COLOR: blue"&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;           
&lt;span style="COLOR: blue"&gt;set&lt;/span&gt; @result &lt;span style="COLOR: gray"&gt;=&lt;/span&gt;
0&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;&lt;br /&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;     &lt;/span&gt;
return&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; 
@result&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;br /&gt;

END&lt;/span&gt;&lt;/p&gt;
&lt;h4&gt;Vue indexée&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;L’autre solution est d’utiliser une vue indexée. Mais
pourquoi me direz vous, une vue indexée étant conseillée pour faire de
l’optimisation de requête, en quoi peut-elle influer sur l’intégrité des
données ?&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Vous allez vite comprendre : une vue indexée est
composée d’un index classique, qui peut donc être
&lt;strong&gt;UNIQUE&lt;/strong&gt; ; or cet index se place sur une vue c'est-à-dire
sur un sous-ensemble des données. Donc on utilise ce système pour mettre une
contrainte d’unicité sur un sous-ensemble de la table ; ici on prendra les
données non nulles.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Créons tout d’abord la vue :&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee; MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Create&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;View&lt;/span&gt; [dbo]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[vwUser_Phone_UNIQUE]&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;With&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;SchemaBinding&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;As&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;Select&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Phonenumber&lt;br /&gt;&lt;/span&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;From&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Person&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Contact&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Where&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Phonenumber
&lt;span style="COLOR: gray"&gt;is&lt;/span&gt; &lt;span style="COLOR: gray"&gt;not&lt;/span&gt;
&lt;span style="COLOR: gray"&gt;null&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;En travaillant avec cette vue, je ne me concentre que sur
les utilisateurs ayant saisi leur numéro de téléphone.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;Vous noterez
l’instruction &lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;With&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;SchemaBinding&lt;/span&gt;&lt;/span&gt; qui est nécessaire pour pouvoir créer
un index sur une vue.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;Créons
maintenant l’index :&lt;/p&gt;
&lt;p class="MsoNormal" style="BACKGROUND: #eee; MARGIN-BOTTOM: 0; LINE-HEIGHT: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;CREATE&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;UNIQUE&lt;/span&gt; &lt;span style="COLOR: blue"&gt;CLUSTERED&lt;/span&gt;
&lt;span style="COLOR: blue"&gt;INDEX&lt;/span&gt;
[IX_USER_PHONE_UNIQUE]&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;ON&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;[dbo]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[vwUser_Phone_UNIQUE]&lt;br /&gt;&lt;/span&gt; &lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;(&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;     
[Phone] &lt;span style="COLOR: blue"&gt;ASC&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: gray; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;L’unicité sur le champ Phone va garantir l’intégrité des
numéros renseignés. Note : l’index est créé comme CLUSTERED car c’est un
index sur une vue (et il lui faut donc un stockage physique).&lt;/p&gt;
&lt;h3&gt;Conclusion :&lt;/h3&gt;
&lt;p class="MsoNormal"&gt;2 méthodes pour un résultat identique ; que
choisir ? Pour répondre à cette question, il faut étudier les solutions
sur différents angles : maintenabilité, technicité, performances, etc. et
voir si cela colle avec votre façon de développer (et d’administrer).&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Côté performances, je joins une petite trace SQL qui ne
résout pas la question (car il faudrait faire une étude de perf. plus poussée)
mais qui milite en faveur de la CHECK CONSTRAINT. Moi, je suis plutôt vue
indexée.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;a href="http://blog.djeepy1.net/public/SQL/traceunicity.png"&gt;&lt;img style="WIDTH: 100%" alt="" src="http://blog.djeepy1.net/public/SQL/traceunicity.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;Variantes :&lt;/h4&gt;
&lt;p class="MsoNormal"&gt;Ca marche aussi pour les contraintes « unique ou
chaîne vide », « unique ou 'cohiba' », etc. &lt;img src="/themes/default/smilies/wink.png" alt=";-)" class="smiley" /&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/4OqVZ7bbGb4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/10/30/Contrainte-dintegrite-%3A-Unique-ou-NULL#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/169076</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/10/30/Contrainte-dintegrite-%3A-Unique-ou-NULL</feedburner:origLink></entry>
    
  <entry>
    <title>Ctrl+Shift+F = Find in files dans Visual Studio</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/yHlFPPwj9C0/shiftctrlF" rel="alternate" type="text/html" title="Ctrl+Shift+F = Find in files dans Visual Studio" />
    <id>urn:md5:d42ceefbe13b72e5bf7bca938261bde9</id>
    <updated>2007-10-03T15:05:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Développement</dc:subject>
        <dc:subject>Visual Studio</dc:subject>    
    <content type="html">    &lt;p&gt;Je sais, c'est risible mais je viens seulement de découvrir ce raccourci
clavier.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/yHlFPPwj9C0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/10/03/shiftctrlF#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/160399</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/10/03/shiftctrlF</feedburner:origLink></entry>
    
  <entry>
    <title>70-445: je suis MCITP BID</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/0J22sQgMpXM/70-445%3A-je-suis-MCITP-BID" rel="alternate" type="text/html" title="70-445: je suis MCITP BID" />
    <id>urn:md5:ae23ac822e2639add387221d96c8a4d6</id>
    <updated>2007-10-01T00:00:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Certifications</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/MCITP_BusIntDev.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;Et voila, je suis devenu &lt;strong&gt;Microsoft Certified IT Professional:
Business Intelligence Developer&lt;/strong&gt;. J'ai réussi la certification
&lt;strong&gt;70-445.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Même si c'était le cas avant, n'hésitez pas à me solliciter (plutôt &lt;a href="http://www.bewise.fr/" hreflang="fr"&gt;Bewise&lt;/a&gt;)  pour tous vos
&lt;strong&gt;projets décisionnels&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Next Target : devenir MVP ? Pourquoi pas, on verra en 2008.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/0J22sQgMpXM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/01/10/70-445%3A-je-suis-MCITP-BID#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/194431</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/01/10/70-445%3A-je-suis-MCITP-BID</feedburner:origLink></entry>
    
  <entry>
    <title>70-446</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/q68Xt9R3nYo/70-446" rel="alternate" type="text/html" title="70-446" />
    <id>urn:md5:d277a4fe08862e209e5639c7d4afd070</id>
    <updated>2007-09-27T17:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>Certifications</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;h2&gt;I got it&lt;/h2&gt;
&lt;p&gt;Ouf, après de nombreuses semaines de révision (c'est pour cette raison que
le blog est un peu mort), je viens de passer la certification &lt;strong&gt;70-446 :
Designing a Business Intelligence Infrastructure by Using Microsoft SQL Server
2005&lt;/strong&gt; avec un joli score de 83%. Demain, je passe sa petite soeur la
70-445 et je croise les doigts pour obtenir le titre de MCITP BID (pour les
néophytes : &lt;strong&gt;Microsoft Certified IT Professional: Business Intelligence
Developer&lt;/strong&gt;).&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/q68Xt9R3nYo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/27/70-446#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/158975</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/27/70-446</feedburner:origLink></entry>
    
  <entry>
    <title>Le déploiement de rapports sous SSRS</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/sXXijVnisGM/Le-deploiement-de-rapports-sous-SSRS" rel="alternate" type="text/html" title="Le déploiement de rapports sous SSRS" />
    <id>urn:md5:e3d81826e49450ca9cddebc13f8b4d59</id>
    <updated>2007-09-06T08:58:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>SSRS</dc:subject>    
    <content type="html">    &lt;p&gt;Un article complet et sympathique sur les méthodes de déploiement de
rapports sous &lt;strong&gt;SSRS&lt;/strong&gt; (&lt;strong&gt;Reporting Services&lt;/strong&gt;).&lt;/p&gt;
&lt;p&gt;Sébastien Pertus, un collègue du pôle &lt;strong&gt;DGD&lt;/strong&gt;
(&lt;strong&gt;Décisionnel &amp;amp; Gestion de Données&lt;/strong&gt;) dont je m'occupe chez
&lt;strong&gt;Bewise&lt;/strong&gt;, nous présente toutes les façons de passer un rapport
en production. Avec cela, je suis sûr que vous trouverez le moyen qui convient
le mieux à votre façon de travailler et à votre SI.&lt;/p&gt;
L'article est dispo sur le site de &lt;a href="http://www.bewise.fr/" hreflang="fr"&gt;Bewise&lt;/a&gt; : &lt;a href="http://www.bewise.fr/download/articles/article-48.doc"&gt;Déploiement automatisé
sous Reporting Services&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/sXXijVnisGM" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/06/Le-deploiement-de-rapports-sous-SSRS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/153061</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/06/Le-deploiement-de-rapports-sous-SSRS</feedburner:origLink></entry>
    
  <entry>
    <title>Du C# dans SSIS</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/w5_Km-atR5Q/Du-C-dans-SSIS" rel="alternate" type="text/html" title="Du C# dans SSIS" />
    <id>urn:md5:78905b1398c686b1e55084268460e41f</id>
    <updated>2007-09-05T22:51:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Business Intelligence</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject><dc:subject>SSIS</dc:subject>    
    <content type="html">    &lt;p&gt;Une de mes principales attentes pour la version 2008 de
&lt;strong&gt;SSIS&lt;/strong&gt; (Integration Services) était un vrai support de la
programmation .NET dans les &lt;strong&gt;Script Task&lt;/strong&gt; et les &lt;strong&gt;Script
Component&lt;/strong&gt;. C'est chose faite dans Katmai.&lt;/p&gt;
&lt;p&gt;&lt;img style="WIDTH: 530px" alt="" src="http://blog.djeepy1.net/public/SQL/SSIS-Script-Task-Language.png" /&gt;&lt;/p&gt;
&lt;p&gt;Ce support permet entre autres de développer vos scripts en
&lt;strong&gt;C#&lt;/strong&gt; (je kiffe) et de lever toute ambiguïté sur le support ou la
syntaxe de telle ou telle fonction. Ca fait plaisir de finir ses lignes avec
des points-virgule :-P.&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/SQL/SSIS-Script-Task-CSharp.png" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;C'est le SDK &lt;strong&gt;VSTA&lt;/strong&gt; (Visual Studio Tools for
Applications) qui est utilisé pour permettre ce support. Ce SDK permet à des
applications de proposer des éditeurs de code (VB.NET ou C#) afin que le
end-user puisse ajouter de l'algorithmique dans une application existante. Ce
SDK est utilisé notamment dans InfoPath. Je vous invite à consulter le blog de
l'équipe en charge chez Microsoft, c'est très intéressant : &lt;a href="http://blogs.msdn.com/vsta/"&gt;http://blogs.msdn.com/vsta/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/w5_Km-atR5Q" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/05/Du-C-dans-SSIS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/153017</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/05/Du-C-dans-SSIS</feedburner:origLink></entry>
    
  <entry>
    <title>Un aperçu visuel des nouvelles fonctionnalités de SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/1m8WOkQV7gE/Un-apecu-visuel-des-nouvelles-fonctionnalites-de-SQL-Server-2008" rel="alternate" type="text/html" title="Un aperçu visuel des nouvelles fonctionnalités de SQL Server 2008" />
    <id>urn:md5:f4c4fe011aad7e871eb1c08c5ae55e92</id>
    <updated>2007-09-05T22:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
            
    <content type="html">    &lt;p&gt;Un schéma sympathique que je trouve particulièrement efficace pour
représenter les nouvelles fonctionnalité de SQL Server 2008 au fil de leurs
sorties :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/SQL/SQL-Server-2008.jpg"&gt;&lt;img style="BORDER-RIGHT: 0; BORDER-TOP: 0; DISPLAY: block; MARGIN: 0 auto; BORDER-LEFT: 0; BORDER-BOTTOM: 0" alt="Fonctionnalités SQL Server 2008" src="http://blog.djeepy1.net/public/SQL/.SQL-Server-2008_m.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;
Je manque de temps mais je vais essayer de vous en présenter plus dans ce blog.&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/1m8WOkQV7gE" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/05/Un-apecu-visuel-des-nouvelles-fonctionnalites-de-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/152999</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/05/Un-apecu-visuel-des-nouvelles-fonctionnalites-de-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Le type HierarchyID de SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/zLzKORsSsoU/Le-type-HierarchyID-de-SQL-Server-2008" rel="alternate" type="text/html" title="Le type HierarchyID de SQL Server 2008" />
    <id>urn:md5:81badbf4843131db39213561351b03f9</id>
    <updated>2007-09-03T10:05:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Le type HierarchyID est un nouveau type de données de &lt;strong&gt;SQL Server
2008&lt;/strong&gt; (alias Katmai) qui permet de gérer comme son nom l'indique, des
hiérarchies dans des tables relationnelles.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Nous allons voir dans cet
article que ce nouveau type apporte des réponses dans la modélisation
d’arborescences dans les bases de données. Il ajoute des fonctionnalités au
langage T-SQL et améliore les performances. Cet article décrit en détail le
nouveau type et fournit quelques exemples d’utilisation comparés à une
utilisation plus classique à base de CTE.&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;L'article est disponible ici :
&lt;a href="http://blog.djeepy1.net/public/labs/type-hierarchyID/Le_type_HierarchyID_de_SQL_Server_2008.doc" hreflang="fr"&gt;Le type Hierarchy&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Le code des démos est disponible
à cette URL : &lt;a href="http://blog.djeepy1.net/public/labs/type-hierarchyID/Le_type_HierarchyID.sql"&gt;code
source&lt;/a&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;&lt;em&gt;&lt;ins&gt;Note&lt;/ins&gt; : le
code de cet article fonctionne avec la CTP2 (fin juillet) de SQL Server
2008&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Voici quelques extraits :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;[...]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 style="MARGIN: 18pt 0cm 3pt; TEXT-INDENT: 0cm"&gt;&lt;a name="_Toc176542217"&gt;&lt;span style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;span style="mso-list: Ignore"&gt;3.2 &lt;/span&gt;&lt;/span&gt;Utilisation de HierarchyID dans
une table&lt;/a&gt;&lt;/h2&gt;
Le type HierarchyID s’utilise comme n’importe quel autre type dans
l’instruction de création de table (ou d’ajout de colonne). Dans les exemples
qui suivent, nous allons travailler sur une table que nous appellerons
Organization. Pour l’instant, elle ne contient qu’un champ de type HierarchyID
et le nom de l’employé correspondant.
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; mso-layout-grid-align: none"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;CREATE&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;TABLE&lt;/span&gt;
Organization&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; mso-layout-grid-align: none"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;(&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; mso-layout-grid-align: none"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt; EmployeeID hierarchyid
&lt;span style="COLOR: blue"&gt;NOT NULL&lt;/span&gt;&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-INDENT: 35.4pt; mso-layout-grid-align: none"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;EmployeeName
&lt;span style="COLOR: blue"&gt;nvarchar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;50&lt;span style="COLOR: gray"&gt;)&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NOT&lt;/span&gt; &lt;span style="COLOR: gray"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;)&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
Nous allons remplir cette table avec des données en provenance de la table
Employee de la base AdventureWorks. Pour ce remplissage, nous allons nous baser
sur la CTE décrite plus haut. Pour déterminer la valeur de la racine, nous
allons utiliser la fonction GetRoot() du type HierarchyID (à noter que
GetRoot, comme les autres fonctions du type HierarchyID, est sensible à la
casse) :
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-INDENT: 35.4pt"&gt;
&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;hierarchyid&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;::&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #ff3399; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;GetRoot&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;()&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
Pour déterminer la valeur des nœuds enfants, à chaque récursion nous
utiliserons la fonction GetDescendant du nœud parent :
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-INDENT: 35.4pt"&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Parent.Node&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: #ff3399"&gt;GetDescendant&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(null,&lt;/span&gt;
&lt;span style="COLOR: gray"&gt;null)&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
Les paramètres de cette fonction permettent de placer le nœud enfant à une
certaine position parmi les autres nœuds enfants (siblings).La CTE modifiée
donne ce script T-SQL qui va copier la hiérarchie de la table Employee à la
nouvelle table Organization bénéficiant du nouveau type.
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;WITH&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;UpperHierarchy&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;EmpId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;
LastName&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Node&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;AS&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;(&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; EmployeeId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; LoginId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; &lt;span style="COLOR: blue"&gt;hierarchyid&lt;/span&gt;&lt;span style="COLOR: gray"&gt;::&lt;/span&gt;&lt;span style="COLOR: #ff3399"&gt;GetRoot&lt;/span&gt;&lt;span style="COLOR: gray"&gt;()&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; HumanResources&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Employee&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 1"&gt;     &lt;/span&gt; &lt;span style="COLOR: blue"&gt;WHERE&lt;/span&gt; ManagerId &lt;span style="COLOR: gray"&gt;is&lt;/span&gt;
&lt;span style="COLOR: gray"&gt;Null&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;UNION ALL&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;SELECT&lt;/span&gt; Sub&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;EmployeeId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;
Sub&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;LoginId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;
Parent.Node&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: #ff3399"&gt;GetDescendant&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(null,&lt;/span&gt;
&lt;span style="COLOR: gray"&gt;null)&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;FROM&lt;/span&gt; HumanResources&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Employee &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt;
Sub&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 2"&gt;           &lt;/span&gt;
&lt;span style="COLOR: gray"&gt;INNER&lt;/span&gt; &lt;span style="COLOR: gray"&gt;JOIN&lt;/span&gt;
UpperHierarchy &lt;span style="COLOR: blue"&gt;AS&lt;/span&gt; Parent&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="mso-tab-count: 3"&gt;                 &lt;/span&gt;
&lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; Sub&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;ManagerId &lt;span style="COLOR: gray"&gt;=&lt;/span&gt;
Parent&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;EmpId&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: gray; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;)&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; mso-layout-grid-align: none; text-align: left"&gt;
&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Insert&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="COLOR: blue"&gt;Into&lt;/span&gt; dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Organization&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;EmployeeId&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;
EmployeeName&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;h1 class="MsoNormal" style="MARGIN: 0cm 0cm 0; TEXT-ALIGN: left; text-align: left"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Select&lt;/span&gt;
&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Node&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;
LastName &lt;span style="COLOR: blue"&gt;&lt;br /&gt;
From&lt;/span&gt; UpperHierarchy&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;em&gt; &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;[...]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
En vrac, voici des exemples de requêtes simplifiées par le type HierarchyID.
&lt;h2 style="MARGIN: 18pt 0cm 3pt; TEXT-INDENT: 0cm"&gt;&lt;a name="_Toc176542226"&gt;&lt;span style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;span style="mso-list: Ignore"&gt;6.1&lt;/span&gt;&lt;/span&gt; Trouver tous les subordonnés&lt;/a&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Plus besoin de CTE pour
récupérer tout un pan de la hiérarchie. Pour connaître les subordonnés de
quelqu’un, tous niveaux confondus, la requête est on ne peut plus
simple :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Select&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="COLOR: gray"&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;From&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Organization&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Where&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;@BossNode&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;IsDescendant&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;EmployeeId&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US; mso-no-proof: yes"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;&lt;span style="mso-no-proof: yes"&gt;Attention : un nœud est considéré comme son propre
descendant, ce qui veut dire que la personne de référence sera présente dans la
liste de ses subordonnés.&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN: 18pt 0cm 3pt; TEXT-INDENT: 0cm"&gt;&lt;a name="_Toc176542227"&gt;&lt;span style="mso-no-proof: yes; mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;
&lt;span style="mso-list: Ignore"&gt;6.2&lt;/span&gt;&lt;/span&gt; &lt;span style="mso-no-proof: yes"&gt;Trouver les responsables d’une personne&lt;/span&gt;&lt;/a&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Pour remonter la chaîne des
responsables d’une personne, on inverse la condition précédente :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Select&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="COLOR: gray"&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;From&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Organization&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Where&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;EmployeeId&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;IsDescendant&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@BossNode&lt;span style="COLOR: gray"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt"&gt;&lt;span lang="EN-US" style="mso-ansi-language: EN-US"&gt; &lt;/span&gt;&lt;/p&gt;
&lt;h2 style="MARGIN: 18pt 0cm 3pt; TEXT-INDENT: 0cm"&gt;&lt;a name="_Toc176542228"&gt;&lt;span style="mso-fareast-font-family: Verdana; mso-bidi-font-family: Verdana"&gt;&lt;span style="mso-list: Ignore"&gt;6.3&lt;/span&gt;&lt;/span&gt; Trouver les employés d’un niveau
donné&lt;/a&gt;&lt;/h2&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt;Plus besoin de stocker et de
maintenir le niveau dans la hiérarchie :&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0"&gt; &lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Select&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;&lt;span style="COLOR: gray"&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt; mso-layout-grid-align: none"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;From&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;dbo&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;Organization&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0 35.4pt"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;Where&lt;/span&gt; &lt;span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-ansi-language: EN-US; mso-no-proof: yes"&gt;EmployeeId&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;GetLevel&lt;/span&gt;&lt;span style="COLOR: gray"&gt;() =
3&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;[...]&lt;/em&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;hr /&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/zLzKORsSsoU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/03/Le-type-HierarchyID-de-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/151704</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/03/Le-type-HierarchyID-de-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Architecte ASP.NET du site Express Drive</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/fFKwPgmCOQA/Architecte-ASPNET" rel="alternate" type="text/html" title="Architecte ASP.NET du site Express Drive" />
    <id>urn:md5:a5aa4f100c38336251b09c30bfb7fe3e</id>
    <updated>2007-09-02T12:50:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>AJAX</dc:subject><dc:subject>ASP.NET</dc:subject>    
    <content type="html">    &lt;p&gt;Un petit peu de pub pour un client, pour &lt;a href="http://www.bewise.fr/" hreflang="fr"&gt;&lt;strong&gt;Bewise&lt;/strong&gt;&lt;/a&gt; (et un peu pour moi :-) avec la
présentation du site &lt;a href="http://www.expressdrive.fr/" hreflang="fr"&gt;&lt;strong&gt;Express Drive&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Express Drive est un site de &lt;strong&gt;courses en ligne&lt;/strong&gt; tout ce qu'il
y a de plus classique sauf que derrière se cache un concept excellent :
&lt;strong&gt;le drive&lt;/strong&gt;. Vous faîtes vos courses sur le web et vous passez
les prendre au magasin&lt;img style="FLOAT: right; MARGIN: 1em 0 1em 1em; WIDTH: 310px" alt="Express Drive de E. Leclerc Roques" src="http://blog.djeepy1.net/public/drive-roques.jpg" /&gt;. Même pas besoin de se
garer, vous allez dans les voies réservées et n'avez qu'à ouvrir votre
coffre.&lt;/p&gt;
&lt;p&gt;Pas besoin de citer le nom du client, c'est écrit sur la photo.
Actuellement, il n'y a qu'un seul magasin pilote en france (et c'est ici, près
de Toulouse) mais nul doute que les prochains ouvriront bientôt près
de chez vous.&lt;/p&gt;
&lt;p&gt;Je suis fan de ce concept mais ce qui me rend fier c'est que j'ai été
l'&lt;strong&gt;architecte technique&lt;/strong&gt; du site web Express Drive et
Bewise est en grande partie responsable de la mise en oeuvre (merci Jocelyn).
Nous sommes heureux d'avoir pu accompagner notre client à développer son site
Web en un temps record.&lt;/p&gt;
&lt;p&gt;Et comme un blog de geek ne peut pas se contenter de cette simple annonce,
ouvrons un peu le capot du site...&lt;/p&gt;
&lt;p&gt;Sans entrer dans le détail, ce site est &lt;strong&gt;100% XHTML + CSS
2.0&lt;/strong&gt; (bon d'accord, on a dû prendre quelques raccourcis de temps en
temps). Le site tire aussi énormément partie des &lt;strong&gt;extensions AJAX
de ASP.NET&lt;/strong&gt;. En particulier la page de courses qui est 100% en
&lt;strong&gt;AJAX&lt;/strong&gt; et où nous avons poussé à fond l'utilisation et la
maîtrise des &lt;strong&gt;UpdatePanel&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ce site n'est qu'un premier jet et va s'enrichir de nombreuses
fonctionnalités pour atteindre le niveau de ces concurrents Houra, Ooshop,
AuchanDirect, etc.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/fFKwPgmCOQA" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/09/02/Architecte-ASPNET#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/151407</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/09/02/Architecte-ASPNET</feedburner:origLink></entry>
    
  <entry>
    <title>Stopper un script de déploiement avec DBPros</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/7vxH1wx7FiQ/Encore-une-commande-non-supportee-par-DBPros" rel="alternate" type="text/html" title="Stopper un script de déploiement avec DBPros" />
    <id>urn:md5:d0c9c357ff7193f5566c297773ff0f0c</id>
    <updated>2007-08-10T11:47:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>DBPros</dc:subject><dc:subject>Team System</dc:subject><dc:subject>Visual Studio</dc:subject>    
    <content type="html">    &lt;p&gt;Dans mon script de pré-déploiement, je souhaite arrêter le déploiement
si une base de données n'existe pas.&lt;/p&gt;
&lt;p&gt;Comme indiqué en entête de &lt;strong&gt;Script.PreDeployment.sql&lt;/strong&gt;, je me
décide à utiliser la syntaxe de &lt;strong&gt;SQLCMD&lt;/strong&gt; (qui sera utilisé pour
jouer mon script).&lt;/p&gt;
&lt;p&gt;J'écris donc une commande de ce style :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;IF NOT EXISTS (SELECT 1 FROM
[sys].[databases] WHERE [name] = N'$(DatabaseName)')&lt;br /&gt;
   QUIT&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Seulement, comme pour les variables, l'étape de parsing à la compilation
d'un projet de base de données ne supporte pas le mot-clé
&lt;strong&gt;QUIT&lt;/strong&gt; (ni EXIT d'ailleurs). Donc impossible de sortir du
script sur une condition.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Solution de contrournement :&lt;/ins&gt; lever une erreur avec l'instruction
&lt;strong&gt;RAISERROR&lt;/strong&gt; et utiliser l'&lt;strong&gt;option -b&lt;/strong&gt; avec
SQLCMD pour stopper le script sur erreur&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;IF NOT EXISTS (SELECT 1 FROM
[sys].[databases] WHERE [name] = N'$(DatabaseName)')&lt;br /&gt;
  RAISERROR(N'Database $(DatabaseName) does not exists, setup could
not be execute.',0,1)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/7vxH1wx7FiQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/08/10/Encore-une-commande-non-supportee-par-DBPros#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/140039</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/08/10/Encore-une-commande-non-supportee-par-DBPros</feedburner:origLink></entry>
    
  <entry>
    <title>Mise en oeuvre de la recherche Full-Text dans SQL Server 2005</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Vipuco75OUk/Mise-en-oeuvre-de-la-recherche-Full-Text-dans-SQL-Server-2005" rel="alternate" type="text/html" title="Mise en oeuvre de la recherche Full-Text dans SQL Server 2005" />
    <id>urn:md5:7d26fc5e806fc658a274ddcabbbe57a0</id>
    <updated>2007-08-06T13:08:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Full-Text Search</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;Un petit article (de 20 pages quand même) sur le Full-Text de SQL Server.
L'article complet est diponible ici :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.djeepy1.net/public/labs/full-text-search/Mise_en_oeuvre_de_la_recherche_Full-Text_dans_SQL_Server_2005.doc"&gt;
Mise en oeuvre de la recherche Full-Text dans SQL Server 2005&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Ici vous trouverez un script T-SQL d'exemple sur la base AdventureWorks :
&lt;a href="http://blog.djeepy1.net/public/labs/full-text-search/Mise_en_oeuvre_de_la_recherche_Full-Text_dans_SQL_Server_2005.sql"&gt;
Script d'exemple&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quelques morceaux choisis :&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Création de l'index&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;Il faut indiquer au moteur d’indexation les éléments à indexer de la base de
données. Les éléments que l’on indexe sont des colonnes. Pour cela on place un
INDEX de type Full-Text sur la table en indiquant les champs, comme on ferait
pour un index classique.&lt;/p&gt;
&lt;p&gt;Dans l’exemple ci-dessous, on indexe la colonne &lt;em style="mso-bidi-font-style: normal"&gt;Description&lt;/em&gt; dans la table
&lt;em&gt;ProductDescription&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;&lt;code style="COLOR: gray; FONT-FAMILY: Courier New"&gt;&lt;span style="COLOR: blue"&gt;CREATE FULLTEXT INDEX ON&lt;/span&gt; dbo.ProductDescription&lt;br /&gt;
([Description] &lt;span style="COLOR: blue"&gt;LANGUAGE&lt;/span&gt; 0x40c)&lt;span style="COLOR: green"&gt;--French(France)&lt;/span&gt;&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;KEY INDEX&lt;/span&gt; PK_ProductDescription&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;ON&lt;/span&gt; &lt;span&gt;NouveauCatalogue&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Bien que la syntaxe soit ressemblante, les options diffèrent. Nous allons
les détailler dans les chapitres suivants.&lt;/p&gt;
&lt;p&gt;Il est possible de créer les index Full-Text sur des tables ou des vues mais
ces dernières devront être indexées pour disposer d’une clé unique (cf.
3.2).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.1 Langage&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;[...]([Description]
&lt;span style="COLOR: blue"&gt;LANGUAGE&lt;/span&gt; 0x40c [...]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour chaque colonne indexée, on peut (et je dirais même on doit) préciser la
langue de cette colonne. Ce paramètre va permettre une indexation optimum car
le moteur de recherche Full-Text va prendre en considération les spécificités
culturelles du langage choisi. Ces spécificités impactent l’indexation
elle-même et le requêtage du moteur de recherche.&lt;/p&gt;
&lt;p&gt;Les modules sensibles à la langue choisie sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le &lt;strong&gt;Word Breaker&lt;/strong&gt; : ce module se charge du découpage
des mots dans un texte. Il est évident que l’on ne traite pas le chinois
traditionnel comme l’espagnol&lt;/li&gt;
&lt;li&gt;Le &lt;strong&gt;Stemmer&lt;/strong&gt; : ce module se charge de décliner les mots
(pluriels, conjugaisons, etc.). Par exemple, &lt;em&gt;ride&lt;/em&gt; va être décliné en
&lt;em&gt;rider, riding, rides&lt;/em&gt;, etc. en langue anglaise et &lt;em&gt;fondre&lt;/em&gt; va
être décliné en &lt;em&gt;fondante, fondues, fond&lt;/em&gt;, etc. en français.&lt;/li&gt;
&lt;li&gt;Les &lt;strong&gt;Noises&lt;/strong&gt; : ce module se charge de nettoyer le texte
à indexer dans mots « polluants ». Ainsi, des mots comme &lt;em&gt;le&lt;/em&gt;
ou &lt;em&gt;la&lt;/em&gt; (&lt;em&gt;the, of,&lt;/em&gt; etc. en anglais), les lettres isolées ne
seront pas pris en compte par le moteur.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous pouvez voir la liste des langages supportés par l’indexation Full-Text
dans la vue système &lt;span style="COLOR: green; FONT-FAMILY: 'Courier New'"&gt;sys.fulltext_languages&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.2 Clé unique&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code style="COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;[...]&lt;span style="COLOR: blue"&gt;KEY INDEX&lt;/span&gt; PK_ProductDescription [...]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour créer un index Full-Text, on doit préciser une clé unique. Une clé
primaire ou un index unique peuvent être utilisés. Cette clé unique permet à
l’indexation de faire référence à l’enregistrement contenant le texte
indexé.&lt;/p&gt;
&lt;p&gt;La clé unique est nécessaire pour que le moteur de requêtage puisse
retourner les enregistrements correspondants aux résultats de la recherche.&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Change Tracking&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;p&gt;1.1 Modes de mises à jour&lt;/p&gt;
&lt;p&gt;Une des problématiques rencontrées avec la recherche Full-Text est la mise à
jour des index. En effet, on peut le voir dans l’architecture décrite plus
haut, l’index Full-Text n’est pas stocké dans SQL Server, ce qui a pour
conséquence qu’il ne soit pas mis à jour automatiquement quand on modifie ou
que l’on insert des enregistrements dans la table.&lt;/p&gt;
&lt;p&gt;Le Full-Text propose plusieurs façons de mettre à jour les index :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Au fil de l’eau : c’est le CHANGE TRACKING&lt;/li&gt;
&lt;li&gt;Reconstruction complète : FULL POPULATION&lt;/li&gt;
&lt;li&gt;Incrémentale : INCREMENTAL POPULATION&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le premier choix peut sembler idéal car il permet d’avoir un index à jour en
permanence. En effet, SQL Server se charge d’envoyer des requêtes de mise à
jour au service d’indexation quand on modifie les champs indexés de la table.
Mais ce mode comporte quelques contreparties, il entraine une consommation
supplémentaire des ressources de votre serveur. Aussi, il peut y avoir une
légère latence car l’envoi des requêtes se fait en asynchrone. Pour préserver
les ressources, il est possible de ne répercuter les changements que
manuellement par un job ou une requête.&lt;/p&gt;
&lt;p&gt;Pour activer ou désactiver le change tracking, il suffit d’ajouter l’option
suivante à la création de l’index :&lt;/p&gt;
&lt;p&gt;&lt;code style="COLOR: gray; FONT-FAMILY: 'Courier New'"&gt;&lt;span style="COLOR: blue"&gt;WITH CHANGE_TRACKING { AUTO | MANUAL | OFF }&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;[...]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Vipuco75OUk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/08/06/Mise-en-oeuvre-de-la-recherche-Full-Text-dans-SQL-Server-2005#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/139359</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/08/06/Mise-en-oeuvre-de-la-recherche-Full-Text-dans-SQL-Server-2005</feedburner:origLink></entry>
    
  <entry>
    <title>Gestion des variables dans Visual Studio Team Edition for Database Professionals SR1</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Z9JDcoCyWGI/Gestion-des-variables-dans-Team-Edition-for-Database-Professionals" rel="alternate" type="text/html" title="Gestion des variables dans Visual Studio Team Edition for Database Professionals SR1" />
    <id>urn:md5:1eaccde70249ca89390b0f5897612666</id>
    <updated>2007-08-06T12:58:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>DBPros</dc:subject><dc:subject>Team System</dc:subject><dc:subject>Visual Studio</dc:subject>    
    <content type="html">    &lt;p&gt;J'étais super content que la &lt;a href="http://blogs.msdn.com/gertd/archive/2007/07/23/service-release-1-is-here.aspx#comments" hreflang="fr"&gt;SR1&lt;/a&gt; de TeamDB (ou DBPros alias &lt;strong&gt;Visual Studio Team
Edition for Database Professional&lt;/strong&gt;) sorte enfin des cartons. En effet,
j'en avais besoin pour utiliser les variables au niveau projet. J'ai été un peu
déçu de voir qu'on ne pouvait les utiliser que dans un contexte restreint.&lt;/p&gt;
&lt;p&gt;Laissez moi vous décrire le besoin que j'avais dans mes scripts de pré et
post déploiement. Je voulais appliquer des &lt;strong&gt;scripts
conditionnels&lt;/strong&gt; en fonction du mode de &lt;strong&gt;compilation&lt;/strong&gt;
(release ou debug). Ce que je voudrais ressemblerait à peu près à cela :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;IF $(DEBUG) = 1&lt;br /&gt;
 Begin&lt;br /&gt;
 --test data for development environment&lt;br /&gt;
 INSERT INTO dbo.myTable VALUES('some data')&lt;br /&gt;
 End&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Dans les propriétés du projet ça donne cela :&lt;/p&gt;
&lt;p&gt;&lt;img height="232" alt="" src="http://blog.djeepy1.net/public/img/DBPros-Variables.png" width="690" /&gt;&lt;/p&gt;
&lt;p&gt;Mais &lt;strong&gt;$(DEBUG)&lt;/strong&gt; utilisé comme ci-dessus génère une erreur au
parsing pendant la compilation. En effet, selon l'outil, on ne peut pas
utiliser une variable de cette façon alors que c'est conforme avec la syntaxe
de l'outil SQLCMD qui est utilisé par DBPros pour jouer le script sur le
serveur. Le parsing de la compilation n'accepte que l'utilisation dans une
chaîne de caractères ou comme nom d'entité SQL Server (une table ou un serveur
lié); ex : &lt;code&gt;Select * From [$(TableName)]&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;J'utilise alors la solution de contournement suivante qui j'avoue n'est pas
très élégante mais qui fonctionne :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Declare @debug as int&lt;br /&gt;
Select @debug = cast('$(DEBUG)' as int)&lt;br /&gt;
If  @debug = 1&lt;br /&gt;
  Begin&lt;br /&gt;
  --do my stuff&lt;br /&gt;
  print 'DEBUG MODE!!!'&lt;br /&gt;
  End&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Si vous trouvez un méthode plus élégante, je suis preneur...&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Z9JDcoCyWGI" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/08/06/Gestion-des-variables-dans-Team-Edition-for-Database-Professionals#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/139357</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/08/06/Gestion-des-variables-dans-Team-Edition-for-Database-Professionals</feedburner:origLink></entry>
    
  <entry>
    <title>Je n'aime pas les FormView</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/3oE3qQ_3kJc/La-FormView-ca-pue" rel="alternate" type="text/html" title="Je n'aime pas les FormView" />
    <id>urn:md5:57101121138337f781f81b50143e1b92</id>
    <updated>2007-08-03T14:41:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>FormView</dc:subject>    
    <content type="html">    &lt;p&gt;Même si je fais du web de façon intensive depuis plusieurs années, je n'ai
jamais creusé les contrôles de databinding tout prêt de ASP.NET (ni 1.1, ni
2.0). Je peux même dire que je suis novice avec les
&lt;strong&gt;GridView&lt;/strong&gt;, &lt;strong&gt;FormView&lt;/strong&gt; et autres
&lt;strong&gt;DetailView&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Je suis confronté à ces contrôles depuis quelques mois maintenant dans le
cadre de projets qui en tirent parti. Je dois dire que je commence à être
séduit par ce mode de fonctionnement même si je reste accro aux
&amp;quot;&lt;em&gt;&lt;strong&gt;custom templated controls&lt;/strong&gt;&lt;/em&gt;&amp;quot;.&lt;/p&gt;
&lt;p&gt;Sauf que la semaine dernière j'ai découvert que la FormView a un
fonctionnement que je n'aime pas du tout et qu'il est important de connaître
pour bien maîtriser ce que l'on fait. Admettons que dans la FormView, vous
placiez un &lt;strong&gt;LinkButton&lt;/strong&gt; et un &lt;strong&gt;CustomValidator&lt;/strong&gt;
pour vérifier une condition. Le LinkButton a la propriété
&lt;strong&gt;CausesValidation&lt;/strong&gt; à true. Vous branchez l'événement
click sur votre méthode et là, tout bascule, en déboguant, vous vous apercevez
que la validation (votre méthode &lt;em&gt;OnServerValidate&lt;/em&gt;) est appelée 2
fois.&lt;/p&gt;
&lt;p&gt;La validation est garantie par la propriété CausesValidation du bouton comme
on peut le voir ci-dessous dans la méthode RaisePostBackEvent du
LinkButton via &lt;a href="http://www.aisto.com/roeder/dotnet/" hreflang="fr"&gt;Reflector&lt;/a&gt;.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;protected virtual void
RaisePostBackEvent(string eventArgument)&lt;br /&gt;
{&lt;br /&gt;
    base.ValidateEvent(this.UniqueID, eventArgument);&lt;br /&gt;
    if (this.CausesValidation)&lt;br /&gt;
    {&lt;br /&gt;
       
this.Page.Validate(this.ValidationGroup);&lt;br /&gt;
    }&lt;br /&gt;
    this.OnClick(EventArgs.Empty);&lt;br /&gt;
    this.OnCommand(new CommandEventArgs(this.CommandName,
this.CommandArgument));&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mais qui appelle donc la validation une seconde fois ? On peut voir aussi
dans cette méthode qu'un LinkButton lève l'événement Click mais aussi
l'événement Command, même si on n'a pas précisé de CommandName. Le problème,
c'est qu'un événement Command utilise le mécanisme de &lt;strong&gt;Bubbling&lt;/strong&gt;
(méthode &lt;em&gt;OnBubbleEvent&lt;/em&gt;) et remonte dans la hierarchie de contrôle
jusqu'à ce que quelqu'un l'intercepte. Et devinez qui le prend en charge ? La
FormView !!&lt;/p&gt;
&lt;p&gt;Sans vérifier si la FormView est à même de prendre en charge la commande
(représentée par le paramètre CommandName), elle lance la validation comme on
peut le voir dans le code de la méthode OnBubbleEvent().&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;if (causesValidation &amp;amp;&amp;amp; (this.Page !=
null))&lt;br /&gt;
{&lt;br /&gt;
   this.Page.Validate(validationGroup);&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce qui fait que si vous préférez utiliser l'événement Click, vous aurez 2
validations de la page (ou du ValidationGroup).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;La solution :&lt;/ins&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utiliser l'événement Command de la FormView pour faire vos traitements dans
les boutons se trouvant en son sein.&lt;/li&gt;
&lt;li&gt;mettre la propriété CausesValidation à false et appeler manuellement
Page.Validate() dans la méthode qui gère l'événement Click&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;ins&gt;Moralité&lt;/ins&gt;&lt;/strong&gt; : FormView stinks !&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/3oE3qQ_3kJc" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/08/03/La-FormView-ca-pue#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/138919</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/08/03/La-FormView-ca-pue</feedburner:origLink></entry>
    
  <entry>
    <title>unable to build project output group 'content files from WebApplication'</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/gN0sm9Inm8M/unable-to-build-project-output-group-content-files-from-WebApplication" rel="alternate" type="text/html" title="unable to build project output group 'content files from WebApplication'" />
    <id>urn:md5:608dc675f32d517cd8e2a263c24b99a5</id>
    <updated>2007-08-01T16:53:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>setup</dc:subject>    
    <content type="html">    &lt;p&gt;Dans un projet de &lt;strong&gt;setup web&lt;/strong&gt;, quand vous souhaitez copier
les &lt;strong&gt;'Content Files'&lt;/strong&gt; des sorties d'un projet de type
&lt;strong&gt;Web Application&lt;/strong&gt;, si vous rencontrez un jour cette erreur, je
vous propose la solution :&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;unable to build project output group 'content files from
WebApplication'&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Le problème vient du fait qu'un fichier du site Web n'est pas trouvé sur le
disque (le petit icône avec un triangle jaune). La compilation du projet web ne
génère aucun warning mais un projet de setup lève une erreur car lui a besoin
du fichier manquant.&lt;/p&gt;
&lt;p&gt;Plutôt que de vous arracher les cheveux, naviguez dans tous les répertoires
du site dans le Solution Explorer (je sais ça peut être long) à la recherche du
triangle jaune (ça ferait un bon titre pour un film) et supprimer cette
référence.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Tips&lt;/ins&gt; : cherchez en priorité dans le répertoire des images, c'est
souvent là qu'il y a le plus de &lt;del&gt;boxon&lt;/del&gt; fichiers.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/gN0sm9Inm8M" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/08/01/unable-to-build-project-output-group-content-files-from-WebApplication#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/138587</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/08/01/unable-to-build-project-output-group-content-files-from-WebApplication</feedburner:origLink></entry>
    
  <entry>
    <title>Champ varbinary(max) et Datalength</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/DZJbnJk1ZKY/Champ-varbinarymax-et-Datalength" rel="alternate" type="text/html" title="Champ varbinary(max) et Datalength" />
    <id>urn:md5:e691c97db6c34135bfc270475fe86104</id>
    <updated>2007-07-15T10:49:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;J'ai souvent travaillé avec des champs binaires pour stocker des images ou
des documents associés à mes enregistrements.&lt;br /&gt;
Pour des raisons pratiques, je place le champ dans la même table que celle de
l'&lt;em&gt;objet&lt;/em&gt; qui l'utilise.&lt;/p&gt;
&lt;p&gt;Pour des raisons évidentes de performance, je ne remonte jamais le
binaire à chaque fois que j'ai besoin d'un enregistrement. J'ai des procédures
séparées pour les opérations sur le binaire.&lt;br /&gt;
Seulement, j'ai besoin de savoir s'il y a ou non un binaire associé (vu que le
champ est défini comme NULL) quand je remonte l'enregistrement.&lt;/p&gt;
&lt;p&gt;Je ne peux pas tester la nullité du champ coté code car cela m'obligerai à
remonter le champ binaire dans les cas où il ne serait pas vide.&lt;br /&gt;
J'utilise donc la technique suivante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select ISNULL(Datalength(MonChampImage),0)
From dbo.MaTable&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;0 : il n'y a pas d'image&lt;br /&gt;
&amp;gt; 0 : il y a une image&lt;/p&gt;
&lt;p&gt;La fonction &lt;strong&gt;DATALENGTH&lt;/strong&gt; ne scanne pas l'ensemble du champ
binaire pour obtenir sa taille. En revanche, une opération d'IO supplémentaire
est tout de même faite pour pointer sur la racine de sa zone de stockage
et obtenir la taille (explications sur ce blog : &lt;a href="http://blogs.msdn.com/sqltips/archive/2006/07/14/666188.aspx"&gt;http://blogs.msdn.com/sqltips/archive/2006/07/14/666188.aspx&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Cette opération de lecture n'a jamais plombé les performances de mes sites
mais pour l'éviter, on peut utiliser l'écriture suivante :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Select&lt;br /&gt;
  Case When MonChampImage Is Null&lt;br /&gt;
  Then 0 Else 1&lt;br /&gt;
  End&lt;br /&gt;
From dbo.MaTable&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ici, on teste directement la nullité du pointeur vers le binaire. Par
contre, la syntaxe est un peu plus...large.&lt;/p&gt;
&lt;p&gt;Biensur, je vous passe la solution de stocker un champ bit donnant
directement l'information, mais j'aime me compliquer la vie ;-).&lt;/p&gt;
&lt;p&gt;Quelques unes des règles à respecter toutefois :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;stocker le type du binaire dans un champ associé, moi je stocke le MIME
type&lt;/li&gt;
&lt;li&gt;utiliser l'instruction TEXTIMAGE_ON à la création de la table pour stocker
les binaires dans un FILEGROUP séparé&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/DZJbnJk1ZKY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/07/15/Champ-varbinarymax-et-Datalength#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/133720</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/07/15/Champ-varbinarymax-et-Datalength</feedburner:origLink></entry>
    
  <entry>
    <title>Reporting Services - Logon failure</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/mdi6Jp37EmY/Reporting-Services-Logon-failure" rel="alternate" type="text/html" title="Reporting Services - Logon failure" />
    <id>urn:md5:5d255d291e3f6124e00da99bc8ac6f86</id>
    <updated>2007-07-13T09:59:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Reporting Services</dc:subject><dc:subject>SQL Server 2005</dc:subject>    
    <content type="html">    &lt;p&gt;Depuis quelques jours Reporting Services (SSRS pour les intimes) ne
marche plus sur mon laptop. J'ai une erreur d'authentification à l'exécution
des rapports :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&lt;strong&gt;Logon failure: unknown user name or
bad password&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Après avoir fait le tour des configurations et des logs, je ne
comprenais toujours pas pourquoi j'avais cette erreur. Surtout que la preview
du rapport se faisait correctement sous Visual Studio.&lt;/p&gt;
&lt;p&gt;Donc j'ai cherché un peu et j'ai compris que la raison était mon récent
changement de mot de passe (&lt;a&gt;*$#@\&lt;/a&gt; policy d'entreprise ;-))&lt;/p&gt;
&lt;p&gt;Je suis donc allé faire un tour dans l'outil de configuration pour retaper
mon mot de passe&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&lt;strong&gt;Reporting Services
Configuration&lt;/strong&gt; -&amp;gt; Execution Account&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Ce que j'en retiens :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mettre un compte spécial pour ce genre de configuration&lt;/li&gt;
&lt;li&gt;Bien lire le message d'erreur jusqu'au bout (&lt;em&gt;...or bad
password&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/mdi6Jp37EmY" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/07/13/Reporting-Services-Logon-failure#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/133411</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/07/13/Reporting-Services-Logon-failure</feedburner:origLink></entry>
    
  <entry>
    <title>Ajouter une CSS dans une page avec une MasterPage</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/zRZEWJUvo_4/AJouter-une-CSS-dans-une-page-avec-une-MasterPage" rel="alternate" type="text/html" title="Ajouter une CSS dans une page avec une MasterPage" />
    <id>urn:md5:a14c3f60810244c16c36ed5147c18d96</id>
    <updated>2007-06-28T22:17:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>CSS</dc:subject><dc:subject>MasterPage</dc:subject>    
    <content type="html">    &lt;p&gt;Quand on utilise les MasterPages, il devient impossible d'ajouter un lien
vers une feuille de style directement dans une page. En effet, on ne peut
mettre la référence à la CSS que dans la
section &lt;code&gt;&amp;lt;head/&amp;gt;&lt;/code&gt; et
les &lt;code&gt;&amp;lt;asp:Content&amp;gt;&lt;/code&gt; des pages enfants doivent se trouver
obligatoirement dans le &lt;code&gt;&amp;lt;body/&amp;gt;&lt;/code&gt; (la &amp;lt;form/&amp;gt; plus
exactement).&lt;/p&gt;
&lt;p&gt;On a tout de même accès à la section &lt;code&gt;&amp;lt;head/&amp;gt;&lt;/code&gt; depuis
le code pour ajouter manuellement un lien vers une CSS avec un contrôle de type
HtmlLink.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;HtmlLink cssLink = new HtmlLink();&lt;br /&gt;
cssLink.Href = &amp;quot;../mapage.css&amp;quot;;&lt;br /&gt;
cssLink.Attributes.Add(&amp;quot;rel&amp;quot;, &amp;quot;stylesheet&amp;quot;);&lt;br /&gt;
cssLink.Attributes.Add(&amp;quot;type&amp;quot;, &amp;quot;text/css&amp;quot;);&lt;br /&gt;
Page.Header.Controls.Add(cssLink);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Afin de rendre cette utilisation plus souple, on peut encapsuler ce code
dans un contrôle afin de l'ajouter graphiquement dans le designer de page :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;public class StyleSheetLink : Control&lt;br /&gt;
{&lt;br /&gt;
  private string _href;&lt;br /&gt;
  [UrlProperty]&lt;br /&gt;
  public string Href&lt;br /&gt;
  {&lt;br /&gt;
    get { return _href; }&lt;br /&gt;
    set { _href = value; }&lt;br /&gt;
  }&lt;br /&gt;
  protected override void OnPreRender(EventArgs e)&lt;br /&gt;
  {&lt;br /&gt;
    HtmlLink cssLink = new HtmlLink();&lt;br /&gt;
    cssLink.Href = _href;&lt;br /&gt;
    cssLink.Attributes.Add(&amp;quot;rel&amp;quot;, &amp;quot;stylesheet&amp;quot;);&lt;br /&gt;
    cssLink.Attributes.Add(&amp;quot;type&amp;quot;, &amp;quot;text/css&amp;quot;);&lt;br /&gt;
    Page.Header.Controls.Add(cssLink);&lt;br /&gt;
  }&lt;/code&gt;&lt;/p&gt;
Ainsi, il suffit d'ajouter dans une page le tag suivant :
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;Bewise:StyleSheetLink ID=&amp;quot;css&amp;quot;
runat=&amp;quot;server&amp;quot; Href=&amp;quot;~/_css/default.css&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour améliorer ce contrôle, on pourrait ajouter une vérification dans
la liste des contrôles du header pour savoir si la CSS n'est pas
déjà référencée.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/zRZEWJUvo_4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/28/AJouter-une-CSS-dans-une-page-avec-une-MasterPage#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/128845</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/28/AJouter-une-CSS-dans-une-page-avec-une-MasterPage</feedburner:origLink></entry>
    
  <entry>
    <title>Afficher un PNG avec un channel alpha sur IE6</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/50Z_fBWUF5E/Afficher-un-PNG-avec-un-channel-alpha-sur-IE" rel="alternate" type="text/html" title="Afficher un PNG avec un channel alpha sur IE6" />
    <id>urn:md5:7d3df9413255acec9dfaf0f8d42aded4</id>
    <updated>2007-06-12T13:10:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>CSS</dc:subject>    
    <content type="html">    &lt;h4&gt;La problématique&lt;/h4&gt;
&lt;p&gt;Elle est très simple, IE6 ne gère pas le channel alpha sur une image au
format PNG. Je ne parle pas de simple transparence (ça c'est géré) mais d'une
transparence en dégradé. (&lt;a href="http://en.wikipedia.org/wiki/Alpha_transparency" hreflang="fr"&gt;définition
wikipedia&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://blog.djeepy1.net/public/labs/png-fix/CaptureIE6.png" /&gt;&lt;/p&gt;
&lt;h4&gt;La base de travail&lt;/h4&gt;
&lt;p&gt;Nous allons faire fonctionner le channel alpha pour une image classique et
pour image en background. Le code HTML est le suivant :&lt;/p&gt;
&lt;p&gt;&lt;code style="BACKGROUND: #eee"&gt;&amp;lt;img src=&amp;quot;images/logoalpha.png&amp;quot;
/&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;lt;h1&amp;gt;&amp;lt;span&amp;gt;Les passionnés du malt&amp;lt;/span&amp;gt;&amp;lt;/h1&amp;gt;&lt;/p&gt;
&lt;p&gt;Le code CSS est le suivant :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;#headings h1 {&lt;br /&gt;
  height:241px;&lt;br /&gt;
  width:512px;&lt;br /&gt;
  background: url( '../images/logoalpha.png' ) no-repeat;&lt;br /&gt;
}&lt;br /&gt;
#headings h1 span {&lt;br /&gt;
  display: none;&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;La solution&lt;/h4&gt;
&lt;p&gt;Internet Explorer dispose d'un système de filtres pour effectuer des
opérations de rendu sur des éléments de l'arbre DOM. Notamment, il existe un
filtre appelé &lt;strong&gt;AlphaImageLoader&lt;/strong&gt; qui permet de gérer le channel
alpha. Pour appliquer un filtre, il suffit d'insérer une directive CSS
&lt;code&gt;filter&lt;/code&gt;. Pour l'image background, c'est assez simple, on applique
directement la directive à la place de &lt;code&gt;background :&lt;/code&gt;&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;
&lt;code&gt;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/logoalpha.png',
sizingMethod='scale');&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cependant, pour rester compatible avec IE7 et Firefox, on doit mettre la
directive dans un hack pour IE et on garde un background classique pour les
autres navigateurs. Le hack qui est interprété uniquement par IE (inférieur à
la version 7) est &amp;quot;&lt;code&gt;&lt;strong&gt;* html&lt;/strong&gt;&lt;/code&gt;&amp;quot; :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&lt;strong&gt;* html&lt;/strong&gt; #headings h1 {&lt;br /&gt;
  /* on annule le background et on le red‚finit avec le filtre */&lt;br /&gt;
  background:none;&lt;br /&gt;
 
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/logoalpha.png',
sizingMethod='scale');&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour l'image classique, on ne peut appliquer directement la directive
&lt;strong&gt;filter&lt;/strong&gt; en CSS. On doit recourir à du Javascript pour appliquer
le filtre. Il existe un moyen d'appliquer un script sur un élément avec IE6,
c'est l'utilisation des &lt;em&gt;behaviours&lt;/em&gt;. Un &lt;em&gt;behaviour&lt;/em&gt; est un
bout de Javascript encapsulé dans un fichier .&lt;strong&gt;HTC&lt;/strong&gt; formaté
d'une certaine façon :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;public:component&amp;gt;&lt;br /&gt;
  &amp;lt;public:attach event=&amp;quot;onpropertychange&amp;quot; onevent=&amp;quot;propertyChanged()&amp;quot;
/&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
[MON SCRIPT ICI]&lt;br /&gt;
  /script&amp;gt;&lt;br /&gt;
&amp;lt;/public:component&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On voit ici que le script sera exécuté au changement d'une propriété du tag
sur lequel il est appliqué. Je ne vais pas décrire le script ici et je vous
propose plutôt de le télécharger &lt;a href="http://blog.djeepy1.net/public/labs/png-fix/png.htc" hreflang="fr"&gt;ici&lt;/a&gt;.
Retenez juste qu'il a besoin d'un gif transparent pour appliquer le filtre (je
n'ai pas cherché à comprendre ;-).&lt;/p&gt;
&lt;p&gt;Mais alors, comment appliqué le &lt;code&gt;behaviour&lt;/code&gt; ? En CSS, il
suffit d'ajouter :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;.alphaPNG {&lt;br /&gt;
  /* compris uniquement par IE --&amp;gt; javascript executé sur l'élément
*/&lt;br /&gt;
  behavior:url('png.htc');&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous aurez compris que j'ai juste à appliquer la classe CSS sur mon image
PNG :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;img src=&amp;quot;logoalpha.png&amp;quot; width=&amp;quot;512&amp;quot;
height=&amp;quot;241&amp;quot; class=&amp;quot;alphaPNG&amp;quot; /&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Vous noterez que je fixe la taille sinon, le rendu ne se fait pas.&lt;/p&gt;
&lt;p&gt;Pour voir ce que cela donne, rendez-vous sur cette page : &lt;a href="http://blog.djeepy1.net/public/labs/png-fix/SampleLogo.htm"&gt;http://blog.djeepy1.net/public/labs/png-fix/SampleLogo.htm&lt;/a&gt;&lt;br /&gt;

Pour télécharger tout le projet :  &lt;a href="http://blog.djeepy1.net/public/labs/png-fix/sample.zip"&gt;http://blog.djeepy1.net/public/labs/png-fix/sample.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;sub&gt;Merci à Mitch pour le logo.&lt;/sub&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/50Z_fBWUF5E" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/12/Afficher-un-PNG-avec-un-channel-alpha-sur-IE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/123055</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/12/Afficher-un-PNG-avec-un-channel-alpha-sur-IE</feedburner:origLink></entry>
    
  <entry>
    <title>Compilation conditionnelle en ASP.NET 2.0</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/nUYMFFuez8I/Compilation-conditionnelle-en-ASPNET-20" rel="alternate" type="text/html" title="Compilation conditionnelle en ASP.NET 2.0" />
    <id>urn:md5:a3ebb3f235de85dd6ae5db2cda834c7b</id>
    <updated>2007-06-10T17:51:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject>    
    <content type="html">    &lt;p&gt;Je me suis retrouvé récemment face à un doute technique. Après avoir
longuement expliqué l'intérêt de mettre des traces dans les différents
événements d'une page ou d'un contrôle ASP.NET et l'importance de conditionner
ces traces pour ne pas les retrouver dans l'environnement de production, je me
suis retrouvé coincé car la technique a changé entre ASP.NET 1.x et ASP.NET
2.0. Explication...&lt;/p&gt;
&lt;p&gt;Dans ma page, je mets les traces souhaitées :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee;"&gt;&lt;code&gt;#if TRACE&lt;br /&gt;
    Context.Trace.Write(&amp;quot;MaPage&amp;quot;, &amp;quot;Début de l'événement
OnLoad&amp;quot;);&lt;br /&gt;
#endif&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Les pages et les contrôles ASCX étant compilés dynamiquement à l'exécution,
il est inutile de mettre une directive de compilation dans votre projet (sauf
si vous utilisez la fonctionnalité de publication avec les pages précompilées
et non &lt;em&gt;updateable&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;En 1.x, j'avais l'habitude de configurer la directive dans la section
&amp;lt;compilation/&amp;gt; du web.config :&lt;/p&gt;
&lt;p style="BORDER-RIGHT: #111 1px; BORDER-TOP: #111 1px; BACKGROUND: #eee; BORDER-LEFT: #111 1px; BORDER-BOTTOM: #111 1px"&gt;
&lt;code&gt;&amp;lt;compilation debug=&amp;quot;true&amp;quot; compilerOptions=&amp;quot;/d:TRACE&amp;quot;&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Là, l'intellisense ne me propose pas l'attribut
&lt;strong&gt;CompilerOptions&lt;/strong&gt; ce qui m'est confirmé par une erreur au
runtime. Un petit tour sur la toile pour comprendre que la compilation est plus
complexe (fine) en ASP.NET 2.0.&lt;br /&gt;
Heureusement, il existe toujours cette configuration dans la directive de page,
ce qui n'est pas plus mal d'ailleurs pour restreindre le scope de la directive
de compilation :&lt;/p&gt;
&lt;p style="BORDER-RIGHT: #111 1px; BORDER-TOP: #111 1px; BACKGROUND: #eee; BORDER-LEFT: #111 1px; BORDER-BOTTOM: #111 1px"&gt;
&lt;code&gt;&amp;lt;%@Page Language=&amp;quot;C#&amp;quot; CompilerOptions=&amp;quot;/d:TRACE&amp;quot; %&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour ceux qui souhaitent utiliser la directive pour l'ensemble du site, il
faut vous tourner vers la section de configuration &amp;lt;system.codeDom&amp;gt; où on
doit déclarer des &amp;lt;compilers&amp;gt; avec leurs paramètres pour des jeux de
fichiers du site. dans l'exemple ci-dessous, on définit que les fichier
.cs seront compilés via un CSharpCodeProvider (csc.exe) avec la
directive TRACE.&lt;/p&gt;
&lt;p style="BORDER-RIGHT: #111 1px; BORDER-TOP: #111 1px; BACKGROUND: #eee; BORDER-LEFT: #111 1px; BORDER-BOTTOM: #111 1px"&gt;
&lt;code&gt;&amp;lt;system.codedom&amp;gt;&lt;br /&gt;
   &amp;lt;compilers&amp;gt;&lt;br /&gt;
     
&amp;lt;compiler            &lt;br /&gt;

         language=&amp;quot;c#;cs;csharp&amp;quot;
extension=&amp;quot;.cs&amp;quot;&lt;br /&gt;
        
compilerOptions=&amp;quot;/d:TRACE&amp;quot;&lt;br /&gt;
        
type=&amp;quot;Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;quot;
/&amp;gt;          &lt;br /&gt;
   &amp;lt;/compilers&amp;gt;&lt;br /&gt;
&amp;lt;/system.codedom&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Attention toutefois avec cette méthode car le site doit être exécuté en
FullTrust pour avoir accès aux options de compilation.&lt;/p&gt;
&lt;p&gt;&lt;sub&gt;Merci à Scott Allen pour les explications.&lt;/sub&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/nUYMFFuez8I" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/10/Compilation-conditionnelle-en-ASPNET-20#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/122293</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/10/Compilation-conditionnelle-en-ASPNET-20</feedburner:origLink></entry>
    
  <entry>
    <title>Sécurité : Cross-Site Request Forgery (CSRF/XSRF)</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/EfNX1NkJNwo/XSRF" rel="alternate" type="text/html" title="Sécurité : Cross-Site Request Forgery (CSRF/XSRF)" />
    <id>urn:md5:4f800bb45d3cd2fee8a4dee05bb52f91</id>
    <updated>2007-06-10T15:49:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>AJAX</dc:subject><dc:subject>ASP.NET</dc:subject><dc:subject>Securité</dc:subject>    
    <content type="html">    &lt;p&gt;Le magazine 01informatique vient de sortir un dossier complet sur la
sécurité dans les sites AJAX (&lt;a href="http://www.01net.com/01informatique/"&gt;http://www.01net.com/01informatique/&lt;/a&gt;).
Ayant entendu le teaser à la radio (&lt;q&gt;les développeurs ont &lt;em&gt;négligé&lt;/em&gt; la
sécurité&lt;/q&gt; !! oh mon dieu), je m'attendais à un article pour pinpins basé sur
des vérités générales. Je dois avouer que j'ai été surpris de la
qualité avec laquelle le dossier a été traité. Il ont même réussi à me
faire peur et j'ai repassé dans ma tête tous les sites web que j'ai pu
développer en me posant cette question : sont-ils sécurisés, y'a t-il des
failles ?&lt;/p&gt;
&lt;p&gt;Je me suis toutefois rassuré rapidement, ASP.NET est loin d'être un gruyère
et j'ai toujours appliqué les grands principes de sécurité du Web :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;vérifier toutes les saisies utilisateurs (Cross-Site Scripting, SQL
Injection, Overflow)&lt;/li&gt;
&lt;li&gt;faire attention à tout Cookie, les crypter si nécessaire&lt;/li&gt;
&lt;li&gt;limiter la surface d'exposition des API publiques (WS, Ajax, GET,
etc.)&lt;/li&gt;
&lt;li&gt;utiliser des ID temporaires (token ou ticket), casser les séquences
(IDENTITY)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cependant, j'ai été interpellé dans l'article par une technique de piratage
appelée : &lt;strong&gt;Cross-Site Request Forgery&lt;/strong&gt; (CSRF ou XSRF pour les
intimes). Ne connaissant pas cette technique, j'ai donc fait quelques
recherches pour me documenter et je me suis monté un petit lab pour voir
comment l'utiliser (et la contourner).&lt;/p&gt;
&lt;p&gt;Je ne vais pas décrire dans le détail l'histoire et la description de cette
faille donc je laisse la main a des spécialistes pour cette partie :
&lt;a href="http://www.cgisecurity.com/articles/csrf-faq.shtml"&gt;http://www.cgisecurity.com/articles/csrf-faq.shtml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le principe, c'est qu'une page, un site tiers, un mail, un document,
etc. exécute une requête vers le site à pirater en utilisant l'identité
&amp;quot;reconnue&amp;quot; de l'utilisateur. Cela paraît simple sur le papier mais bien
évidemment il faut réunir de nombreuses circonstances pour réussir son coup. La
principale étant que le site à pirater doit baser son &lt;strong&gt;authentification
sur un cookie persistant&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Démonstration :&lt;/ins&gt; Sur mon site, j'expose une fonctionnalité. On va
prendre la plus simple à détourner, le GET :
http://lab.djeepy1.net/CSRF/default.aspx?&lt;strong&gt;action=achat&amp;amp;article=123456&lt;/strong&gt;.
Supposons que dans le code behind, je vérifie uniquemement la présence d'un
cookie pour sécuriser l'action.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;if (Request.Cookies[&amp;quot;UserId&amp;quot;] != null)&lt;br /&gt;
{&lt;br /&gt;
    //on considère que l'utilisateur est OK&lt;br /&gt;
   
BusinessLayer.ShoppingMgr.Buy(Helper.Decrypt(Request.Cookies[&amp;quot;UserId&amp;quot;].Value),
Request[&amp;quot;ArticleId&amp;quot;]);&lt;br /&gt;
}&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le site tiers a juste à faire une requête, mais comment peut-il
récupèrer la bonne valeur de cookie ? Avec un &lt;strong&gt;Cross-Site
Scripting&lt;/strong&gt; (XSS) classique mais pour cela il doit pouvoir exécuter
du Javascript sur votre site (cf. règle n° 1 plus haut). L'autre moyen est à la
base du &lt;strong&gt;Cross-Site Request Forgery&lt;/strong&gt; : on s'arrange pour que
cette requête soit exécutée depuis le navigateur de l'utilisateur, ainsi, les
cookies sont automatiquement envoyés au site à pirater avec la fausse requête.
Par exemple, on vous envoie un message sur votre webmail avec une image
pointant sur la fonctionnalité GET. Vous ne voyez qu'une image &amp;quot;cassée&amp;quot; et
pourtant, l'action a eu lieu sur l'autre site.&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;&amp;lt;img
src=&amp;quot;http://site/?action=XX&amp;quot;/&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Pourquoi donc Ajax est-il pointé du doigt ?&lt;/ins&gt; Cette faille est
vieille comme le web (1998) mais très difficilement exploitable dans un
monde fondé sur les Postback. Avec Ajax, de nombreuses API s'exposent sans
pudeur sur le Web, bien souvent accessibles avec un simple GET.&lt;/p&gt;
&lt;p&gt;&lt;ins&gt;Comment sécuriser son site ?&lt;/ins&gt; Vérifiez toute l'API exposée et
vérifiez que vous n'utilisez &lt;strong&gt;pas de cookie persistant&lt;/strong&gt; pour
authentifier une requête ou tout du moins que TOUTE votre sécurité ne soit pas
basée sur cet unique moyen. Les Sessions ASP.NET sont protégées de cette faille
car elles se basent sur un cookie dit &amp;quot;de session&amp;quot; (temporaire et lié à la
navigation).&lt;/p&gt;
&lt;p&gt;Cette faille fait la une car on assiste depuis quelques temps à un
nouveau type de site Web : le site composite (ou mashup). Un site
composite est un assemblage de modules provenant de différents autres sites.
Exemple : mes dernières enchères depuis ebay, mes news depuis MSN, ma météo
depuis meteoconsult et mon site de chat depuis googletalk. Tout étant
exécuté avec le même contexte, un module peut potentiellement exploiter
les fonctionnalités d'un autre (via son API Javascript). &lt;/p&gt;
&lt;p&gt;En conclusion, ne cédez pas à la panique et suivez les conseils suivants
(qui s'appliquent même au dela de l'informatique) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;quels sont les risques (mobile du crime, conséquences) ?&lt;/li&gt;
&lt;li&gt;quelles sont les failles (ouvertures, exposition) ?&lt;/li&gt;
&lt;li&gt;comment je souhaite me protéger de ces risques ?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pour cela, prévoyez toujours une phase d'audit de votre site web avant la
mise en production.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/EfNX1NkJNwo" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/10/Securite-%3A-Cross-Site-Request-Forgery-CSRF/XSRF#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/122248</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/10/Securite-%3A-Cross-Site-Request-Forgery-CSRF/XSRF</feedburner:origLink></entry>
    
  <entry>
    <title>Katmaï aka SQL Server 2008</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/L7ODxXXVAMs/Katmai-aka-SQL-Server-2008" rel="alternate" type="text/html" title="Katmaï aka SQL Server 2008" />
    <id>urn:md5:8fc112cf4bc32490b6a860bd9f384284</id>
    <updated>2007-06-10T11:49:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2008</dc:subject>    
    <content type="html">    &lt;p&gt;Annoncé depuis quelques semaines, on en sait un peu plus sur la prochaine
version de SQL Server. La CTP est disponible en téléchargement depuis sa
présentation au Tech'ed d'Orlando.&lt;br /&gt;
Vous pouvez la télécharger ici : &lt;a href="http://connect.microsoft.com/sqlserver"&gt;http://connect.microsoft.com/sqlserver&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Attention, Microsoft a décidé de livrer les fonctionnalités par lot jusqu'à
la beta (tous les 2 mois apparemment) par conséquent cette CTP paraît
pauvre en nouveautés.&lt;/p&gt;
&lt;p&gt;Néanmoins, on y trouve entre autres :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les &lt;strong&gt;nouveaux types&lt;/strong&gt; de dates (il faudra attendre pour
tester le type coordonnées géographiques)&lt;/li&gt;
&lt;li&gt;une instruction T-SQL &lt;strong&gt;MERGE&lt;/strong&gt; pour faire de l'INSERT,
UPDATE, DELETE entre 2 jeux de données en une seule instruction&lt;/li&gt;
&lt;li&gt;une instruction T-SQL permettant d'avoir plusieurs niveaux de regroupement
: &lt;strong&gt;GROUPING SETS&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;paramètre de type &lt;strong&gt;Table&lt;/strong&gt; (j'ai hâte de voir ce que cela
peut donner du côté ADO.NET)&lt;/li&gt;
&lt;li&gt;des améliorations du &lt;strong&gt;language T-SQL&lt;/strong&gt; pour simplifier
l'écriture (ex : Declare @var int = 1)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Change Data Capture&lt;/strong&gt; : une sorte de trigger asynchrone&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Declarative Management Framework&lt;/strong&gt; : Framework de management
de serveurs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je vais essayer de détailler chacune de ces nouvelles fonctionnalités dans
différents posts. En attendant, je vous renvoie sur ce blog pour plus de
détails : &lt;a href="http://blogs.developpeur.org/christian/archive/2007/06/04/sql-server-katmai-sql-server-2008-est-son-nom-telechargez-la-beta.aspx"&gt;
http://blogs.developpeur.org/christian/archive/2007/06/04/sql-server-katmai-sql-server-2008-est-son-nom-telechargez-la-beta.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/L7ODxXXVAMs" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/10/Katmai-aka-SQL-Server-2008#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/122135</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/10/Katmai-aka-SQL-Server-2008</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise recrute</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/upLX2x5G8Bk/Bewise-recrute2" rel="alternate" type="text/html" title="Bewise recrute" />
    <id>urn:md5:9c75fc1d06ff8d7685580b3c255a188e</id>
    <updated>2007-06-04T23:08:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject>    
    <content type="html">    &lt;p&gt;&lt;strong&gt;Consultant expérimenté sur les technologies Microsoft
.NET&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous
recherchons un/une consultant(e) ayant une bonne connaissance sur les
technologies de développement Microsoft et maîtrisant les points suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Architecte logiciel,&lt;/li&gt;
&lt;li&gt;Microsoft .NET 2.0, 3.0,&lt;/li&gt;
&lt;li&gt;Visual C#.NET, Visual Basic,&lt;/li&gt;
&lt;li&gt;Windows Forms, Web Forms,&lt;/li&gt;
&lt;li&gt;Visual Studio .NET 2005&lt;/li&gt;
&lt;li&gt;SQL Server 2005.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il/elle devra maîtriser en plus au moins une des compétences suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft .NET 3.0,&lt;/li&gt;
&lt;li&gt;Mobilité,&lt;/li&gt;
&lt;li&gt;Analysis Services, Reporting Services,&lt;/li&gt;
&lt;li&gt;WSS V3, MOSS,&lt;/li&gt;
&lt;li&gt;C, C++ avancé,&lt;/li&gt;
&lt;li&gt;Microsoft CRM,&lt;/li&gt;
&lt;li&gt;VSTO,&lt;/li&gt;
&lt;li&gt;Biztalk Server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Une partie de la fonction consistera à gérer le domaine métier Bewise «
Solution Langage et Framework » (SLF), c'est-à-dire réaliser les tâches
suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Définition des prestations,&lt;/li&gt;
&lt;li&gt;Définir et valider les formations et leur contenu,&lt;/li&gt;
&lt;li&gt;Définir des prestations spécifiques,&lt;/li&gt;
&lt;li&gt;Réalisation de la veille technologique,&lt;/li&gt;
&lt;li&gt;Réalisation de la veille concurrentielle,&lt;/li&gt;
&lt;li&gt;Définition en collaboration avec le service commercial des actions
commerciales,&lt;/li&gt;
&lt;li&gt;Définition et réalisation d’événements techniques,&lt;/li&gt;
&lt;li&gt;Gestion des compétences de l’équipe,&lt;/li&gt;
&lt;li&gt;Gestion de la communication interne et externe,&lt;/li&gt;
&lt;li&gt;Réalisation des objectifs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vous êtes autonome, rigoureux, pédagogue avec un bon sens du relationnel et
passionné par les technologies Microsoft. Vous prendrez en charge nos projets
de développement, animerez des séminaires et formations et conseillerez nos
clients sur des points techniques avancés. Enfin, vous encadrerez l’équipe
SLF.&lt;/p&gt;
&lt;p&gt;Rémunération à définir selon le profil.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Poste basé à toulouse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une
équipe dynamique à taille humaine ? Bewise a besoin de vous. Envoyez votre CV à
&lt;a href="mailto:job@bewise.fr?subject=[Consultant0207]"&gt;job@bewise.fr&lt;/a&gt; en
indiquant « [Consultant0207] » dans le sujet du mail.&lt;/p&gt;
&lt;p&gt;Lien vers l'annonce : &lt;a href="http://www.bewise.fr/actualites/recrutement.aspx"&gt;http://www.bewise.fr/actualites/recrutement.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/upLX2x5G8Bk" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/04/Bewise-recrute2#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/119749</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/04/Bewise-recrute2</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise recrute</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/BI-NEQpNRC4/Bewise-recrute" rel="alternate" type="text/html" title="Bewise recrute" />
    <id>urn:md5:d5944fa53505f74aec9f2477d5cbd2ca</id>
    <updated>2007-06-04T23:06:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject>    
    <content type="html">    &lt;strong&gt;Développeur sur les technologies Microsoft&lt;/strong&gt;
&lt;p&gt;Bewise est une structure en forte expansion. Pour l’accompagner, nous
recherchons un développeur .NET (minimum 2 ans d’expérience) qui aura pour
mission :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Conception d’application Web et Windows,&lt;/li&gt;
&lt;li&gt;Développement, test et livraison de solutions,&lt;/li&gt;
&lt;li&gt;Animation de formations,&lt;/li&gt;
&lt;li&gt;Animation de séminaires&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il/elle travaillera sur les technologies de développement Microsoft
suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft .NET 2.0,&lt;/li&gt;
&lt;li&gt;Visual C#.NET, Visual Basic,&lt;/li&gt;
&lt;li&gt;Windows Forms, Web Forms&lt;/li&gt;
&lt;li&gt;Visual Studio 2005&lt;/li&gt;
&lt;li&gt;SQL Server 2005&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il/elle devra disposer en plus d'au moins une des compétences suivantes
:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Microsoft .NET 3.0,&lt;/li&gt;
&lt;li&gt;Mobilité,&lt;/li&gt;
&lt;li&gt;Analysis Services, Reporting Services,&lt;/li&gt;
&lt;li&gt;WSS V3, MOSS,&lt;/li&gt;
&lt;li&gt;C, C++ avancé,&lt;/li&gt;
&lt;li&gt;Microsoft CRM,&lt;/li&gt;
&lt;li&gt;VSTO.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qualités attendues : autonomie, rigueur, passionné par les technologies.&lt;/p&gt;
&lt;p&gt;Rémunération à définir selon le profil.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Poste basé à toulouse&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Votre profil correspond à notre poste ? Vous avez envie de rejoindre une
équipe dynamique à taille humaine ? Bewise a besoin de vous. Envoyez votre CV à
&lt;a href="mailto:job@bewise.fr?subject=[Developpeur0207]"&gt;job@bewise.fr&lt;/a&gt; en
indiquant « [Developpeur0207] » dans le sujet du mail.&lt;/p&gt;
&lt;p&gt;Lien vers l'annonce : &lt;a href="http://www.bewise.fr/actualites/recrutement.aspx"&gt;http://www.bewise.fr/actualites/recrutement.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/BI-NEQpNRC4" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/06/04/Bewise-recrute#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/119748</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/06/04/Bewise-recrute</feedburner:origLink></entry>
    
  <entry>
    <title>Afficher un titre sous la forme d'une image en CSS</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/hExIVi7a9xc/Afficher-un-titre-sous-la-forme-dune-image-en-CSS" rel="alternate" type="text/html" title="Afficher un titre sous la forme d'une image en CSS" />
    <id>urn:md5:b8a20df428d58056d219628b5846afff</id>
    <updated>2007-05-30T10:11:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>ASP.NET</dc:subject>
        <dc:subject>ASP.NET</dc:subject><dc:subject>CSS</dc:subject>    
    <content type="html">    &lt;p&gt;Tout développeur de site web a été confronté à cette problématique et la
réponse technique que l'on rencontre dans 99% des cas est de mettre un tag
&amp;lt;img /&amp;gt;. Cela répond certes à la problématique mais ce n'est en aucun cas
bulletproof&lt;sup&gt;[1]&lt;/sup&gt; et ne respecte pas les rudiments du web design.&lt;/p&gt;
&lt;p&gt;En effet, les moteurs de recherche ne considèreront pas comme pertinente
l'information, les outils d'accessibilité risquent d'être perdus et votre code
HTML peut devenir vite inmaintenable avec cette forme de conception. Comment
faire pour palier à ces problématiques ? Un webdesigner vous répondra : CSS
biensur ! Et je ferai la même réponse.&lt;/p&gt;
&lt;p&gt;Repartons du début :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Toujours commencer par trouver la sémantique correcte. Pour un titre, on
met un tag &amp;lt;h1/&amp;gt; (ou h2, etc.)&lt;/li&gt;
&lt;li&gt;on met le titre de façon TEXTUELLE pour être compris par les
outils donc &lt;code&gt;&amp;lt;h1 id=&amp;quot;maintitle&amp;quot;&amp;gt;ici mon super
titre&amp;lt;/h1&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;l'image est &lt;em&gt;décorative&lt;/em&gt; donc on la met dans le style.
Dans votre CSS, vous aurez&lt;br /&gt;
&lt;code&gt;#maintitle { background:url(title.gif) ; }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;à ce stade, tout semble correct sauf que le texte apparait au dessus de
l'image, il faut donc le faire disparaître. Il existe 2 solutions.&lt;/li&gt;
&lt;li&gt;1ère solution (la plus élégante) : mettre un tag
dit technique pour faire disparaître le texte. Le HTML devient
&lt;code&gt;&amp;lt;h1 id=&amp;quot;maintitle&amp;quot;&amp;gt;&amp;lt;span&amp;gt;ici mon super
titre&amp;lt;span&amp;gt;&amp;lt;/h1&amp;gt;&lt;/code&gt;.&lt;br /&gt;
Ensuite, il suffit de faire disparaître le &amp;lt;span&amp;gt; en CSS :
&lt;code&gt;#maintitle span {visibility:hidden&lt;sup&gt;[2]&lt;/sup&gt; ;}&lt;/code&gt;&lt;br /&gt;
&lt;ins&gt;Attention&lt;/ins&gt; : vous aurez certainement des problèmes de padding à
régler.&lt;/li&gt;
&lt;li&gt;2ème solution (à proscrire mais bon) : on a pas besoin du span et on décale
le texte pour le faire sortir de la fenêtre &lt;code&gt;#maintitle {
text-indent:99999px; }&lt;/code&gt; &lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;sup&gt;[1]&lt;/sup&gt;: j'adore ce terme et vous le trouverez souvent dans mes
propos (au même titre que le très fameux : &amp;quot;ça poutre&amp;quot;)&lt;br /&gt;
&lt;sup&gt;[2]&lt;/sup&gt;: on peut utiliser un &lt;em&gt;display:none&lt;/em&gt; mais la taille du
rendu du h1 devient minuscule (voire invisible); &lt;em&gt;visibility:hidden&lt;/em&gt;
permet de garde la taille que le texte aurait pris&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/hExIVi7a9xc" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/05/30/Afficher-un-titre-sous-la-forme-dune-image-en-CSS#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/117020</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/05/30/Afficher-un-titre-sous-la-forme-dune-image-en-CSS</feedburner:origLink></entry>
    
  <entry>
    <title>Partitionnement avec SQL Server 2005</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/osNyo7gj2M0/Partitionnement-avec-SQL-Server-2005" rel="alternate" type="text/html" title="Partitionnement avec SQL Server 2005" />
    <id>urn:md5:fe9104b792c03f69d291592205853f5b</id>
    <updated>2007-05-26T11:16:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>SQL Server 2005</dc:subject><dc:subject>TSQL</dc:subject>    
    <content type="html">    &lt;p&gt;Une des nombreuses fonctionnalités de SQL Server 2005 est le partitionnement
d'une table sur plusieurs Filegroups. Ce webcast met en pratique cette
technique intéressante.&lt;/p&gt;
&lt;p&gt;&lt;a title="Partitionnement avec SQL Server 2005" href="http://soapbox.msn.com/video.aspx?vid=489426d6-b4e0-4b7b-a8c3-2454266cebaf" target="_new"&gt;&lt;img height="84" alt="Partitionnement avec SQL Server 2005" src="http://a1811.g.akamai.net/f/1811/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/3e/e0/d2/27754c03-25f4-4c58-b691-ccd2c0d2e03e.jpg" width="112" border="0" /&gt;&lt;br /&gt;
Partitionnement avec SQL Server 2005&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Le niveau est assez simple, je pars de zéro et je montre les différentes
instructions à mettre en oeuvre. Vous y verrez entre autres les instructions
suivantes :&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;&lt;code&gt;Create Partition Function
ByCategory(int)&lt;br /&gt;
As Range Right For Values ('SQL Server 2005', 'ASP.NET')&lt;/code&gt;&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;Create Partition Scheme CategoryScheme&lt;br /&gt;
As Partition ByCategory To (FileGroup1, FileGroup2)&lt;/p&gt;
&lt;p style="BACKGROUND: #eee"&gt;SELECT $PARTITION.ByCategory(CategoryId) AS
Partition, COUNT(*) AS [COUNT]&lt;br /&gt;
FROM dbo.Billets&lt;br /&gt;
GROUP BY $PARTITION.ByCategory(CategoryId)&lt;br /&gt;
ORDER BY Partition ;&lt;/p&gt;
&lt;p&gt;Le code source se trouve sur ce &lt;a href="http://www.bewise.fr/download/webcasts/Partitionnement%20SQL%20Server.zip" hreflang="fr"&gt;lien&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;J'attends vos retours sur ce webcast. Utilisez-vous du partitionnement ? Si
oui, êtes-vous satisfait de cette fonctionnalité ? Sinon, des remarques ?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/osNyo7gj2M0" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/05/26/Partitionnement-avec-SQL-Server-2005#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/115642</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/05/26/Partitionnement-avec-SQL-Server-2005</feedburner:origLink></entry>
    
  <entry>
    <title>Le pattern Provider</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/i29BBuaI7Yg/Le-pattern-Provider" rel="alternate" type="text/html" title="Le pattern Provider" />
    <id>urn:md5:d5ec3fd4030edc2ff8341067c584d3f1</id>
    <updated>2007-05-26T11:00:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Architecture &amp; Patterns de conception</dc:subject>
        <dc:subject>Architecture</dc:subject><dc:subject>Design patterns</dc:subject>    
    <content type="html">    &lt;blockquote&gt;
&lt;p&gt;&lt;q&gt;La présentation de ce type de pattern de conception est un sujet maintes
fois traité et qui fait souvent débat. Cet article reprend le problème à sa
base et aboutit au développement d’un pattern complet, générique et
réutilisable. [...]&lt;/q&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;L'article complet est disponible sur le site de Bewise : &lt;a href="http://www.bewise.fr/fr-fr/technos/pages/DetailArticle.aspx?ID=54"&gt;http://www.bewise.fr/fr-fr/technos/pages/DetailArticle.aspx?ID=54&lt;/a&gt;&lt;br /&gt;

Le code source de l'article (avec un petit programme d'exemple) se trouve à
cette adresse : &lt;a href="http://www.bewise.fr/SiteCollectionDocuments/Articles/codearticle44.zip"&gt;&lt;span style="mso-bookmark: OLE_LINK1"&gt;
&lt;span style="mso-bookmark: OLE_LINK2"&gt;&lt;span style="FONT-SIZE: 9pt; FONT-FAMILY: 'Verdana','sans-serif'; mso-bidi-font-size: 11.0pt; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: FR; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
http://www.bewise.fr/download/articles/codearticle44.zip&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Un article que je voulais écrire depuis longtemps. J'espère que ce blog
saura retranscrire ma passion pour l'architecture, la conception et les
patterns. Je suis même assez chiant sur le sujet car tout doit être propre,
carré, justifié, normalisé et je suis bourré d'idées reçues. Rassurez-vous,
dans les projets, je fais passer la réalité du terrain avant mes conceptions
philosophiques mais je m'attache toujours à aligner mon idéal avec le
pragmatisme d'un projet.&lt;/p&gt;
&lt;p&gt;Tiens, et si je vous préparais un post sur la : &lt;strong&gt;Djeepy1’s
n-tiers philosophy&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/i29BBuaI7Yg" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/05/26/Le-pattern-Provider#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/115633</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/05/26/Le-pattern-Provider</feedburner:origLink></entry>
    
  <entry>
    <title>Bewise Developer Conference (BDC2007)</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/pTTAxm2NzBQ/Bewise-Developer-Conference-BDC2007" rel="alternate" type="text/html" title="Bewise Developer Conference (BDC2007)" />
    <id>urn:md5:a9cba75d75a5f6ed0e97860e19f90b57</id>
    <updated>2007-05-26T10:46:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>Bewise</dc:subject>
        <dc:subject>Bewise</dc:subject><dc:subject>Reporting Services</dc:subject>    
    <content type="html">    &lt;p&gt;L'événement est passé depuis près d'un mois et je n'avais pas vraiment
commencé mon blog mais je vais tout de même vous parler de la BDC 2007.&lt;/p&gt;
&lt;p&gt;Les DevDays ne sont plus. Microsoft a remplacé cet événement par un unique
show à Paris sur trois jours. Afin de ne pas délaisser la communauté
toulousaine, Bewise, co-organisateur des DevDays à Toulouse, a décidé
d'organiser son propre événement : la Bewise Developer Conference (plus connue
sous son petit nom BDC).&lt;/p&gt;
&lt;h4&gt;&lt;a href="http://www.bewise.fr/BDC2007/"&gt;http://www.bewise.fr/BDC2007/&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;L'événement a été un succès. Plus de 300 personnes sont venus voir les 19
experts de Bewise et Microsoft sur 15 espaces de démonstrations des dernières
technologies MS.&lt;br /&gt;
Merci à vous.&lt;/p&gt;
&lt;p&gt;Personnellement, j'animais un stand sur le &lt;strong&gt;Business
Intelligence&lt;/strong&gt; et plus particulièrement sur les problèmatiques de
&lt;strong&gt;Reporting&lt;/strong&gt; (avec SQL Server 2005 ;-)). J'ai webcasté ma démo
visualisable en suivant le lien ci-dessous :&lt;/p&gt;
&lt;p&gt;&lt;a title="BDC 2007 - DGD2" href="http://soapbox.msn.com/video.aspx?vid=f8a1b939-9c60-4dbe-a7f7-0a9a126302bd" target="_new"&gt;&lt;img height="84" alt="BDC 2007 - DGD2" src="http://a281.g.akamai.net/f/281/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/07/0f/1d/20bf2c04-ab2b-4af0-b684-21f9c11d0f07.jpg" width="112" border="0" /&gt;&lt;br /&gt;
BDC 2007 - DGD2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Les slides et autres codes source sont disponible sur le site de Bewise
: &lt;a href="http://www.bewise.fr/BDC2007/sessions.aspx"&gt;http://www.bewise.fr/BDC2007/sessions.aspx&lt;/a&gt; (PS
: la démo WCF est aussi consultable en webcast).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Enfin, pour le fun, une vidéo sur les coulisses de cette BDC où je dis
n'importe quoi :&lt;/p&gt;
&lt;p&gt;&lt;a title="BDC 2007 - Les coulisses, épisode 4" href="http://soapbox.msn.com/video.aspx?vid=ab633297-7d83-4df5-b89d-2363ab050eb4" target="_new"&gt;&lt;img height="84" alt="BDC 2007 - Les coulisses, épisode 4" src="http://a1901.g.akamai.net/f/1901/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/3b/2c/8d/ef49acd8-f787-4d45-8390-e552e38d2c3b.jpg" width="112" border="0" /&gt;&lt;br /&gt;
BDC 2007 - Les coulisses, épisode 4&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/pTTAxm2NzBQ" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/05/26/Bewise-Developer-Conference-BDC2007#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/115630</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/05/26/Bewise-Developer-Conference-BDC2007</feedburner:origLink></entry>
    
  <entry>
    <title>Visual Studio Team Edition for Database Professionnals (TeamDB)</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/KT5MdoHXC-Y/Visual-Studio-Team-Edition-for-Database-Professionnals-TeamDB" rel="alternate" type="text/html" title="Visual Studio Team Edition for Database Professionnals (TeamDB)" />
    <id>urn:md5:8aab8b8f1cff9e67ddf7674a33a713bc</id>
    <updated>2007-05-26T10:28:00+02:00</updated>
    <author><name>Djeepy1</name></author>
        <dc:subject>SQL Server</dc:subject>
        <dc:subject>Team System</dc:subject><dc:subject>Visual Studio</dc:subject>    
    <content type="html">    &lt;p&gt;Il y a quelques temps, j'ai enregistré une série de webcasts sur le petit
dernier de la suite Visual Studio Team Suite, à savoir, une version dédiée à la
gestion de base de données.&lt;br /&gt;
Ces webcasts devaient être mis en ligne sur le centre de compétences Team
System de Microsoft mais pour je ne sais quelle raison, ils ne l'ont pas
fait.&lt;/p&gt;
&lt;p&gt;Ce sont mes premiers webcasts donc la qualité laisse à désirer, surtout au
niveau du son donc faites péter les watts.&lt;/p&gt;
&lt;a title="TeamDB - Part 1 - Présentation et prise en main" href="http://soapbox.msn.com/video.aspx?vid=45dcb73b-b817-4420-9b5d-2ff2acfa84c0" target="_new"&gt;&lt;/a&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span class="videoDetailsDescription" title="Découvrez au travers de cette série de Webcast la dernière version de Visual Studio, membre de la famille Team System, à destination des professionnels de la base de données. Les principales fonctionnalités de l’outil sont passées en revue, de l’importation de schéma au déploiement des modifications."&gt;
&amp;quot; Découvrez au travers de cette série de Webcast la dernière version de Visual
Studio, membre de la famille Team System, à destination des professionnels de
la base de données. Les principales fonctionnalités de l’outil sont passées en
revue, de l’importation de schéma au déploiement des modifications.
&amp;quot;&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img height="84" alt="TeamDB - Part 1 - Présentation et prise en main" src="http://a1971.g.akamai.net/f/1971/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/36/a1/82/1fe288ba-1ef4-4a88-a5f5-ff26c182a136.jpg" width="112" border="0" /&gt;&lt;br /&gt;
TeamDB - Part 1 - Présentation et prise en main&lt;br /&gt;
 &lt;a title="TeamDB - Part 2 - Les tests" href="http://soapbox.msn.com/video.aspx?vid=4f3470ba-09a1-499f-a6dd-9be2586c675e" target="_new"&gt;&lt;img height="84" alt="TeamDB - Part 2 - Les tests" src="http://a1992.g.akamai.net/f/1992/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/58/c1/33/a64297e3-5b2d-487e-b420-e2760433c158.jpg" width="112" border="0" /&gt;&lt;br /&gt;
TeamDB - Part 2 - Les tests&lt;/a&gt;&lt;br /&gt;
&lt;a title="TeamDB - Part 3 - La compilation et le déploiement" href="http://soapbox.msn.com/video.aspx?vid=84f111a0-95cd-4b8e-afd2-e0dc16065087" target="_new"&gt;&lt;img height="84" alt="TeamDB - Part 3 - La compilation et le déploiement" src="http://a123.g.akamai.net/f/123/23830/v0001/msnuuv1.download.akamai.com/23830/thumbs/prod/ff/43/04/d16940d0-31e0-4f47-b1b7-63bb010443ff.jpg" width="112" border="0" /&gt;&lt;br /&gt;
TeamDB - Part 3 - La compilation et le déploiement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Bon visionnage&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/KT5MdoHXC-Y" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/05/26/Visual-Studio-Team-Edition-for-Database-Professionnals-TeamDB#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/115623</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/05/26/Visual-Studio-Team-Edition-for-Database-Professionnals-TeamDB</feedburner:origLink></entry>
    
  <entry>
    <title>Bienvenue</title>
    <link href="http://feedproxy.google.com/~r/djeepy1/~3/Q586lomsTKU/Bienvenue" rel="alternate" type="text/html" title="Bienvenue" />
    <id>urn:md5:5db56028ab9f7ca84a580bf4d5dc654a</id>
    <updated>2007-02-17T10:44:00+01:00</updated>
    <author><name>Djeepy1</name></author>
            
    <content type="html">    &lt;p&gt;Bienvenue sur ce blog technologique qui parlera entre autres de :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;.NET en général&lt;/li&gt;
&lt;li&gt;ASP.NET en particulier&lt;/li&gt;
&lt;li&gt;SQL Server 2005&lt;/li&gt;
&lt;li&gt;Business Intelligence&lt;/li&gt;
&lt;li&gt;Architecture &amp;amp; Patterns de conception&lt;/li&gt;
&lt;li&gt;Microsoft&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Et bien entendu de &lt;big&gt;Bewise&lt;/big&gt;, la boite qui m'emploie.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/djeepy1/~4/Q586lomsTKU" height="1" width="1"/&gt;</content>
    
    

    
          <wfw:comment>http://blog.djeepy1.net/post/2007/02/17/Bienvenue#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.djeepy1.net/feed/atom/comments/80777</wfw:commentRss>
      <feedburner:origLink>http://blog.djeepy1.net/post/2007/02/17/Bienvenue</feedburner:origLink></entry>
  
</feed>
