<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	><channel><title>Sauget Charles-Henri Blog</title><link>http://www.sauget-ch.fr</link><description>Astuces et expériences de travail, majoritairement sur l'informatique décisionnel</description><item><title><![CDATA[Viens à l'AfterWork BI du GUSS le 27 Août 2012  !]]></title><link>http://www.sauget-ch.fr/article-82.html</link><pubDate>2012-08-24 09:08:46</pubDate><description><![CDATA[<p>
	Pour commencer, le GUSS c&#39;est quoi ? C&#39;est le <a href="http://www.guss.fr/">Groupe des Utilisateurs francophones de Microsoft SQL Server</a> une communaut&eacute;e qui regroupe tout le gratin francophone autour de SQL Server, que cela soit sur le d&eacute;cisionnel ou sur la partie DBA.</p>
<p>
	Les afterworks du GUSS c&#39;est l&#39;occasion de boire un coup tous ensemble et d&#39;&eacute;changer nos exp&eacute;riences sur les projets auxquels nous sommes confront&eacute;s.</p>
<p>
	Venez donc nombreux !!!</p>
<p style="text-align: center;">
	<strong><span style="color: red;">3&egrave;me AfterWork du GUSS, </span></strong></p>
<p style="text-align: center;">
	<span style="background-color: white; font-family: Arial, Helvetica, sans-serif;"><b><span style="color: red;"><strong>&hellip;sur un air de vacances</strong></span></b></span></p>
<p style="text-align: center;">
	<span style="background-color: white; font-family: Arial, Helvetica, sans-serif;"><strong>Lundi 27 ao&ucirc;t, 19h00</strong></span></p>
<p style="text-align: center;">
	<strong style="color: #333333; font-family: 'Lucida Grande', Verdana, Arial, sans-serif; line-height: 16.78333282470703px;">The Frog &amp; Princess</strong></p>
<p style="text-align: center;">
	<img alt="image" src="http://djeepy1.files.wordpress.com/2012/08/image8.png?w=87&amp;h=103" /></p>
<p style="text-align: center;">
	<span style="font-family: Arial, Helvetica, sans-serif;"><strong style="color: #333333; line-height: 16.78333282470703px;">9 rue Princesse, Paris</strong>&nbsp;</span><br />
	<span style="background-color: white; font-family: Arial, Helvetica, sans-serif;">(m&eacute;tro Od&eacute;on ou Mabillon)</span></p>
]]><![CDATA[<a href="http://www.sauget-ch.fr/article-82.html">Lire la suite ... </a>]]></description></item><item><title><![CDATA[Journées SQL Server 2012]]></title><link>http://www.sauget-ch.fr/article-81.html</link><pubDate>2012-08-19 10:08:12</pubDate><description><![CDATA[<p>
	<img alt="JSS2012-Full-header" border="0" height="88" src="http://djeepy1.files.wordpress.com/2012/08/jss2012-full-header.png?w=500&amp;h=88" style="border-top:0;border-right:0;background-image:none;border-bottom:0;float:none;padding-top:0;padding-left:0;margin-left:auto;border-left:0;display:block;padding-right:0;margin-right:auto;" title="JSS2012-Full-header" width="500" /></p>
<p>
	A peine les Journ&eacute;es SQL Server 2011 &eacute;taient termin&eacute;es que vous &eacute;tiez nombreux &agrave; nous demander de remettre cela l&rsquo;ann&eacute;e suivante.</p>
<p>
	Nous avions nous aussi cela &agrave; l&rsquo;esprit et toute l&rsquo;&eacute;quipe du <a href="http://guss.fr" target="_blank">GUSS</a> s&rsquo;est lanc&eacute;e dans l&rsquo;organisation d&rsquo;une nouvelle &eacute;dition il y a quelques semaines d&eacute;j&agrave;.</p>
<p>
	Il y a encore du travail pour mettre au point cette &eacute;dition 2012 des Journ&eacute;es SQL Server mais nous pouvons n&eacute;anmoins commencer &agrave; vous en dire un tout petit peu plus, comme le fait qu&rsquo;elle aura lieu &agrave; <b>Paris en d&eacute;cembre</b>.</p>
<p>
	Afin de s&rsquo;aligner au plus pr&egrave;s de vos attentes, nous avons r&eacute;alis&eacute; un sondage pour nous aider dans nos choix.</p>
<p>
	Cela ne prend <u>pas plus de 3 minutes</u> montre en main donc cliquez sans plus attendre (le <em>sondage est &eacute;galement compatible smartphone</em>).</p>
<p align="center">
	<b><a href="http://freeonlinesurveys.com/app/rendersurvey.asp?sid=wzfzww77qync2xv90148"><font size="4">Sondage sur les Journ&eacute;es SQL Server 2012</font></a></b></p>
<p>
	Et pour &ecirc;tre au courant des <b>derni&egrave;res infos</b> sur les Journ&eacute;es SQL Server 2012, nous sommes en train de vous concocter un mini-site d&eacute;di&eacute;. Une seule adresse &agrave; retenir :</p>
<p align="center">
	<b><a href="http://jss2012.fr/"><font size="4">JSS2012.fr</font></a></b></p>
