<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Homsys &#187; Trucs &amp; astuces</title>
	<atom:link href="http://blog.homsys.com/category/trucs-astuces/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.homsys.com</link>
	<description>Business Intelligence</description>
	<lastBuildDate>Fri, 10 Feb 2012 16:31:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>G&#233;n&#233;ration de fichiers multiples &#224; partir d&#8217;un mapping PowerCenter</title>
		<link>http://blog.homsys.com/trucs-astuces/generer-au-travers-d%e2%80%99un-mapping-powercenter-plusieurs-fichiers-de-sortie-qui-ont-pour-nom-la-valeur-contenue-dans-un-fichier-en-entree</link>
		<comments>http://blog.homsys.com/trucs-astuces/generer-au-travers-d%e2%80%99un-mapping-powercenter-plusieurs-fichiers-de-sortie-qui-ont-pour-nom-la-valeur-contenue-dans-un-fichier-en-entree#comments</comments>
		<pubDate>Fri, 10 Feb 2012 15:30:00 +0000</pubDate>
		<dc:creator>Steeve Caston</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[Split de fichiers]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/trucs-astuces/generer-au-travers-d%e2%80%99un-mapping-powercenter-plusieurs-fichiers-de-sortie-qui-ont-pour-nom-la-valeur-contenue-dans-un-fichier-en-entree</guid>
		<description><![CDATA[Objectif : générer, au travers d’un mapping PowerCenter, plusieurs fichiers de sortie qui ont pour nom la valeur contenue dans un fichier en entrée.
Exemple :

Construction du mapping : le mapping doit contenir au minimum les objets suivants :

Un objet « Source » : permet la définition des données en entrée.
Un objet « Expression Definition » [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Objectif</strong> : générer, au travers d’un mapping PowerCenter, plusieurs fichiers de sortie qui ont pour nom la valeur contenue dans un fichier en entrée.</p>
<p>Exemple :</p>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image.png"><img class="aligncenter" style="border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image_thumb.png" border="0" alt="image" width="312" height="99" /></a></p>
<p><strong>Construction du mapping</strong> : le mapping doit contenir au minimum les objets suivants :</p>
<ul>
<li>Un objet « <strong>Source</strong> » : permet la définition des données en entrée.</li>
<li>Un objet « <strong>Expression Definition</strong> » : permet la définition de variables nécessaire au split des données en entrée.</li>
<li>Un objet « <strong>Transaction Control Transformation</strong> » : permet la génération des différents fichiers de sortie.</li>
<li>Un objet « <strong>Target</strong> » : permet la définition des fichiers de sortie.</li>
</ul>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0024.jpg"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0024_thumb.jpg" border="0" alt="clip_image002[4]" width="454" height="94" /></a></p>
<p><strong> </strong></p>
<p><strong>Définition des objets</strong> :</p>
<ul>
<li>L’objet « <strong>Source</strong> » : dans cet exemple, il est supposé que le nom des différents fichiers de sortie est situé en début de ligne (colonne NOM_FIC).</li>
</ul>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0044.jpg"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0044_thumb.jpg" border="0" alt="clip_image004[4]" width="303" height="259" /></a></p>
<p>Il est également supposé que cette colonne est séparée du reste de la ligne par un caractère présent une seule fois par enregistrement.</p>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image1.png"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image_thumb1.png" border="0" alt="image" width="437" height="188" /></a></p>
<ul>
<li>L’objet « <strong>Expression Definition</strong> » : Dans l’exemple suivant, l’objet contient :</li>
</ul>
<p>En entrée :</p>
<ul>
<li>
<ul>
<li>NOM_FIC : contient le nom des fichiers de sortie tel que donné par le fichier source</li>
<li>RESTE_LIGNE : contient le reste de l’enregistrement</li>
</ul>
<ul>En intermédiaire :</p>
<li>Curr_Name : permet de stocker le nom de fichier de l’enregistrement précédent.</li>
</ul>
</li>
<p>En sortie :</ul>
<ul>
<li>
<ul>
<li>NOM_FIC_OUT : contient le nom complet des fichiers de sortie (répertoire + nom du fichier)</li>
<li>RESTE_OUT : contient le reste de l’enregistrement avec suppression des espaces en fin d’enregistrement.</li>
<li>Prev1_Out : contient le calcul de la variable Curr_Name</li>
<li>Prev2_Out : contient le nom du fichier de sortie tel que donné en entrée</li>
</ul>
</li>
</ul>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0026.jpg"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0026_thumb.jpg" border="0" alt="clip_image002[6]" width="244" height="176" /></a></p>
<ul>
<li>L’objet « <strong>Transaction Control Transformation</strong> » :</li>
</ul>
<p>C’est dans cet objet que se réalise la génération des multiples fichiers de sortie. Dans l’onglet « Properties », il faut renseigner l’attribut « Transaction Control Condition ». Dans le cas où le nom de fichier courant est différent du nom de fichier de l’enregistrement précédent, il faut signifier la rupture avec la commande TC_COMMIT_BEFORE. Dans le cas contraire, il faut utiliser la commande TC_CONTINUE_TRANSACTION pour stocker les enregistrements jsqu’à la prochaine rupture.</p>
<p><strong>N.B.</strong> : pour optimiser les performances et minimiser la log, il faut avoir en entrée un fichier trié sur le nom de fichier.</p>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0046.jpg"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/clip_image0046_thumb.jpg" border="0" alt="clip_image004[6]" width="244" height="203" /></a></p>
<ul>
<li>L’objet « <strong>Target</strong> » :</li>
</ul>
<p>Afin de signifier que le nom des fichiers de sortie est passé en paramètre, il faut cliquer sur le bouton « Add Filename column to the folder ». Il faudra renseigner le nouveau champ « FileName » avec la variable en sortie du « Transaction Control Transformation » qui contient le nom des fichiers.</p>
<p style="text-align: center"><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image2.png"><img class="aligncenter" style="float: none;margin-left: auto;margin-right: auto;border-width: 0px" src="http://blog.homsys.com/wordpress/wp-content/uploads/2012/02/image_thumb2.png" border="0" alt="image" width="367" height="233" /></a></p>
<p>Aucune particularité n’est nécessaire en ce qui concerne la configuration de le Session.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/generer-au-travers-d%e2%80%99un-mapping-powercenter-plusieurs-fichiers-de-sortie-qui-ont-pour-nom-la-valeur-contenue-dans-un-fichier-en-entree/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation d’Oracle client sur un poste 64 bits et configuration de SSIS</title>
		<link>http://blog.homsys.com/trucs-astuces/installation-d%e2%80%99oracle-client-sur-un-poste-64-bits-et-configuration-de-ssis</link>
		<comments>http://blog.homsys.com/trucs-astuces/installation-d%e2%80%99oracle-client-sur-un-poste-64-bits-et-configuration-de-ssis#comments</comments>
		<pubDate>Mon, 05 Dec 2011 10:42:19 +0000</pubDate>
		<dc:creator>Steeve Carbonaro</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=935</guid>
		<description><![CDATA[
 
     1. Introduction

L&#8217;objectif de cet article est de vous aidez à configurer votre poste 64 bits pour travailler avec des connexions Oracle client en utilisant SSIS.

     2. Installation

Pour commencer nous allons installer la version cliente 32 bits d&#8217;oracle. Nous utiliserons comme exemple, la version d&#8217;oracle 11.2.0

  [...]]]></description>
			<content:encoded><![CDATA[<p>
 </p>
<h1>     1. Introduction<br />
</h1>
<p>L&#8217;objectif de cet article est de vous aidez à configurer votre poste 64 bits pour travailler avec des connexions Oracle client en utilisant SSIS.
</p>
<h1>     2. Installation<br />
</h1>
<p>Pour commencer nous allons installer la version cliente 32 bits d&#8217;oracle. Nous utiliserons comme exemple, la version d&#8217;oracle 11.2.0
</p>
<h2>     2.1. Installation Oracle 32 bits.<br />
</h2>
<p>Choisissez<strong> Exécution </strong>comme type d&#8217;installation, ceci vous permets de notamment de bénéficier d&#8217;outil comme sql developper  (pour se connecter sur des BDD oracle, faire des requêtes sql etc…)
</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio19.png">
	</p>
<p>Après avoir choisi vos langues, choisissez le répertoire où sera installé Oracle. Si vous êtes plusieurs à travailler sur ce poste, je vous conseil de choisir d&#8217;installer la version cliente sur un répertoire racine (C : ou D :..)
</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio29.png">
	</p>
<p>Pour le reste, faites <strong>Suivant</strong> jusqu&#8217;à la fin de l&#8217;installation.
</p>
<h2>       2.2. Installation Oracle 64 bits.<br />
</h2>
<p>Pour l&#8217;installation de la version 64 bits procédez de la même façon que la version 32 bits. Choisissez à nouveau un répertoire à la racine de préférence.
</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio39.png">
	</p>
<p>Faites <strong>Suivant</strong> jusqu&#8217;à la fin de l&#8217;installation.
</p>
<h1>    3. Configuration des providers Oracle<br />
</h1>
<p>Vous devez modifier des valeurs de clé de registre, afin de bénéficier des providers Oracle avec SSIS.
</p>
<h2>     3.1. Configuration 32 bits<br />
</h2>
<p>Connectez vous à la base de registre (tapez la commande <strong>regedit </strong>dans exécuter).  Dans le registre HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\MSDTC\MTxOCI, modifiez les clés suivantes :
</p>
<ul>
<li>OracleOciLib = oci.dll
</li>
<li>OracleSqlLib = orasql11.dll   (old: SQLLib80.dll) 
</li>
<li>OracleXaLib = oraclient11.dll  (old: xa80.dll) 
</li>
</ul>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio49.png">
	</p>
<h2>      3.2. Configuration 64 bits<br />
</h2>
<p>Dans le registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI, modifiez les clés suivantes :
</p>
<ul>
<li>OracleOciLib = oci.dll
</li>
<li>OracleSqlLib = orasql11.dll   (old: SQLLib80.dll) 
</li>
<li>OracleXaLib = oraclient11.dll  (old: xa80.dll) 
</li>
</ul>
<p><span style="color:red;font-size:14pt"><strong>Vous devez rebooter la machine.<br />
</strong></span></p>
<p>
 </p>
<h1>4. Créer votre connexion Oracle dans le TNSNAME<br />
</h1>
<p>Pour créer votre connexion Oracle vous avez 2 solutions soit vous passez par l&#8217;interface d&#8217;oracle comme ci-dessous, soit vous allez directement la configurer dans le fichier TNSNAME avec Notepad.
</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio59.png">
	</p>
<p>le TNSNAME  est dans le répertoire suivant %ORACLE_HOME%/network/ADMIN/ (<strong>emplacement du logiciel</strong> que vous avez choisi pendant l&#8217;installation). Vous devez le configurer dans le répertoire 32 bits et 64 bits
</p>
<p>Pour vérifier si votre connexion est valide, ouvrez un éditeur de commande et tapez la commande <strong>tnsping</strong><br />
		<em>NonDuServiceOracle<br />
</em></p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio69.png">
	</p>
<p>Cette commande permet de vérifier que votre service Oracle répond à travers le réseau.
</p>
<h1>    5. Configuration de SSIS<br />
</h1>
<p>Vous pouvez à présent, utiliser votre connexion cliente Oracle avec SSIS. Dans votre projet SSIS, choisissez une connexion OLEDB de type <strong>OLEDB for Oracle Provider</strong>. Il y a deux choses importantes à paramétrer. La solution du projet en mode 32 bits et le connecteur OLEDB.
</p>
<h2>     5.1. Forcer la solution du projet SSIS à travailler en 32 bits<br />
</h2>
<p><span style="color:red"><strong>Sachez que les providers OLEDB pour Oracle sur les plateformes Microsoft marchent qu&#8217;en 32 bits</strong>. </span>Dans les propriétés de la  solution SSIS changer l&#8217;option suivante :
</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio79.png">
	</p>
<h2>     5.2. Modifier la propriété UseDefaultCodePage du connecteur OLEDB<br />
</h2>
<p>Pour éviter un warning au niveau du connecteur OLEDB modifier la propriété suivante :
</p>
<p>
 </p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/12/120511_1008_Installatio89.png">
	</p>
<p>
 </p>
<p>Voilà vous pouvez extraire vos données.
</p>
<p>FIN
</p>
<p>
 </p>
<p>
 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/installation-d%e2%80%99oracle-client-sur-un-poste-64-bits-et-configuration-de-ssis/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gestion des jobs sur sql server agent sans passer par sql server management studio</title>
		<link>http://blog.homsys.com/trucs-astuces/gestion-des-jobs-sur-sql-server-agent-sans-passer-par-sql-server-management-studio</link>
		<comments>http://blog.homsys.com/trucs-astuces/gestion-des-jobs-sur-sql-server-agent-sans-passer-par-sql-server-management-studio#comments</comments>
		<pubDate>Fri, 21 Oct 2011 15:35:40 +0000</pubDate>
		<dc:creator>Steeve Carbonaro</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[SQL-Server]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=881</guid>
		<description><![CDATA[Lorsque l&#8217;on veut démarrer un job sur sql server agent, il n&#8217;est pas forcément nécessaire d&#8217;utiliser l&#8217;interface sql server management studio. Vous pouvez piloter vos jobs, soit en créant une interface maison (une web part par exemple) ou directement par sql. Je vous propose de vous décrire les étapes les plus utilisées.
1. Récupération de liste [...]]]></description>
			<content:encoded><![CDATA[<p>Lorsque l&#8217;on veut démarrer un job sur sql server agent, il n&#8217;est pas forcément nécessaire d&#8217;utiliser l&#8217;interface sql server management studio. Vous pouvez piloter vos jobs, soit en créant une interface maison (une web part par exemple) ou directement par sql. Je vous propose de vous décrire les étapes les plus utilisées.</p>
<h3>1. Récupération de liste des jobs et leurs statuts</h3>
<p><span style="font-size: 10pt;">Pour récupérer la liste des jobs, je vous conseille de faire appel a la procédure stockée suivante <strong>msdb.dbo.sp_help_job</strong> . Cette procédure ramène les informations complètes sur les jobs y compris le statut en cours.<strong><br />
</strong></span></p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1522_Gestiondesj17.png" alt="" /><span style="font-size: 10pt;"><strong><br />
</strong></span></p>
<p><span style="font-size: 10pt;">On va s&#8217;intéresser à 2 champs :<br />
</span></p>
<ul>
<li><span style="font-size: 10pt;"><strong>job_id</strong> : identifiant du job nécessaire pour accéder à l&#8217;historique des jobs.<br />
</span></li>
<li>
<div><span style="font-size: 10pt;"><strong>Current_execution_status </strong>: spécifie le statut en cours du job.<strong><br />
</strong></span></div>
<p><span style="font-size: 10pt; text-decoration: underline;">Définition de la liste des statuts :</span><span style="font-family: Consolas; font-size: 9pt;"><span style="color: green;"><br />
<strong>0 = arrêté ou suspendu,</strong></span><strong><br />
<span style="color: green;">1 = en cours d&#8217;exécution,</span><br />
<span style="color: green;">2 = en attente d&#8217;un thread,</span><br />
<span style="color: green;">3 = réessaie,</span><br />
<span style="color: green;">4 = arrêté,</span><br />
<span style="color: green;">5 = suspendu,</span><br />
<span style="color: green;">6 = en attente de terminaison d&#8217;étape,</span><br />
<span style="color: green;">7 = exécutions des actions d&#8217;achèvement</span></strong></span><span style="font-size: 10pt; text-decoration: underline;"><br />
</span></li>
</ul>
<h3>2. Démarrage et arrêt d&#8217;un job</h3>
<h4>2.1 Démarrage du job</h4>
<p><span style="font-size: 10pt;">Pour démarrer un Job sans passé par l&#8217;interface de sql server agent, il suffit de faire appel à la procédure stockée <strong>msdb.dbo.sp_start_job .</strong>Cette procédure nécessite en paramètre  le nom du job à exécuter. Comme dans l&#8217;exemple ci-dessous :<strong><br />
</strong></span></p>
<p><span style="font-size: 10pt;"><span style="color: blue; font-family: Courier New;">Exec</span><span style="font-family: Courier New;"> msdb<span style="color: gray;">.</span>dbo<span style="color: gray;">.</span><span style="color: maroon;">sp_start_job</span><span style="color: blue;"><br />
</span><span style="color: red;">&#8216;My_Job_Name&#8217;</span></span><br />
</span></p>
<h4>2.2 Arrêt du job</h4>
<p><span style="font-size: 10pt;">Pour stopper  un Job sans passé par l&#8217;interface de sql server agent, il suffit de faire appel à la procédure stockée <strong>msdb.dbo.sp_stop_job . </strong>Cette procédure nécessite également en paramètre  le nom du job à exécuter. Comme dans l&#8217;exemple ci-dessous :<strong><br />
</strong></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">Exec</span> msdb<span style="color: gray;">.</span>dbo<span style="color: gray;">.</span><span style="color: maroon;">sp_stop_job</span><span style="color: blue;"><br />
</span><span style="color: red;">&#8216;My_Job_Name&#8217;<br />
</span></span></p>
<h3>3. Connaître le résultat de l&#8217;exécution d&#8217;un job</h3>
<p>Avec la table  <strong>sysjobhistory</strong> il est possible de savoir si l&#8217;exécution d&#8217;un job c&#8217;est terminé avec succès ou non. Après avoir récupérer au préalable l&#8217;ID du job, il vous suffit de récupérer la dernière instance, est lire la colonne run_status pour connaître le résultat de l&#8217;exécution.</p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span> [instance_id] <span style="color: gray;">,</span>[step_id]<span style="color: gray;">,</span>[run_status] <span style="color: blue;">FROM</span> [msdb]<span style="color: gray;">.</span>[dbo]<span style="color: gray;">.</span>[sysjobhistory] <span style="color: blue;">where</span> [job_id]<span style="color: gray;">= </span><span style="color: red;">&#8216;JobID&#8217;</span><br />
<span style="color: gray;">and</span> [instance_id] <span style="color: gray;">in</span><span style="color: blue;"><br />
</span><span style="color: gray;">(</span><span style="color: blue;">select</span><br />
<span style="color: fuchsia;">Max</span><span style="color: gray;">(</span>[instance_id]<span style="color: gray;">) </span><span style="color: blue;">FROM</span> [msdb]<span style="color: gray;">.</span>[dbo]<span style="color: gray;">.</span>[sysjobhistory] <span style="color: blue;">where</span> [job_id] <span style="color: gray;">=</span><br />
<span style="color: red;">&#8216;JobID&#8217;</span><span style="color: gray;">)</span><br />
</span></p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1522_Gestiondesj27.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/gestion-des-jobs-sur-sql-server-agent-sans-passer-par-sql-server-management-studio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Créer une table de logs pour Analysis Services</title>
		<link>http://blog.homsys.com/trucs-astuces/creer-une-table-de-logs-pour-analysis-services</link>
		<comments>http://blog.homsys.com/trucs-astuces/creer-une-table-de-logs-pour-analysis-services#comments</comments>
		<pubDate>Fri, 21 Oct 2011 14:57:33 +0000</pubDate>
		<dc:creator>Sébastien Fantini</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[analysis services]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=844</guid>
		<description><![CDATA[L&#8217;idée est de montrer comment créer une table SQL qui enregistre les logs d&#8217;une instance Analysis Services.
Ces logs permettront par la suite d&#8217;extraire des informations tel que :

Le nombre d&#8217;utilisateurs uniques d&#8217;un cube
Le nombre de sessions uniques

Ces mesures pourront alors être analysée et suivie par date et par heure.
Configurer l&#8217;instance Analysis Services
La configuration par défaut :


Au niveau [...]]]></description>
			<content:encoded><![CDATA[<p>L&#8217;idée est de montrer comment créer une table SQL qui enregistre les logs d&#8217;une instance Analysis Services.</p>
<p>Ces logs permettront par la suite d&#8217;extraire des informations tel que :</p>
<ul>
<li>Le nombre d&#8217;utilisateurs uniques d&#8217;un cube</li>
<li>Le nombre de sessions uniques</li>
</ul>
<p>Ces mesures pourront alors être analysée et suivie par date et par heure.</p>
<h3>Configurer l&#8217;instance Analysis Services</h3>
<p>La configuration par défaut :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl13.png" alt="" /></p>
<ul>
<li>Au niveau du paramètre <strong>Log\QueryLog\QueryLogConnectionString</strong> et de la colonne <strong>Value</strong>, cliquez sur l&#8217;icône de sélection :</li>
</ul>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl22.png" alt="" /></p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl33.png" alt="" /></p>
<ul>
<li>Enfin passez le paramètre<strong> Log\QueryLog\CreateQueryLogTable</strong> à <strong>True</strong> :</li>
</ul>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl43.png" alt="" /></p>
<ul>
<li>Puis validez en cliquant sur le bouton <strong>OK</strong>.</li>
</ul>
<p>La table a alors été créé dans la base de données cible précédemment sélectionnée :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl53.png" alt="" /></p>
<p>Après quelques requêtes sur le cube, la table se peuple ainsi :</p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span><br />
<span style="color: blue;">TOP</span> 1000 [MSOLAP_Database]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: gray;">,</span>[MSOLAP_ObjectPath]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: gray;">,</span>[MSOLAP_User]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: gray;">,</span>[Dataset]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: gray;">,</span>[StartTime]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: gray;">,</span>[Duration]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">FROM</span> [Audit]<span style="color: gray;">.</span>[dbo]<span style="color: gray;">.</span>[OlapQueryLog]</span></p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl63.png" alt="" /></p>
<h3>L&#8217;option QueryLogSampling</h3>
<p>L&#8217;option <strong>Log\QueryLog\QueryLogSampling</strong> permet de spécifier la fréquence de l&#8217;échantillon des requêtes remontées dans la table de logs.</p>
<p>Une valeur à 10, signifie qu&#8217;une requête sur 10 serait remontée dans la table de logs.</p>
<p>Si vous souhaitez capturer toutes les logs, il vous faudra donc passer cette valeur à 1 :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl73.png" alt="" /></p>
<p>Bien entendu, une valeur de 1 peut occasionner de la charge sur votre serveur de base de données.</p>
<h3>Requêtes types</h3>
<p>Récupération d&#8217;information sur l&#8217;utilisation du cube ces dernières 24 heures :</p>
<p><span style="color: green; font-family: Courier New; font-size: 10pt;">&#8211; Nb d&#8217;utilisateurs uniques<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span><br />
<span style="color: fuchsia;">COUNT<span style="color: blue;"><br />
<span style="color: gray;">(<span style="color: blue;">DISTINCT</span> [MSOLAP_User] )<br />
</span></span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">FROM</span> [dbo]<span style="color: gray;">.</span>[OlapQueryLog]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">WHERE</span> [StartTime] <span style="color: gray;">&gt;=</span><br />
<span style="color: fuchsia;">DATEADD<span style="color: gray;">(<span style="color: fuchsia;">DAY<span style="color: gray;">,</span><br />
<span style="color: gray;">-</span>1<span style="color: gray;">,</span> GETDATE<span style="color: gray;">())<br />
</span></span></span></span></span></p>
<p><span style="color: green; font-family: Courier New; font-size: 10pt;">&#8211; Nb de requêtes executées<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span><br />
<span style="color: fuchsia;">COUNT<span style="color: gray;">(*)<br />
</span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">FROM</span> [dbo]<span style="color: gray;">.</span>[OlapQueryLog]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">WHERE</span> [StartTime] <span style="color: gray;">&gt;=</span><br />
<span style="color: fuchsia;">DATEADD<span style="color: gray;">(<span style="color: fuchsia;">DAY<span style="color: gray;">,</span><br />
<span style="color: gray;">-</span>1<span style="color: gray;">,</span> GETDATE<span style="color: gray;">())<br />
</span></span></span></span></span></p>
<p><span style="color: green; font-family: Courier New; font-size: 10pt;">&#8211; Cout des requêtes executées<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span><br />
<span style="color: fuchsia;">SUM<span style="color: gray;">(</span>Duration<span style="color: gray;">)<br />
</span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">FROM</span> [dbo]<span style="color: gray;">.</span>[OlapQueryLog]<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><br />
<span style="color: blue;">WHERE</span> [StartTime] <span style="color: gray;">&gt;=</span><br />
<span style="color: fuchsia;">DATEADD<span style="color: gray;">(<span style="color: fuchsia;">DAY<span style="color: gray;">,</span><br />
<span style="color: gray;">-</span>1<span style="color: gray;">,</span> GETDATE<span style="color: gray;">())<br />
</span></span></span></span></span></p>
<p><span style="color: green; font-family: Courier New; font-size: 10pt;">&#8211; Liste des utilisateurs d&#8217;une base de données<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span> MSOLAP_Database<span style="color: gray;">,</span> MSOLAP_User<span style="color: gray;">,</span> StartTime<span style="color: gray;">,</span> Duration<span style="color: gray;">,<br />
</span></span></p>
<p><span style="color: fuchsia; font-family: Courier New; font-size: 10pt;">CAST<span style="color: gray;">(<span style="color: fuchsia;">CONVERT<span style="color: gray;">(<span style="color: blue;">varchar<span style="color: gray;">(</span>8<span style="color: gray;">),</span> StartTime<span style="color: gray;">,</span> 112<span style="color: gray;">)</span> AS</span><br />
<span style="color: blue;">int<span style="color: gray;">)</span> AS</span><br />
<span style="color: fuchsia;">Day<br />
</span></span></span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">FROM</span> OlapQueryLog<br />
</span></p>
<p><span style="color: blue; font-family: Courier New; font-size: 10pt;">WHERE     <span style="color: gray;">(</span>MSOLAP_Database <span style="color: gray;">=</span><br />
<span style="color: red;">&#8216;DataWarehouse&#8217;<span style="color: gray;">)</span><br />
<span style="color: gray;">and</span> [StartTime] <span style="color: gray;">&gt;=</span><br />
<span style="color: fuchsia;">DATEADD<span style="color: gray;">(<span style="color: fuchsia;">DAY<span style="color: gray;">,</span><br />
<span style="color: gray;">-</span>30<span style="color: gray;">,</span> GETDATE<span style="color: gray;">())<br />
</span></span></span></span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">ORDER</span><br />
<span style="color: blue;">BY</span> StartTime <span style="color: blue;">DESC<br />
</span></span></p>
<p><span style="color: green; font-family: Courier New; font-size: 10pt;">&#8211; Liste des utilisateurs par base de données et par jour<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">SELECT</span> MSOLAP_Database<span style="color: gray;">,</span> MSOLAP_User<span style="color: gray;">,</span><br />
<span style="color: fuchsia;">SUM<span style="color: gray;">(</span>Duration<span style="color: gray;">)</span><br />
<span style="color: blue;">AS</span> Duration<span style="color: gray;">,<br />
</span></span></span></p>
<p><span style="color: fuchsia; font-family: Courier New; font-size: 10pt;">CAST<span style="color: gray;">(<span style="color: fuchsia;">CONVERT<span style="color: gray;">(<span style="color: blue;">varchar<span style="color: gray;">(</span>8<span style="color: gray;">),</span> StartTime<span style="color: gray;">,</span> 112<span style="color: gray;">)</span> AS</span><br />
<span style="color: blue;">int<span style="color: gray;">)</span> AS</span> Day_FK,</span> COUNT<span style="color: gray;">(*)</span><br />
<span style="color: blue;">AS</span> QueryCount</span><br />
</span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">FROM</span> OlapQueryLog<br />
</span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">GROUP</span><br />
<span style="color: blue;">BY</span> MSOLAP_Database<span style="color: gray;">,</span> MSOLAP_User<span style="color: gray;">,</span><br />
<span style="color: fuchsia;">CAST<span style="color: gray;">(<span style="color: fuchsia;">CONVERT<span style="color: gray;">(<span style="color: blue;">varchar<span style="color: gray;">(</span>8<span style="color: gray;">),</span> StartTime<span style="color: gray;">,</span> 112<span style="color: gray;">)</span> AS</span><br />
<span style="color: blue;">int<span style="color: gray;">)<br />
</span></span></span></span></span></span></span></p>
<p><span style="font-family: Courier New; font-size: 10pt;"><span style="color: blue;">ORDER</span><br />
<span style="color: blue;">BY</span> Day_FK<span style="color: blue;"><br />
</span></span></p>
<h3>Exemple de rapports et d&#8217;indicateurs</h3>
<p>La table de log, vous permettra ainsi d&#8217;alimenter certains indicateurs de votre tableau de bord d&#8217;exploitation :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl83.png" alt="" /></p>
<p>De pouvoir suivre l&#8217;évolution du nombre d&#8217;utilisateurs consommateurs de vos cubes au quotidien :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl93.png" alt="" /></p>
<p>Et bien entendu d&#8217;en avoir la liste :</p>
<p><img src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/10/102111_1439_Crerunetabl103.png" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/creer-une-table-de-logs-pour-analysis-services/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nouveautés Power Pivot-Vue diagramme</title>
		<link>http://blog.homsys.com/trucs-astuces/ppivot_diagramme_view</link>
		<comments>http://blog.homsys.com/trucs-astuces/ppivot_diagramme_view#comments</comments>
		<pubDate>Tue, 13 Sep 2011 08:00:46 +0000</pubDate>
		<dc:creator>Manel Kaidomar</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[BI]]></category>
		<category><![CDATA[BIDS]]></category>
		<category><![CDATA[ctp3]]></category>
		<category><![CDATA[denali]]></category>
		<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[nouveatés power Pivot]]></category>
		<category><![CDATA[power pivot V2]]></category>
		<category><![CDATA[vue diagramme]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=708</guid>
		<description><![CDATA[Le décisionnel Microsoft s’oriente vers le BISM (Business Intelligence Semantic Model) en fusionnant le modèle de PowerPivot et celui, plus classique, d’ Analyses Services (UDM). C’est dans ce contexte que l&#8217;on trouve une des grandes nouveautés de powerPivot : la vue diagramme ! bien plus pratique pour réaliser nos modèles d’analyse.
Retour vers la synthèse des nouveautés [...]]]></description>
			<content:encoded><![CDATA[<p>Le décisionnel Microsoft s’oriente vers le<strong> </strong>BISM (Business Intelligence Semantic Model) en fusionnant le modèle de PowerPivot et celui, plus classique, d’ Analyses Services (UDM). C’est dans ce contexte que l&#8217;on trouve une des grandes nouveautés de powerPivot : la vue diagramme ! bien plus pratique pour réaliser nos modèles d’analyse.</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/aet5.jpg"><img class="aligncenter size-full wp-image-711" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/aet5.jpg" alt="" width="534" height="304" /></a>Retour vers la synthèse des <a href="http://blog.homsys.com/divers/powerpivot_v_ctp3">nouveautés de Powerpivot V2</a>.</p>
<p>D&#8217;autres articles à venir sur les autres nouveautés&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/ppivot_diagramme_view/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Optimisation proc&#233;dure stock&#233;e param&#233;tr&#233;e sous SQL Server (optimisation reporting Services)</title>
		<link>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services</link>
		<comments>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services#comments</comments>
		<pubDate>Mon, 12 Sep 2011 09:50:28 +0000</pubDate>
		<dc:creator>Luc Rajagopalan</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Optimisation]]></category>
		<category><![CDATA[parameter sniffing]]></category>
		<category><![CDATA[parameter spoofing]]></category>
		<category><![CDATA[reporting services]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=661</guid>
		<description><![CDATA[Je vous propose ici un retour d’expérience sur l’optimisation de procédures stockées SQL server. Cette optimisation est issue de recherche effectuée pour analyser des problèmes de lenteur sur des rapports Reporting Services utilisant des procédures stockées avec passage de paramètres.
Le cas m’est apparu en constatant que les temps d’exécution d’une même requête SQL pouvaient varier [...]]]></description>
			<content:encoded><![CDATA[<p>Je vous propose ici un retour d’expérience sur l’optimisation de procédures stockées SQL server. Cette optimisation est issue de recherche effectuée pour analyser des problèmes de lenteur sur des rapports Reporting Services utilisant des procédures stockées avec passage de paramètres.</p>
<p>Le cas m’est apparu en constatant que les temps d’exécution d’une même requête SQL pouvaient varier de 8s à plus de 10mn selon que je l’exécutais directement dans l’éditeur management Studio ou incorporée à une procédure stockée.</p>
<p>Ce problème est appelé « parameter sniffing ou spoofing». En synthèse, le moteur SQL Server essaye d’optimiser la requête en définissant un plan d’exécution basé sur les statistiques. Ces dernières sont établies lors de la première exécution de la requête et sont donc dépendantes de la valeur du paramètre utilisée pour cette exécution.</p>
<p>Ce plan d’exécution pose problème dès que la distribution des données est biaisée : certains paramètres vont retourner un petit nombre de lignes tandis que d’autres vont au contraire en renvoyer un grand nombre.</p>
<p>Le plan d’exécution n’étant pas recalculé à chaque fois, les temps ne sont plus optimisés.</p>
<p>Ci-dessous un exemple (source <a href="http://blogs.msdn.com/b/queryoptteam/archive/2006/03/31/565991.aspx">http://blogs.msdn.com/b/queryoptteam/archive/2006/03/31/565991.aspx</a>) afin d’expliquer avec plus de détails les points précédents :</p>
<p>Soit les objets suivants :</p>
<p>Une table t de 1002000 lignes avec 100000 lignes allant de 1 à 999999 et 2000 autres lignes avec la valeur 1000008.</p>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 13.95pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt; border: 1pt solid #eeece1;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">Col1</p>
</td>
</tr>
<tr style="height: 13.25pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.25pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 13.25pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1</p>
</td>
</tr>
<tr style="height: 13.95pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 13.95pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">2</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 13.95pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">2</p>
</td>
</tr>
<tr style="height: 17pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 17pt;" width="44" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 17pt;" width="65" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000000</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">999999</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000001</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
<tr style="height: 14.75pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.75pt;" width="44" valign="bottom">
<p class="MsoNormal" style="line-height: normal; margin: 0cm 5.65pt 0pt;">…</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.75pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
<tr style="height: 14.65pt;">
<td style="padding: 0cm 5.4pt; width: 33.15pt; background: none repeat scroll 0% 0% #eeece1; height: 14.65pt;" width="44" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1002000</p>
</td>
<td style="padding: 0cm 5.4pt; width: 48.9pt; height: 14.65pt;" width="65" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;">1000008</p>
</td>
</tr>
</tbody>
</table>
<p>Soit la procédure stockée ci-joint interrogeant la table t.</p>
<div style="padding-bottom: 1pt; padding-left: 4pt; padding-right: 1pt; background: #eeece1; margin-left: 0cm; margin-right: 8cm; padding-top: 1pt; border: #eeece1 1pt solid;">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>CREATE</span><span> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>(</span><span>@p</span><span> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt; background: #eeece1; border: medium none; padding: 0cm;"><span>as </span></p>
<p class="MsoNormal" style="background: #eeece1; border: medium none; padding: 0cm;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p</span></span><span lang="EN-US"> </span></p>
</div>
<p>Une première analyse du plan d’exécution de la procédure stockée avec le paramètre ‘450’ nous donne les informations suivantes :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image2.png"><img style="border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb2.png" border="0" alt="image" width="191" height="244" /></a></p>
<p>Il est estimé que le nombre de ligne est de 1 et le nombre de ligne renvoyé est aussi de 1.</p>
<p>Dans la deuxième exécution nous allons mettre le paramètre suivant : ‘1000008’ (qui représente 2000 lignes dans la base de données) et nous allons observer le plan d’exécution :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image3.png"><img style="border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb3.png" border="0" alt="image" width="191" height="244" /></a></p>
<p>Le plan d’exécution estime que le nombre de lignes renvoyées est de 1 alors que le nombre de lignes retournées réellement est de 2000.</p>
<p>Ce plan d’exécution n’est pas optimisé pour le paramètre d’une valeur de ‘10000008’.</p>
<p>En effet le précédent paramètre fourni, d’une valeur de ‘450’, a été aspiré par l’optimiseur SQL et gardé en mémoire ; d’où la mauvaise estimation.</p>
<p>Pour remédier à ce problème et ainsi obtenir de meilleures performances, plusieurs solutions existent : la déclaration d’un paramètre en local (ainsi le paramètre ne peut être aspiré par l’optimiseur de requête SQL) ou l’ajout d’une option ‘‘recompile’’.</p>
<p>Exemple :</p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #eeece1; border: 1pt solid #eeece1;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="text-align: center; line-height: normal; margin-bottom: 0pt;"><strong>Déclaration d’une variable locale </strong></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">alter</span><span lang="EN-US"> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">(</span><span lang="EN-US">@p</span><span lang="EN-US"> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">as </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">declare</span><span lang="EN-US"> <span style="color: teal;">@p_local</span> <span style="color: blue;">int </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">set</span><span lang="EN-US"> <span style="color: teal;">@p_local</span><span style="color: gray;">=</span><span style="color: teal;">@p </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p_local</span></span><span lang="EN-US"> </span></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 117.3pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="156" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=5 </span><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image1.png"><img style="border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb1.png" border="0" alt="image" width="197" height="244" /></a></p>
</td>
<td style="padding: 0cm 5.4pt; width: 114.9pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="153" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=1000008 </span></p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image4.png"><img style="float: none; margin-left: auto; margin-right: auto; border: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/09/image_thumb4.png" border="0" alt="image" width="194" height="244" /></a></td>
</tr>
</tbody>
</table>
</div>
<p>Dans le premier cas en déclarant une variable locale, le nombre estimé passe à 1,11332 lignes, qui correspondent au calcul suivant : [1/1000001 (nombre de valeur distinct)]*1002000(nombre total de lignes).</p>
<p>Cette première solution utilise les statistiques de la table pour estimer le nombre de lignes. Elle présente cependant un inconvénient quand les données ne sont pas réparties équitablement.</p>
<div>
<table class="MsoTableGrid" style="border-collapse: collapse; border: medium none;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #eeece1; border: 1pt solid #eeece1;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="text-align: center; line-height: normal; margin-bottom: 0pt;"><strong>Option (recompile) </strong></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 232.2pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" colspan="2" width="310" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">alter</span><span lang="EN-US"> <span style="color: blue;">procedure</span> <span style="color: teal;">[dbo]</span><span style="color: gray;">.</span><span style="color: teal;">[foo]</span><span style="color: blue;"> </span><span style="color: gray;">(</span><span style="color: teal;">@p</span> <span style="color: blue;">int</span><span style="color: gray;">) </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">as </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US">select</span><span lang="EN-US"> <span style="color: gray;">*</span> <span style="color: blue;">from</span> <span style="color: teal;">t</span> <span style="color: blue;">where</span> <span style="color: teal;">col1</span> <span style="color: gray;">=</span> <span style="color: teal;">@p </span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>option</span><span>(</span><span>recompile</span><span>)</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span lang="EN-US"> </span></p>
</td>
</tr>
<tr style="height: 86.7pt;">
<td style="padding: 0cm 5.4pt; width: 117.3pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="156" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=5 </span><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image2.png"><img style="border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb2.png" border="0" alt="image" width="196" height="244" /></a></p>
</td>
<td style="padding: 0cm 5.4pt; width: 114.9pt; background: none repeat scroll 0% 0% #f2f2f2; height: 86.7pt;" width="153" valign="top">
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span>@p=1000008 </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0pt;"><span><img style="float: none; margin-left: auto; margin-right: auto; border-width: 0px;" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/image_thumb3.png" border="0" alt="image" width="198" height="244" /></span></p>
</td>
</tr>
</tbody>
</table>
</div>
<p>Dans le deuxième cas, en utilisant l’option recompile, nous forçons le moteur à recompiler la requête SQL, ce qui peut être contraignant en terme de temps processeur si celle-ci est complexe, mais le plan d’exécution obtenu est toujours optimisé pour le paramètre aspiré.</p>
<p>Dans notre cas l’estimation du nombre de lignes correspond au résultat attendu.</p>
<p><span style="text-decoration: underline;">Bilan en termes de performances :</span></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="88" valign="top"></td>
<td width="108" valign="top"><strong>Défaut</strong></td>
<td width="110" valign="top"><strong>Variable locale</strong></td>
<td width="136" valign="top"><strong>Option recompile</strong></td>
</tr>
<tr>
<td width="88" valign="top"><strong>@p=5</strong></td>
<td width="108" valign="top">91 ms</td>
<td width="110" valign="top">89 ms</td>
<td width="136" valign="top">87 ms</td>
</tr>
<tr>
<td width="88" valign="top"><strong>@p=1000008</strong></td>
<td width="108" valign="top">288 ms</td>
<td width="110" valign="top">255 ms</td>
<td width="136" valign="top">166 ms</td>
</tr>
</tbody>
</table>
<p>Ci-dessus les temps écoulés lors de l’exécution de la procédure stockée. Dans le cas par défaut le paramètre @p=5 a été aspiré, ce qui induit un temps d’exécution de 288 ms pour le paramètre @p=1000008.</p>
<p>En comparaison, le fait de déclarer une variable locale ou de mettre en place une option recompile ne change pas les temps de traitement pour le paramètre @p=5, les nombres de lignes estimés étant proches, les temps sont quasi-identiques. Cependant, une différence est notable avec le paramètre @p=1000008 : avec l’option recompile, la procédure stockée possède un plan d’exécution optimisé, d’où une meilleur performance. Dans le cas de la déclaration en locale d’une variable avec @p=1000008, le plan étant optimisé à l’aide des statistiques (estimation de 1,1 lignes par résultat) le temps d’exécution reste important face à l’option recompile mais préférable à celui par défaut.</p>
<p>En conclusion, en fonction des cas de figure rencontrés (données biaisées, procédure stockée complexe …), il est préférable d’utiliser l’une des solutions proposées.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/optimisation-procdure-stocke-paramtre-sous-sql-server-optimisation-reporting-services/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ecrire une requête MDX personnalisée sous Excel 2007</title>
		<link>http://blog.homsys.com/trucs-astuces/ecrire-une-requete-mdx-personnalisee-sous-excel-2007</link>
		<comments>http://blog.homsys.com/trucs-astuces/ecrire-une-requete-mdx-personnalisee-sous-excel-2007#comments</comments>
		<pubDate>Mon, 12 Sep 2011 07:51:27 +0000</pubDate>
		<dc:creator>Xavier Despont</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[MDX]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[SSAS]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=632</guid>
		<description><![CDATA[Il peut être parfois utile d&#8217;exécuter une requête MDX directement depuis Excel. Ainsi, on ne s&#8217;encombre pas de toutes les dimensions / mesures du cube, et ainsi, on exécute la requête beaucoup plus rapidement.
On peut ainsi utiliser directement un tableau croisé dynamique que l&#8217;on mettre à jour régulièrement, afin d&#8217;avoir une information toujours à jour.
La [...]]]></description>
			<content:encoded><![CDATA[<p>Il peut être parfois utile d&#8217;exécuter une requête MDX directement depuis Excel. Ainsi, on ne s&#8217;encombre pas de toutes les dimensions / mesures du cube, et ainsi, on exécute la requête beaucoup plus rapidement.<br />
On peut ainsi utiliser directement un tableau croisé dynamique que l&#8217;on mettre à jour régulièrement, afin d&#8217;avoir une information toujours à jour.</p>
<p>La méthode est simple : utiliser un fichier datasource (.odc) personnalisé avec sa requête MDX</p>
<p>Pour cela :</p>
<p>1. Téléchargez ce <a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/MDX_data_source.zip">fichier</a>, et enregistrez-le dans le dossier &#8216;Mes Data Sources&#8217; du dossier Mes documents.</p>
<p>2. Ouvrez-le avec un éditeur de texte classique, et modifiez les lignes suivantes :</p>
<ul>
<li>ligne 8 &lt;title&gt;Detail_Forecast all regions&lt;/title&gt; : <strong>remplacez par un titre approprié</strong></li>
<li>ligne 12 &lt;o:Name&gt;Detail_Forecast all regions&lt;/o:Name&gt; : <strong>remplacez par un titre approprié</strong>. Attention, c&#8217;est le nom qui apparaîtra sous Excel dans la liste des connexions.</li>
<li>ligne 18 &lt;odc:ConnectionString&gt;Provider=MSOLAP.3;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=&lt;Nom_de_la_base_OLAP&gt;;Data Source=&lt;Serveur_OLAP&gt;;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error&lt;/odc:ConnectionString&gt; :<strong> remplacez par la datasource voulue </strong>(que l&#8217;on trouve généralement dans un ficher de cube Excel), ou remplacez celle-ci par les valeurs appropriées.</li>
<li>ligne 20 &lt;odc:CommandText&gt;Insérer la requête MDX ici&lt;/odc:CommandText&gt; : <strong>C&#8217;est ici que vous allez insérer la requête MDX</strong>. Attention de ne pas faire apparaître de paramètres (@Parameter, CONSTRAINED) car Excel ne les supporte pas.</li>
</ul>
<p>3. Enregistrez le fichier.</p>
<p>4. Ouvrez Excel, et aller sur l&#8217;onglet &#8216;Données&#8217;.</p>
<p>5. Cliquez sur &#8216;Connexions existantes&#8217; et sélectionnez votre fichier datasource précédemment enregistré</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/ex_data_source.jpg"><img class="aligncenter size-full wp-image-641" src="http://blog.homsys.com/wordpress/wp-content/uploads/2011/08/ex_data_source.jpg" alt="" width="587" height="232" /></a></p>
<p>6. Une fois ouvert, le résultat de la requête s&#8217;affichera sous forme de table. Si vous souhaitez plutôt l&#8217;utiliser sous forme de Pivot, à l&#8217;étape 4, allez à l&#8217;onglet &#8216;Insertion&#8217;, puis sélectionnez &#8216;TblCroiséDynamique&#8217;, et choisissez le fichier datasource.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/ecrire-une-requete-mdx-personnalisee-sous-excel-2007/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La gestion des logs avec SSIS</title>
		<link>http://blog.homsys.com/trucs-astuces/la-gestion-des-logs-avec-ssis</link>
		<comments>http://blog.homsys.com/trucs-astuces/la-gestion-des-logs-avec-ssis#comments</comments>
		<pubDate>Mon, 01 Feb 2010 08:30:47 +0000</pubDate>
		<dc:creator>Alexis Sacksteder</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[Audit]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SQL-Server]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[suivi d'exploitation]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=274</guid>
		<description><![CDATA[Pouvoir être en mesure de suivre la bonne exécution des traitements batch SSIS est primordiale.
Plusieurs solutions permettent de répondre à ce besoin de suivi :

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

La solution 2. est très souvent [...]]]></description>
			<content:encoded><![CDATA[<p>Pouvoir être en mesure de suivre la bonne exécution des traitements batch SSIS est primordiale.</p>
<p>Plusieurs solutions permettent de répondre à ce besoin de suivi :</p>
<ol>
<li>La méthode manuelle : Management Studio propose un historique d’exécution des jobs</li>
<li>L’utilisation de tâches SQL permettant de renseigner une table de log</li>
<li>L’utilisation des logs standards SSIS</li>
</ol>
<p>La solution 2. est très souvent rencontrée sur les projets par simple méconnaissance de la 3.</p>
<p>Cet article décrit donc comment mettre en place en quelques minutes un suivi des traitements SSIS performant.</p>
<p>L’activation des logs s’effectue pour chaque package dans le menu <em>SSIS\Enregistrement</em> (Logging en version anglaise)</p>
<p>Les étapes à réaliser sont les suivantes :</p>
<ol>
<li>Choisir dans la liste déroulante <em>type de fournisseur</em>, où seront stockés les logs (base de données, fichier XML,…) puis cliquer sur le bouton <em>Ajouter</em>. Personnellement, je préconise le stockage SQL Server qui permet une exploitation aisée de ces données</li>
<li>Cocher la case à cocher devant le nom du package</li>
<li>Activer la case à cocher devant le fournisseur SQL Server</li>
<li>Sélectionner la base de données hébergeant la table de log</li>
</ol>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2010/02/clip_image002.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002" src="http://blog.homsys.com/wordpress/wp-content/uploads/2010/02/clip_image002_thumb.jpg" border="0" alt="clip_image002" width="343" height="289" /></a></p>
<p><span style="text-decoration: underline;">Remarque :</span> Il n’est pas possible de choisir le nom de la table dans laquelle les logs seront stockés. SSIS 2005 les stocke dans la table sysdtslog90, SSIS 2008 dans sysssislog.</p>
<p>L’onglet Détails permet ensuite de spécifier le niveau de finesse dans le suivi des traitements :</p>
<p>Afin d’éviter des logs trop volumineux, je recommande de tracer uniquement les événements suivants :</p>
<ul>
<li>OnPreExecute : Trace le début d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle</li>
<li>OnPostExecute : Trace la fin d’exécution des différentes tâches présentes dans le niveau Flux de Contrôle</li>
<li>OnError : Trace toutes les erreurs survenues aux niveaux Flux de contrôle et Flux de données</li>
</ul>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2010/02/clip_image0025.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002[5]" src="http://blog.homsys.com/wordpress/wp-content/uploads/2010/02/clip_image0025_thumb.jpg" border="0" alt="clip_image002[5]" width="351" height="296" /></a></p>
<p>Les principaux champs de la table de logs sont les suivants :</p>
<ul>
<li><strong>Event </strong>: événement qui a généré le log (OnPreExecute, OnPostExecute ou OnError)</li>
<li><strong>Computer </strong>: ordinateur qui l’a exécuté</li>
<li><strong>Operator </strong>: utilisateur qui l’a exécuté (permet par exemple de différencier une exécution automatique effectuée par l’agent SQL Server d’une exécution manuelle de rattrapage)</li>
<li><strong>Source </strong>: étape du flux qui a généré le log</li>
<li><strong>SourceId</strong> : Identifiant de l’élément (package, tâche de contrôle…) ayant généré le log</li>
<li><strong>executionId</strong> : identifiant unique de l’exécution</li>
<li><strong>Starttime </strong>: début de l’événement qui a généré le log</li>
<li><strong>Endtime </strong>: fin de l’événement qui a généré le log</li>
<li><strong>Message </strong>: détails de l’événement (notamment les messages d’erreurs sur l’événement OnError)</li>
</ul>
<ul>En quelques clics nous avons ainsi paramétré le stockage de l’information relative à l’exécution des flux SSIS. Ces données peuvent maintenant être requêtées en SQL ou utilisées via du reporting.</p>
<p>A noter qu&#8217;une ligne est écrite dans la table de log pour chaque événement: début d’une tâche, fin d’une tâche ou erreur. Les données doivent donc être manipulées pour obtenir une ligne du type: nom de la tâche, date de début, date de fin et statut d’exécution.</ul>
<ul>Homsys propose ainsi un ensemble de tableaux de suivi développés sous Reporting Services. Cet aspect sera présenté dans un prochain article…</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/la-gestion-des-logs-avec-ssis/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Les modèles de package SSIS</title>
		<link>http://blog.homsys.com/trucs-astuces/les-modeles-de-package-ssis</link>
		<comments>http://blog.homsys.com/trucs-astuces/les-modeles-de-package-ssis#comments</comments>
		<pubDate>Mon, 18 Jan 2010 17:14:26 +0000</pubDate>
		<dc:creator>Alexis Sacksteder</dc:creator>
				<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[modèle]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=261</guid>
		<description><![CDATA[Fonctionnalité souvent méconnue et sous utilisée : SSIS (SQL Server Integration Services) permet de créer des modèles de package qui intègrent les éléments récurrents d’un projet.
Pourquoi utiliser des modèles de package :
Un modèle de package pourra par exemple contenir les éléments suivants :

Cartouche d’en tête documentant le flux (description du flux, date de création, auteur…)
Activation des logs [...]]]></description>
			<content:encoded><![CDATA[<p>Fonctionnalité souvent méconnue et sous utilisée : SSIS (SQL Server Integration Services) permet de créer des modèles de package qui intègrent les éléments récurrents d’un projet.</p>
<h2>Pourquoi utiliser des modèles de package :</h2>
<p>Un modèle de package pourra par exemple contenir les éléments suivants :</p>
<ul>
<li>Cartouche d’en tête documentant le flux (description du flux, date de création, auteur…)</li>
<li>Activation des logs d’audit des traitements</li>
<li>Connexion vers les bases de données du projet</li>
<li>Variables communes (nom du serveur DWH, chemin de stockage des fichiers sources, chemin de l’archivage…)</li>
<li>Utilisation du fichier de configuration qui permet l’alimentation dynamique des variables communes</li>
<li>Propriété delayValidation valant True afin d’éviter les ralentissements à l’ouverture des packages</li>
</ul>
<p>La mise en place de ces éléments permet ainsi un gain de temps intéressant, une homogénéisation des différents développements (les variables communes auront le même nom dans l’ensemble des packages) ainsi qu’un risque d’anomalie réduit (erreur de paramétrage des connexions, du fichier de configuration…).</p>
<h2>Comment développer un package modèle ?</h2>
<p>Un package modèle est un package SSIS standard dans lequel les éléments communs auront été implémentés. Ce package doit ensuite être copié dans le répertoire :</p>
<p><em>C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransformationItems</em></p>
<p><em> </em></p>
<p><em> </em></p>
<p><em> </em></p>
<h2>Comment utiliser un package modèle :</h2>
<p><em> </em></p>
<p>L’utilisation du modèle de package s’effectue via les étapes suivantes :</p>
<p>Cliquer droit sur le projet puis <em>Ajouter\Nouvel Element</em> :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2010/01/clip_image0021.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image002" src="http://blog.homsys.com/wordpress/wp-content/uploads/2010/01/clip_image002_thumb1.jpg" border="0" alt="clip_image002" width="290" height="228" /></a></p>
<p align="center"><a name="_Toc249355403">Utiliser un modèle de package Etape 1</a></p>
<p>Ajouter l’élément Package_model_SSIS :</p>
<p><a href="http://blog.homsys.com/wordpress/wp-content/uploads/2010/01/clip_image004.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="clip_image004" src="http://blog.homsys.com/wordpress/wp-content/uploads/2010/01/clip_image004_thumb.jpg" border="0" alt="clip_image004" width="455" height="282" /></a></p>
<p align="center"><a name="_Toc249355404">Utiliser un modèle de package Etape 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/trucs-astuces/les-modeles-de-package-ssis/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VMware : Monter une machine virtuelle 64 bits</title>
		<link>http://blog.homsys.com/retours-experience-cas-client/vmware-monter-une-machine-virtuelle-64-bits</link>
		<comments>http://blog.homsys.com/retours-experience-cas-client/vmware-monter-une-machine-virtuelle-64-bits#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:16:12 +0000</pubDate>
		<dc:creator>Clément Lefaure</dc:creator>
				<category><![CDATA[Retours d’expérience / Cas client]]></category>
		<category><![CDATA[Trucs & astuces]]></category>
		<category><![CDATA[64-bits]]></category>
		<category><![CDATA[machine virtuelle]]></category>
		<category><![CDATA[Virtualization Technology]]></category>
		<category><![CDATA[VM]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[x64]]></category>

		<guid isPermaLink="false">http://blog.homsys.com/?p=218</guid>
		<description><![CDATA[Que ce soit pour tester un nouvel outil, pour valider une architecture ou pour monter un environnement de formation, nous sommes tous régulièrement amenés à utiliser des machines virtuelles ou VM.
Ayant récemment été confronté à certaines difficultés pour &#171;&#160;monter&#160;&#187; une VM en 64 bits sous notre serveur VMware, voici un billet détaillant la procédure à [...]]]></description>
			<content:encoded><![CDATA[<p>Que ce soit pour tester un nouvel outil, pour valider une architecture ou pour monter un environnement de formation, nous sommes tous régulièrement amenés à utiliser des machines virtuelles ou VM.</p>
<p>Ayant récemment été confronté à certaines difficultés pour &laquo;&nbsp;monter&nbsp;&raquo; une VM en 64 bits sous notre serveur VMware, voici un billet détaillant la procédure à suivre.</p>
<h4>OS 64 bits supportés par VMware</h4>
<p>En premier lieu, voici une petite liste (non exhaustive) des systèmes d&#8217;exploitations 64-bits supportés par VMware :</p>
<ul>
<li>Windows XP 64-bit</li>
<li>Windows Vista 64-bit</li>
<li>Windows 2003 Server 64-bit</li>
<li>Windows 2008 Server 64-bit</li>
<li>Linux 64-bit</li>
<li>Applications entreprises en 64-bit, comme Exchange 2007 64-bit</li>
<li>&#8230;</li>
</ul>
<h4>Tester la capacité du serveur hôte</h4>
<p>Une chose à savoir concernant la capacité de son serveur de VM (host server) à exécuter des VM 64-bits : le serveur hôte doit obligatoirement être en 64-bits.  <strong>Il n&#8217;est pas possible d&#8217;exécuter  une machine virtuelle 64 bits sur un serveur 32 bits</strong>.</p>
<p>Enfin tous les serveurs 64 bits ne sont pas forcément aptes à lancer des VM en 64 bits. <strong>Cela dépend aussi du processeur</strong>.</p>
<p>Heureusement l&#8217;éditeur a mis en place un outil qui effectue cette vérification :</p>
<ul>
<li>c&#8217;est le <strong>Processor Check for 64-bit Compatibility </strong>qui est téléchargeable à l&#8217;adresse suivante : <strong> </strong><a title="http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0#drivers_tools" href="http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0#drivers_tools" target="_blank">http://downloads.vmware.com/d/info/datacenter_downloads/vmware_server/2_0#drivers_tools</a></li>
</ul>
<h4>Configurer le serveur de VM</h4>
<p>Une fois avoir vérifier la capacité du serveur hôte il faut éditer les propriétés du BIOS de celui-ci :</p>
<ol>
<li>Démarrer le serveur</li>
<li>Taper F2 afin de lancer le &#8216;System Setup&#8217; du serveur</li>
<li>Entrer dans  &laquo;&nbsp;CPU Information&nbsp;&raquo;</li>
<li>Activer l&#8217;option &laquo;&nbsp;<strong>Virtualization Technology</strong>&nbsp;&raquo; (VT) qui est désactivée par défaut</li>
<li>Redémarrer le serveur</li>
</ol>
<p>=&gt; Le serveur hôte est maintenant prêt à accueillir des VM 64 bits</p>
<h4>Créer la machine virtuelle</h4>
<p>La création de la VM 64-bits se fait ensuite très simplement en sélectionnant un OS 64-bits (voir copie d&#8217;acran ci-dessous).</p>
<div id="attachment_219" class="wp-caption aligncenter" style="width: 612px"><img class="size-full wp-image-219" src="http://blog.homsys.com/wordpress/wp-content/uploads/2010/01/vm.jpg" alt="Création d'une VM 64-bits" width="602" height="456" /><p class="wp-caption-text">Création d&#39;une VM 64-bits</p></div>
<h4>Sources</h4>
<p>Remerciements à Olivier Marché pour son expertise technique sur la question.</p>
<p>Liens sur VMware et le 64-bits :</p>
<p style="padding-left: 30px"><a title="http://www.petri.co.il/virtual_run_a_64_bit_guest_operating_system_in_vmware.htm" href="http://www.petri.co.il/virtual_run_a_64_bit_guest_operating_system_in_vmware.htm">http://www.petri.co.il/virtual_run_a_64_bit_guest_operating_system_in_vmware.htm</a></p>
<p style="padding-left: 30px"><a title="http://communities.vmware.com/message/1174789" href="http://communities.vmware.com/message/1174789">http://communities.vmware.com/message/1174789</a></p>
<p>Lien sur l&#8217;édition des propriétés du BIOS :</p>
<p style="padding-left: 30px"><a title="http://support.euro.dell.com/support/edocs/systems/pe1900/en/hom/html/syssetup.htm#wp1054756" href="http://support.euro.dell.com/support/edocs/systems/pe1900/en/hom/html/syssetup.htm#wp1054756">http://support.euro.dell.com/support/edocs/systems/pe1900/en/hom/html/syssetup.htm#wp1054756</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.homsys.com/retours-experience-cas-client/vmware-monter-une-machine-virtuelle-64-bits/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