<p>
	Et surtout, utilisez sans mod&eacute;ration les r&eacute;seaux sociaux : le hastag est <b>#jss2012</b></p>
<p>
	<strong>Toute l&rsquo;&eacute;quipe GUSS</strong></p>
<p style="text-align: center;">
	<a href="http://guss.fr" target="_blank"><img alt="guss-logo-blanc-simple-small" border="0" height="64" src="http://djeepy1.files.wordpress.com/2012/08/guss-logo-blanc-simple-small.jpg?w=200&amp;h=64" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;margin:0 15px 48px 0;border-left:0;display:inline;padding-right:0;" title="guss-logo-blanc-simple-small" width="200" /></a><img alt="sponsor-microsoft-logo" border="0" height="160" src="http://djeepy1.files.wordpress.com/2012/08/sponsor-microsoft-logo.jpg?w=200&amp;h=160" style="border-top:0;border-right:0;background-image:none;border-bottom:0;padding-top:0;padding-left:0;margin:0 0 0 15px;border-left:0;display:inline;padding-right:0;" title="sponsor-microsoft-logo" width="200" /></p>
<p>
	En attendant les journ&eacute;es SQL Server, vous pouvez toujours consulter les blogs qui vont bien:</p>
<ul>
	<li>
		<a href="http://blog.djeepy1.net/">Jean-Pierre Riehl</a></li>
	<li>
		<a href="http://fleid.net/">Florian Eiden</a></li>
	<li>
		<a href="http://joubertd.blogspot.fr/">David Joubert</a></li>
	<li>
		<a href="http://fjehl.wordpress.com/">Fran&ccedil;ois Jehl</a></li>
</ul>]]><![CDATA[<a href="http://www.sauget-ch.fr/article-81.html">Lire la suite ... </a>]]></description></item><item><title><![CDATA[Exporter les tables d'une base de donnée en CSV avec SQL Server]]></title><link>http://www.sauget-ch.fr/article-80.html</link><pubDate>2012-07-30 20:07:53</pubDate><description><![CDATA[<p>
	Je voudrais exporter toutes les donn&eacute;es de mon sch&eacute;ma dwh au format CSV (Tables + Vues) Probl&eacute;matique simple au premier abord, mais pas tant que &ccedil;a ...</p>
<p>
	En effet, SSMS me permet de le faire, mais il faut faire table par table... c&#39;est pas tr&egrave;s confortable, j&#39;ai donc opt&eacute; pour un mix entre <strong><a href="http://msdn.microsoft.com/en-us/library/ms162802.aspx">BCP</a></strong>, <strong><a href="http://msdn.microsoft.com/en-us/library/ms190324.aspx">sys.objects</a></strong>, et un curseur.</p>
<style type="text/css">
.SQLCode {
	font-size: 13px;
	font-weight: bold;
	font-family: monospace;;
	white-space: pre;
    -o-tab-size: 4;
    -moz-tab-size: 4;
    -webkit-tab-size: 4;
}
.SQLComment {
	color: #00AA00;
}
.SQLString {
	color: #AA0000;
}
.SQLFunction {
	color: #AA00AA;
}
.SQLKeyword {
	color: #0000AA;
}
.SQLOperator {
	color: #777777;
}</style>
<pre class="SQLCode">
<span class="SQLKeyword">DECLARE</span> @query <span class="SQLKeyword">VARCHAR</span><span class="SQLOperator">(</span>1000<span class="SQLOperator">)</span>

<span class="SQLKeyword">DECLARE</span> db_cursor <span class="SQLKeyword">CURSOR</span>
<span class="SQLKeyword">FOR</span>
<span class="SQLKeyword">SELECT</span> <span class="SQLString">&#39;bcp &#39;</span> <span class="SQLOperator">
+</span> <span class="SQLFunction">QUOTENAME</span><span class="SQLOperator">(</span><span class="SQLFunction">DB_NAME</span><span class="SQLOperator">(</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span> <span class="SQLOperator">
+</span> <span class="SQLString">&#39;.&#39;</span> <span class="SQLOperator">+</span> <span class="SQLFunction">QUOTENAME</span><span class="SQLOperator">(</span><span class="SQLFunction">SCHEMA_NAME</span><span class="SQLOperator">(</span><span class="SQLFunction">schema_id</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span> 
<span class="SQLOperator">+</span> <span class="SQLString">&#39;.&#39;</span> <span class="SQLOperator">+</span> <span class="SQLFunction">QUOTENAME</span><span class="SQLOperator">(</span><span class="SQLKeyword">NAME</span><span class="SQLOperator">)</span> 
<span class="SQLOperator">+</span> <span class="SQLString">&#39; &#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;out&#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39; &#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;c:\MonChemin\&#39;</span> <span class="SQLOperator">+</span> <span class="SQLKeyword">NAME</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;.csv -w -t&quot;;&quot; -E -S &#39;</span> <span class="SQLOperator">
+</span> <span class="SQLFunction">@@servername</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39; -T&#39;</span> <span class="SQLKeyword">AS</span> <span class="SQLFunction">Query</span>
<span class="SQLKeyword">FROM</span> sys<span class="SQLOperator">.</span>objects
<span class="SQLKeyword">WHERE</span> TYPE <span class="SQLOperator">IN</span> <span class="SQLOperator">(</span>
		<span class="SQLString">&#39;v&#39;</span>
		<span class="SQLOperator">,</span><span class="SQLString">&#39;u&#39;</span>
		<span class="SQLOperator">)</span>
	<span class="SQLKeyword">AND</span> is_ms_shipped <span class="SQLOperator">=</span> 0
	<span class="SQLKeyword">AND</span> <span class="SQLFunction">SCHEMA_NAME</span><span class="SQLOperator">(</span><span class="SQLFunction">schema_id</span><span class="SQLOperator">)</span> <span class="SQLOperator">LIKE</span> <span class="SQLString">&#39;%dwh%&#39;</span>

<span class="SQLKeyword">OPEN</span> db_cursor

<span class="SQLKeyword">FETCH</span> <span class="SQLKeyword">NEXT</span>
<span class="SQLKeyword">FROM</span> db_cursor
<span class="SQLKeyword">INTO</span> @query

<span class="SQLKeyword">WHILE</span> <span class="SQLFunction">@@FETCH_STATUS</span> <span class="SQLOperator">=</span> 0
<span class="SQLKeyword">BEGIN</span>
	<span class="SQLKeyword">EXEC</span> [master]<span class="SQLOperator">.</span>[sys]<span class="SQLOperator">.</span>[xp_cmdshell] @query

	<span class="SQLKeyword">PRINT</span> @query

	<span class="SQLKeyword">FETCH</span> <span class="SQLKeyword">NEXT</span>
	<span class="SQLKeyword">FROM</span> db_cursor
	<span class="SQLKeyword">INTO</span> @query
<span class="SQLKeyword">END</span>

<span class="SQLKeyword">CLOSE</span> db_cursor

<span class="SQLKeyword">DEALLOCATE</span> db_cursor

</pre>
<p>
	<u><strong>Quelques explications:</strong></u></p>
<pre class="SQLCode">
TYPE <span class="SQLOperator">IN</span> <span class="SQLOperator">(</span>
		<span class="SQLString">&#39;v&#39;</span>
		<span class="SQLOperator">,</span><span class="SQLString">&#39;u&#39;</span>
		<span class="SQLOperator">)</span></pre>
<p>
	On ne prend que les tables et les vues</p>
<pre class="SQLCode">
<span class="SQLKeyword">AND</span> <span class="SQLFunction">SCHEMA_NAME</span><span class="SQLOperator">(</span><span class="SQLFunction">schema_id</span><span class="SQLOperator">)</span> <span class="SQLOperator">LIKE</span> <span class="SQLString">&#39;%dwh%&#39;</span></pre>
<p>
	Que le sch&eacute;ma dwh, on pourrait aussi le remplacer par DB_NAME... pour garder que certaines tables ...</p>
<pre class="SQLCode">
<strong><span class="SQLOperator">+</span> <span class="SQLString">&#39; &#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;out&#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39; &#39;</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;c:\MonChemin\&#39;</span> <span class="SQLOperator">+</span> <span class="SQLKeyword">NAME</span> <span class="SQLOperator">+</span> <span class="SQLString">&#39;.csv -w -t&quot;;&quot; -E -S &#39;</span> 
</strong></pre>
<p>
	Le chemin et le type de fichier de destination, le<strong> -t&quot;;&quot;</strong> permet d&#39;indiquer le s&eacute;parateur.</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> [master]<span class="SQLOperator">.</span>[sys]<span class="SQLOperator">.</span>[xp_cmdshell] @query</pre>
<p>
	Cette commande va directement exectuer les commandes dans la console.</p>
<p>
	Apr&egrave;s execution de la commande, nous avons un fichier .csv par table avec s&eacute;parateur <strong>&quot;;&quot;</strong> dans le dossier c:\MonChemin\</p>
]]><![CDATA[<a href="http://www.sauget-ch.fr/article-80.html">Lire la suite ... </a>]]></description></item><item><title><![CDATA[Script to automate SSAS management (Object creation - deletion - processing)]]></title><link>http://www.sauget-ch.fr/article-78.html</link><pubDate>2012-06-04 11:06:49</pubDate><description><![CDATA[<p>
	Un de mes besoins client est de pouvoir automatiser la cr&eacute;ation de partitions ainsi que le process des objets SSAS. Je me suis donc lanc&eacute; &agrave; la recherche d&#39;une solution existante et j&#39;ai trouv&eacute; &ccedil;a =&gt;<a href="http://ssas-info.com/analysis-services-scripts/1622-script-to-automate-ssas-partition-management-sql-ssis"> Article SSAS-INFO</a> mais comme d&#39;habitude lorsque l&#39;on veut r&eacute;utiliser, cela ne convient pas compl&egrave;tement &agrave; mon besoin :</p>
<ul>
	<li>
		Gestion uniquement des partitions</li>
	<li>
		Script &eacute;crit en <a href="#" title="LE VB c'est le MALLLLLL">VB</a></li>
	<li>
		Script &eacute;crit en proc&eacute;durale</li>
	<li>
		Impossible de sp&eacute;cifier une requ&ecirc;te SQL personalis&eacute;e pour mes partitions</li>
	<li>
		Fonctionne uniquement sur du mono serveur</li>
	<li>
		...</li>
</ul>
<p>
	Me voici donc lanc&eacute; pour la r&eacute;alisation d&#39;une base SQL + Package SSIS + Script AMO (en C#) pour r&eacute;aliser les actions suivantes:</p>
<ul>
	<li>
		Cr&eacute;er n&#39;importe quel objet SSAS
		<ul>
			<li>
				Base</li>
			<li>
				Cube</li>
			<li>
				Dimension</li>
			<li>
				Groupe de mesure</li>
			<li>
				Partitions
				<ul>
					<li>
						Avec la prise en compte de requ&ecirc;tes SQL Personalis&eacute;es</li>
					<li>
						Avec la prise en compte de DirectSlice MDX</li>
				</ul>
			</li>
		</ul>
	</li>
	<li>
		Supprimer n&#39;importe quel objet SSAS</li>
	<li>
		Process n&#39;importe quel objet SSAS</li>
</ul>
<style type="text/css">
.SQLCode {
	font-size: 13px;
	font-weight: bold;
	font-family: monospace;;
	white-space: pre;
    -o-tab-size: 4;
    -moz-tab-size: 4;
    -webkit-tab-size: 4;
}
.SQLComment {
	color: #00AA00;
}
.SQLString {
	color: #AA0000;
}
.SQLFunction {
	color: #AA00AA;
}
.SQLKeyword {
	color: #0000AA;
}
.SQLOperator {
	color: #777777;
}</style>
<p>
	Pour ce faire, j&#39;ai cr&eacute;&eacute; un mod&egrave;le de base de donn&eacute;es&nbsp;<a href="#" title="Bon ok je suis parti en couille :)">un peu complexe</a> je vous l&#39;accorde, mais <a href="#" title="Oh My Gosh j'ai fait des procédures stocké bruler moi !!!">heureusement</a>, j&#39;ai aussi fait les proc&eacute;dures stock&eacute;es qui permettent de remplir simplement les tables.</p>
<p>
	Ci-dessous, le sch&eacute;ma de l&#39;architecture:</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/SSAS_Config.PNG" title="PowerPoint Style !"><img alt="" src="/SaugetFiles/mesImages/SSAS_Config.PNG" style="width: 504px; height: 339px;" /></a></p>
<p>
	&nbsp;</p>
<h1>
	1 - La partie base de donn&eacute;es</h1>
<p>
	Ci-dessous le sch&eacute;ma de la base de donn&eacute;es :</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/DB.PNG"><img alt="" src="/SaugetFiles/mesImages/DB.PNG" style="width: 421px; height: 337px;" /></a></p>
<p>
	Afin de remplir toutes ces tables, nous utiliserons la proc&eacute;dure stock&eacute;e AddSSASObject disponible dans la section telechargement.</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> [dbo]<span class="SQLOperator">.</span>[AddSSASObject]<span class="SQLOperator">(</span>@ProjectName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @ObjectType <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @DatabaseName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @CubeName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @measureGroupName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @DataSourceID <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @PartitionName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @SQLQuery <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>4000<span class="SQLOperator">)
</span><span class="SQLOperator">,</span> @MDXSlice <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>4000<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @DimensionName <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">
,</span> @objectID <span class="SQLKeyword">INT</span> <span class="SQLOperator">=</span> 0 <span class="SQLKeyword">OUTPUT</span><span class="SQLOperator">)</span>
</pre>
<p>
	Cette proc&eacute;dure prend en param&egrave;tres :</p>
<ul>
	<li>
		@ProjectName<br />
		Le nom du projet qui doit &ecirc;tre cr&eacute;&eacute; pr&eacute;alablement dans la table dbo.Project</li>
	<li>
		@ObjectType<br />
		Le type d&#39;objet, celui-ci peut &ecirc;tre:
		<ul>
			<li>
				Database</li>
			<li>
				Cube</li>
			<li>
				MeasureGroup</li>
			<li>
				Partition</li>
			<li>
				Dimension<br />
				&nbsp;</li>
		</ul>
	</li>
	<li>
		@DatabaseName<br />
		Le nom de la dataBase</li>
	<li>
		@CubeName<br />
		Le nom du cube, celui-ci peut-&ecirc;tre null s&#39;il s&#39;agit d&#39;une dimension</li>
	<li>
		@measureGroupName<br />
		Le nom du measure group, celui-ci peut-&ecirc;tre null s&#39;il s&#39;agit d&#39;une dimension ou d&#39;un cube</li>
	<li>
		@DataSourceID<br />
		A sp&eacute;cifier uniquement s&#39;il s&#39;agit de la cr&eacute;ation d&#39;une partition, cela correspond &agrave; l&#39;id de la datasource sur laquelle s&#39;applique la partition</li>
	<li>
		@PartitionName<br />
		Le nom de la partition &agrave; cr&eacute;er</li>
	<li>
		@SQLQuery<br />
		La requ&ecirc;te SQL qui va servir &agrave; alimenter la partition, dans le cas d&#39;un table binding, mettre une requ&ecirc;te non filtr&eacute;e</li>
	<li>
		@MDXSlice<br />
		La requ&ecirc;te MDX pour sp&eacute;cifier un slice sur la partition</li>
	<li>
		@DimensionName<br />
		Le nom de la dimension que l&#39;on veut cr&eacute;er.</li>
</ul>
<p>
	La proc&eacute;dure stock&eacute;e retourne l&#39;@objectID cr&eacute;&eacute;</p>
<p>
	Exemple :</p>
<p>
	Ma base contient uniquement le projet &quot;JeanMichProject&quot; et je veux ajouter la partition &quot;JeanNoPartoch&quot; voici l&#39;appel &agrave; la proc&eacute;dure &agrave; ex&eacute;cuter :</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> dbo<span class="SQLOperator">.</span>AddSSASObject <span class="SQLString">&#39;JeanMichProject&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;Partition&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MaDatabase&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MonCube&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MonMeasureGroup&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MaDataSource&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;JeanNoPartoch&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;SELECT * FROM MaTable&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLKeyword">NULL</span>
	<span class="SQLOperator">,</span><span class="SQLKeyword">NULL</span>
</pre>
<p>
	La base &eacute;tant vide, la proc&eacute;dure va me remplir:</p>
<ul>
	<li>
		La table database avec la valeur &#39;MaDatabase&#39;</li>
	<li>
		La table cube avec la valeur&nbsp; &#39;MonCube&#39;</li>
	<li>
		La table measure group avec la valeur&nbsp; &#39;MonMeasureGroup&#39;</li>
	<li>
		La table partition avec la valeur &#39;JeanNoPartoch&#39;</li>
</ul>
<p>
	Puis elle va cr&eacute;er l&#39;objet qui lie l&#39;ensemble au projet et retourner son ID</p>
<p>
	Si par la suite je lance la proc&eacute;dure suivante :</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> dbo<span class="SQLOperator">.</span>AddSSASObject <span class="SQLString">&#39;JeanMichProject&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;Partition&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MaDatabase&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MonCube&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MonMeasureGroup&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;MaDataSource&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLString">&#39;JeanBOBPartoch&#39;</span> -- Autre partition
	<span class="SQLOperator">,</span><span class="SQLString">&#39;SELECT * FROM MaTable&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLKeyword">NULL</span>
	<span class="SQLOperator">,</span><span class="SQLKeyword">NULL
</span></pre>
<p>
	Deux lignes seront ajout&eacute;es en base, la ligne relative &agrave; la partition &#39;JeanBOBPartoch et la ligne relative &agrave; l&#39;objet.</p>
<p>
	<br />
	Une fois ces informations saisies, il me faut encore sp&eacute;cifier quelles actions effectuer sur ces objets et quand les ex&eacute;cuter c&#39;est l&agrave; qu&#39;intervient la proc&eacute;dure PlanAction :</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> [dbo]<span class="SQLOperator">.</span>[PlanAction]<span class="SQLOperator">(</span>@objectID <span class="SQLKeyword">INT</span><span class="SQLOperator">
,</span> @recurrenceType <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>50<span class="SQLOperator">)</span> <span class="SQLOperator">=</span> <span class="SQLString">&#39;Weekly&#39;</span><span class="SQLOperator">
,</span> @dayOfTheMonth <span class="SQLKeyword">INT</span><span class="SQLOperator">
,</span> @dayID <span class="SQLKeyword">INT</span><span class="SQLOperator">
,</span> @isActivated <span class="SQLKeyword">BIT</span><span class="SQLOperator">
,</span> @ActionType <span class="SQLKeyword">NVARCHAR</span><span class="SQLOperator">(</span>255<span class="SQLOperator">)</span><span class="SQLOperator">)</span>
</pre>
<p>
	Cette proc&eacute;dure prend en param&egrave;tres :</p>
<ul>
	<li>
		@ObjectID<br />
		L&#39;id retourn&eacute; par la pr&eacute;c&eacute;dente proc&eacute;dure stock&eacute;e</li>
	<li>
		@recurrenceType
		<ul>
			<li>
				Weekly</li>
			<li>
				Monthly</li>
			<li>
				OnDemand</li>
		</ul>
	</li>
	<li>
		@dayOfTheMonth<br />
		Si le recurrenceType est Monthly alors il faut remplir ce champs avec une valeur de 1 &agrave; 31 l&#39;action sera effectu&eacute;e tous les mois ce jour</li>
	<li>
		@dayID<br />
		Si le reccurenceType est Weekly alors il faut remplir ce champs avec une valeur de 1 &agrave; 7 ou 1 = dimanche (to do mettre un nom de jour)</li>
	<li>
		@isActivated 1 = &agrave; traiter 0 = ne pas traiter</li>
	<li>
		@ActionType
		<ul>
			<li>
				Create</li>
			<li>
				Delete</li>
			<li>
				Process Default</li>
			<li>
				Process Full</li>
			<li>
				Process Data</li>
			<li>
				Process Structure</li>
			<li>
				Unprocess</li>
			<li>
				Process Index</li>
		</ul>
	</li>
</ul>
<p>
	Donc si je veux que ma partition JeanMich soit process&eacute;e tous les lundi j&#39;ex&eacute;cute la proc&eacute;dure suivante :</p>
<pre class="SQLCode">
<span class="SQLKeyword">EXEC</span> dbo<span class="SQLOperator">.</span>PlanAction 125
	<span class="SQLOperator">,</span><span class="SQLString">&#39;Weekly&#39;</span>
	<span class="SQLOperator">,</span><span class="SQLKeyword">NULL</span>
	<span class="SQLOperator">,</span>2
	<span class="SQLOperator">,</span>1
	<span class="SQLOperator">,</span><span class="SQLString">&#39;Process Full&#39;</span>
</pre>
<p>
	<strong>Et voil&agrave; notre base de donn&eacute;es est remplie avec les champs suffisant pour cr&eacute;er/processer ma partition. (Cr&eacute;er car si je met un process sur une partition non existante, le script AMO va cr&eacute;er cette partition)</strong></p>
<p>
	Il faut maintenant mettre &agrave; disposition &agrave; notre package SSIS un moyen simple d&#39;acceder &agrave; <strike>ce merdier&nbsp;</strike> nos donn&eacute;es nous allons cr&eacute;er deux vues.</p>
<p>
	La premi&egrave;re (disponible dans la section telechargement) nous permet d&#39;obtenir tous les enregistrements planifi&eacute;s :</p>
<pre class="SQLCode">
<span class="SQLKeyword">SELECT</span> [ProjectID]
	<span class="SQLOperator">,</span>[ProjectName]
	<span class="SQLOperator">,</span>[Serveur]
	<span class="SQLOperator">,</span>[ProjectPriority]
	<span class="SQLOperator">,</span>[ObjectID]
	<span class="SQLOperator">,</span>[ObjectTypeID]
	<span class="SQLOperator">,</span>[ObjectTypeName]
	<span class="SQLOperator">,</span>[ObjectTypePriority]
	<span class="SQLOperator">,</span>[DatabaseID]
	<span class="SQLOperator">,</span>[DatabaseName]
	<span class="SQLOperator">,</span>[ActionTypeID]
	<span class="SQLOperator">,</span>[RecurrenceType]
	<span class="SQLOperator">,</span>[DayOfTheMonth]
	<span class="SQLOperator">,</span>[DayID]
	<span class="SQLOperator">,</span>[isActivated]
	<span class="SQLOperator">,</span>[ActionGroup]
	<span class="SQLOperator">,</span>[ActionName]
	<span class="SQLOperator">,</span>[ActionTypePriority]
	<span class="SQLOperator">,</span>[CubeID]
	<span class="SQLOperator">,</span>[CubeName]
	<span class="SQLOperator">,</span>[DimensionID]
	<span class="SQLOperator">,</span>[DimensionName]
	<span class="SQLOperator">,</span>[MeasureGroupID]
	<span class="SQLOperator">,</span>[MeasureGroupName]
	<span class="SQLOperator">,</span>[DataSourceID]
	<span class="SQLOperator">,</span>[MDXSlice]
	<span class="SQLOperator">,</span>[PartitionID]
	<span class="SQLOperator">,</span>[PartitionName]
	<span class="SQLOperator">,</span>[SQLQuery]
<span class="SQLKeyword">FROM</span> [SSAS_Configurations]<span class="SQLOperator">.</span>[dbo]<span class="SQLOperator">.</span>[ObjectListing]
</pre>
<p>
	La seconde nous retourne uniquement les enregistrement &eacute;ligibles pour une action aujourd&#39;hui, elle est bas&eacute;e sur la vue pr&eacute;c&eacute;dente mais &agrave; la clause supl&eacute;mentaire suivante :</p>
<pre class="SQLCode">
<span class="SQLKeyword">ALTER</span> <span class="SQLKeyword">VIEW</span> [dbo]<span class="SQLOperator">.</span>[ObjectListingForToday]
<span class="SQLKeyword">AS</span>
<span class="SQLKeyword">SELECT</span> <span class="SQLOperator">*</span>
<span class="SQLKeyword">FROM</span> ObjectListing O
<span class="SQLKeyword">WHERE</span> isActivated <span class="SQLOperator">=</span> 1
	<span class="SQLKeyword">AND</span> <span class="SQLOperator">(</span>
		<span class="SQLOperator">(</span>
			RecurrenceType <span class="SQLOperator">=</span> <span class="SQLString">&#39;Monthly&#39;</span>
			<span class="SQLKeyword">AND</span> O<span class="SQLOperator">.</span>DayOfTheMonth <span class="SQLOperator">=</span> <span class="SQLFunction">DATEPART</span><span class="SQLOperator">(</span><span class="SQLFunction">DAY</span><span class="SQLOperator">,</span> <span class="SQLFunction">GETDATE</span><span class="SQLOperator">(</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span>
			<span class="SQLOperator">)</span>
		<span class="SQLKeyword">OR</span> <span class="SQLOperator">(</span>
			<span class="SQLOperator">(</span>
				RecurrenceType <span class="SQLOperator">=</span> <span class="SQLString">&#39;Weekly&#39;</span>
				<span class="SQLKeyword">AND</span> O<span class="SQLOperator">.</span>DayID <span class="SQLOperator">=</span> <span class="SQLFunction">DATEPART</span><span class="SQLOperator">(</span>WEEKDAY<span class="SQLOperator">,</span> <span class="SQLFunction">GETDATE</span><span class="SQLOperator">(</span><span class="SQLOperator">)</span><span class="SQLOperator">)</span>
				<span class="SQLOperator">)</span>
			<span class="SQLOperator">)</span>
		<span class="SQLKeyword">OR</span> <span class="SQLOperator">(</span>RecurrenceType <span class="SQLOperator">=</span> <span class="SQLString">&#39;OnDemand&#39;</span><span class="SQLOperator">)</span>
		<span class="SQLOperator">)</span>
</pre>
<p>
	<strong>Notre lot SSIS recevra donc toutes les informations n&eacute;cessaires pour traiter les objets du jour!</strong></p>
<h1>
	2 - La partie SSIS</h1>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/SSIS.PNG"><img alt="" src="/SaugetFiles/mesImages/SSIS.PNG" style="width: 303px; height: 310px;" /></a></p>
<p>
	Sur le lot SSIS je me suis un peu enflam&eacute; sur les foreach, mais c&#39;est pour mieux s&eacute;parer mes diff&eacute;rents &eacute;l&eacute;ments et pouvoir parall&eacute;liser le process des partitions.</p>
<p>
	Il n&#39;y a en th&eacute;orie rien &agrave; configurer sur ce package pour qu&#39;il s&#39;adapte &agrave; votre environnement, il est essentiellement compos&eacute; d&#39;une script task qui va traiter nos &eacute;l&eacute;ments.</p>
<h1>
	3 - La partie Script C#</h1>
<p>
	<img alt="" src="/SaugetFiles/mesImages/Script.PNG" style="width: 198px; height: 278px;" /></p>
<p>
	La script task est compos&eacute;e de 9 classes et 1 interface.</p>
<p>
	Vous trouverez le d&eacute;tail du code en t&eacute;l&eacute;chargement.</p>
<h1>
	4 - To Do List</h1>
<ul>
	<li>
		La liste des ActionType n&#39;est pas compl&egrave;te, j&#39;ai seulement implement&eacute; ceux que j&#39;ai pu tester.</li>
	<li>
		Finir la partie R&ocirc;le</li>
</ul>
<h1>
	4 - Telechargement</h1>
<p>
	Le zip complet ici <a href="/SaugetFiles/mesImages/files/CubeBuilder%20V0_2.zip">=&gt; Cube Builder V0.2 &lt;=</a></p>
<p>
	<u>Changelog Version 0.2:</u></p>
<ul>
	<li>
		Ajout de commentaires.</li>
	<li>
		Correction de bugs.</li>
</ul>
<p>
	Le zip complet ici <a href="/SaugetFiles/mesImages/files/CubeBuilder%20V0_1.zip">=&gt; Cube Builder V0.1 &lt;=</a></p>
<p>
	Il contient:</p>
<ul>
	<li>
		Le dtsx</li>
	<li>
		Le sch&eacute;ma de la base de donn&eacute;e</li>
	<li>
		L&#39;initialisation des donn&eacute;es (Type d&#39;actions ...)</li>
	<li>
		Un fichier excel de suivis des logs (Pensez &agrave; changer la connexion)</li>
</ul>
<p>
	Encore une fois, il s&#39;agit ici que d&#39;une version non termin&eacute;e sur laquelle il est possible d&#39;ajouter des milliards de choses :)</p>
]]><![CDATA[<a href="http://www.sauget-ch.fr/article-78.html">Lire la suite ... </a>]]></description></item><item><title><![CDATA[Installation de Windows Server 8 Beta]]></title><link>http://www.sauget-ch.fr/article-77.html</link><pubDate>2012-04-10 08:04:44</pubDate><description><![CDATA[<p>
	Bon pour faire court sur pourquoi je me retrouve &agrave; installer Windows Server 8 Beta, depuis quelques mois, je blog sur la r&eacute;alisation d&#39;un projet d&eacute;cisionnel (<a href="http://www.sauget-ch.fr/article-64-How-To-Faire-une-maquette-sur-SQL-Server-2012.html">tous les d&eacute;tails ici</a>)&nbsp; or voil&agrave; toutes mes p&eacute;riodes d&#39;essais ont expir&eacute; et c&#39;est la gal&egrave;re (Sharepoint ...)</p>
<p>
	Je repars donc sur de bonnes bases avec mon tout nouveau compte <a href="https://msdn.microsoft.com/fr-fr/subscriptions/buy/hh442902.aspx">MSDN Premium </a>afin de ne plus me retrouver sans cl&eacute;s!</p>
<p>
	Pour conclure sur cette intro passionnante, vu que je n&#39;aime pas recommencer 15 fois la m&ecirc;me chose, j&#39;en profite pour tester Windows Server 8 et la RTM de SQL Server 2012 (histoire de voir si mes pr&eacute;c&eacute;dents posts sont toujours valables.)</p>
<p>
	Je vais donc installer<strong> windows server 8</strong> sur une VM avec <strong>VMWare Workstation 8</strong> (c&#39;est l&#39;ann&eacute;e des 8?)</p>
<p>
	<em>N.B. j&#39;ai test&eacute; avec la version 7 de workstation sans grand succ&egrave;s.</em></p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/1-First Screen.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/1-First Screen.png" style="width: 442px; height: 401px;" /></a></p>
<p>
	Pour l&#39;instant tout va bien, on fait une installation typique ...</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/2- Second Screen.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/2- Second Screen.png" style="width: 442px; height: 401px;" /></a></p>
<p>
	VMWare n&#39;arrive pas &agrave; detecter la version de l&#39;ISO, c&#39;est normal, ils n&#39;ont pas encore officiellement int&eacute;gr&eacute; la b&ecirc;te.</p>
<p>
	C&#39;est pas grave, on fait suivant ;)</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/3- Third Screen.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/3- Third Screen.png" style="width: 442px; height: 401px;" /></a></p>
<p>
	on continue ...</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/4- four Screen.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/4- four Screen.png" style="width: 442px; height: 401px;" /></a></p>
<p>
	Hum je n&#39;ai pas de cl&eacute;, c&#39;est une beta.</p>
<p>
	Pour la config de la machine je lui met 60 GO et 4096 mo de ram avec 2 processeurs de 4 coeurs soit 8 processeurs, logique.</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/5- fift Screen.png"><img alt="/SaugetFiles/mesImages/image/Windows 8/5- fift Screen.png" src="/SaugetFiles/mesImages/image/Windows 8/5- fift Screen.png" style="width: 284px; height: 257px;" /></a><a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/6- Proc.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/6- Proc.png" style="width: 300px; height: 256px;" /></a><a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/6- Ram.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/6- Ram.png" style="width: 300px; height: 255px;" /></a></p>
<p>
	Jusqu&#39;ici tout va bien, mon super poisson veille au grain !</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/7- Fish.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/7- Fish.png" style="width: 391px; height: 332px;" /></a></p>
<p>
	Et l&agrave; c&#39;est le drame ...</p>
<p>
	<strong>&quot;Windows ne peut pas lire le param&egrave;tre <productkey> du fichier de r&eacute;ponses sans assistance.&quot;</productkey></strong></p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/8- Bug.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/8- Bug.png" style="width: 509px; height: 212px;" /></a></p>
<p>
	Pas tr&egrave;s sympa ... Bref apr&egrave;s quelques recherches (<a href="http://lmgtfy.com/?q=Windows+server+8+fonctionne+pas+!+Quelle+Merde+!+">Merci Google</a>)</p>
<p>
	Il faut allez desactiver le lecteur disquette dans les param&egrave;tres de la VM (Ah bin d&#39;accord)</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/9- Floppy.png"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/9- Floppy.png" style="width: 476px; height: 412px;" /></a></p>
<p>
	Et hop un petit reboot ... et magie magie &ccedil;a fonctionne.</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/10- Langue.PNG"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/10- Langue.PNG" style="width: 480px; height: 355px;" /></a></p>
<p>
	On choisit la langue on clique sur Installer maintenant.</p>
<p>
	Deux choix s&#39;offrent maintenant &agrave; nous:</p>
<ul>
	<li>
		Windows Server 8 Beta DataCenter (<a href="http://technet.microsoft.com/en-us/library/cc753802%28v=ws.10%29.aspx">Server Core Installation</a>)</li>
	<li>
		Windows Server 8 Beta DataCenter (Server With GUI)</li>
</ul>
<p>
	On va choisir la version avec Interface utilisateur tant qu&#39;&agrave; faire ...&nbsp;</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/11- GUI.PNG"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/11- GUI.PNG" style="width: 479px; height: 360px;" /></a></p>
<p>
	Apr&egrave;s &ccedil;a ressemble &agrave; ce que l&#39;on connait :</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/12- Install.PNG"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/12- Install.PNG" style="width: 478px; height: 360px;" /></a></p>
<p>
	Un petit reboot plus tard ... et un deuxieme ...</p>
<p>
	Maintenant on rentre nos informations d&#39;identification, petite nouveaut&eacute; assez sympa un bouton permet de voir le mot de passe saisie lors du maintien de celui-ci, le mot de passe redevient cach&eacute; d&egrave;s qu&#39;on relache le bouton.</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/13- config.PNG"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/13- config.PNG" style="width: 520px; height: 391px;" /></a></p>
<p>
	Et voil&agrave; ! C&#39;est fini je n&#39;ai plus qu&#39;a installer active directory, Sharepoint 2010, Sql Server 2012, powerPivot ... (je veux mourir)</p>
<p>
	<a class="zoombox zgallery2" href="/SaugetFiles/mesImages/image/Windows 8/14- config.PNG"><img alt="" src="/SaugetFiles/mesImages/image/Windows 8/14- config.PNG" style="width: 516px; height: 388px;" /></a></p>
<p>
	N.B. : J&#39;avais presque oubli&eacute;, pour une installation plus approfondie, consultez l&#39;excellent article de <a href="http://thomasricquebourg.wordpress.com/2012/03/07/installation-vm-bi-microsoft-windows-server-8-sql-server-2012-sharepoint-2010/">Thomas Ricquebourg</a></p>
]]><![CDATA[<a href="http://www.sauget-ch.fr/article-77.html">Lire la suite ... </a>]]></description></item></channel></rss>