<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SSIS Team Blog : MDDE</title><link>http://blogs.msdn.com/mattm/archive/tags/MDDE/default.aspx</link><description>Tags: MDDE</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>MDDE - MetaData Driven ETL</title><link>http://blogs.msdn.com/mattm/archive/2008/06/13/mdde-metadata-driven-etl.aspx</link><pubDate>Fri, 13 Jun 2008 20:34:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8594785</guid><dc:creator>mmasson</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/mattm/comments/8594785.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mattm/commentrss.aspx?PostID=8594785</wfw:commentRss><description>&lt;p&gt;If you haven't read about MDDE yet, be sure to read the blurb on the &lt;a href="http://www.codeplex.com/SQLServerMDDEStudio/"&gt;MDDE Codeplex homepage&lt;/a&gt;. There's currently not much documentation about it, but I plan on sharing things about it as I start to learn how to use it myself.&amp;#160; &lt;/p&gt;  &lt;p&gt;The MDDE process:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a package in BIDS &lt;/li&gt;    &lt;li&gt;Import the package as a template in MDDE Studio &lt;/li&gt;    &lt;li&gt;Set the properties you want to be configurable &lt;/li&gt;    &lt;li&gt;Create an instance of the template &lt;/li&gt;    &lt;li&gt;Set values for properties you want to change &lt;/li&gt;    &lt;li&gt;Generate packages for your instance &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;MDDE requires a repository (database) to store all of its information. The source on codeplex contains a Database Project (called Schema) which can be used to create everything you need.&lt;/p&gt;  &lt;p&gt;After the repository is setup, we'll need to create a package to use as our template. Because of the processing it does, MDDE requires explicit support for package elements, and will throw an exception if your template contains something it doesn't know about. The following package elements are currently supported:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Containers      &lt;ul&gt;       &lt;li&gt;Sequence &lt;/li&gt;        &lt;li&gt;For Each &lt;/li&gt;        &lt;li&gt;For &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Connection managers &lt;/li&gt;    &lt;li&gt;Event handlers &lt;/li&gt;    &lt;li&gt;Log providers &lt;/li&gt;    &lt;li&gt;Variables &lt;/li&gt;    &lt;li&gt;Execute SQL Task &lt;/li&gt;    &lt;li&gt;Data Flow Task      &lt;ul&gt;       &lt;li&gt;Derived Column &lt;/li&gt;        &lt;li&gt;Lookup &lt;/li&gt;        &lt;li&gt;OLEDB Command &lt;/li&gt;        &lt;li&gt;Row Count &lt;/li&gt;        &lt;li&gt;Merge &lt;/li&gt;        &lt;li&gt;Sources          &lt;ul&gt;           &lt;li&gt;Flat File &lt;/li&gt;            &lt;li&gt;OLEDB &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li&gt;Destinations          &lt;ul&gt;           &lt;li&gt;Flat File &lt;/li&gt;            &lt;li&gt;Raw File &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of the enhancements I'm hoping to see is the ability to pass through anything it doesn't have code for already.&lt;/p&gt;  &lt;p&gt;As a starting example, I'll create a template from a very simple package that contains a single Task.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="177" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Everything in MDDE is done through the main executable - Microsoft.SharedSource.SqlServer.MDDE.ManagementStudio.exe&lt;/p&gt;  &lt;p&gt;Launching it brings up a UI. Click Connect and point it to your MDDE database&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="360" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb_1.png" width="479" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click Connect and point it to your MDDE database. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/mdde-1.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="362" alt="MDDE Studio" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/mdde-1_thumb.jpg" width="479" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I right click on Templates and select Import Template... to import the package I created in BIDS.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="445" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb_2.png" width="479" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the Template Components window, I can see a break down of the package. By selecting the Execute SQL Task under Executables, I can see all of the properties that MDDE has exposed. To make a property configurable for your template, check the Is Configurable box next to the property name.&lt;/p&gt;  &lt;p&gt;In this example, I'm going to make the following things configurable:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Execute SQL Task - &lt;strong&gt;SqlStatementSource&lt;/strong&gt; - the SQL statement that will be executed by the task &lt;/li&gt;    &lt;li&gt;LocalHost.AdventureWorks - &lt;strong&gt;ConnectionString&lt;/strong&gt; - The connection manager used by the Execute SQL Task &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After importing the template, it shows up under the Templates node.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="376" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb_3.png" width="479" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next we want to create an Instance of the template. Right click on Template Instances, and select &amp;quot;Create instance...&amp;quot; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_10.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="382" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb_4.png" width="479" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;From the Create Template Instance page, we set values for the properties we flagged as configurable in the last step. I give the instance a name, and slightly modify my SQL statement just to have something modified. &lt;/p&gt;  &lt;p&gt;After creating an instance, I can now generate packages based on it. Right click on the Template name (in my example, ExecuteSqlTemplate), and select Generate packages...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_12.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="475" alt="image" src="http://blogs.msdn.com/blogfiles/mattm/WindowsLiveWriter/MDDE_856/image_thumb_5.png" width="479" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select the instance you just created, and provide a path to save the package (file system only right now). After clicking the Generate Package button, you'll have an instance of your package template with all of the values filled in.&lt;/p&gt;  &lt;p&gt;Simple, right? My example is also not very useful - this is already something you can do using package configurations. If you go back and look at the Create Template Instance dialog, you'll notice two other tabs on the right - Mappings and Collections. These are where you'd configure columns for a data flow, and is where MDDE gets really interesting. I'll show these off in my next example.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8594785" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mattm/archive/tags/MDDE/default.aspx">MDDE</category></item><item><title>MDDE appears on Codeplex</title><link>http://blogs.msdn.com/mattm/archive/2008/03/21/mdde-appears-on-codeplex.aspx</link><pubDate>Sat, 22 Mar 2008 08:38:22 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8330668</guid><dc:creator>mmasson</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/mattm/comments/8330668.aspx</comments><wfw:commentRss>http://blogs.msdn.com/mattm/commentrss.aspx?PostID=8330668</wfw:commentRss><description>&lt;p&gt;The SQL Server Metadata-Driven ETL Studio (MDDE) was an internal MSIT project first shown at the MS BI Conference last year. The &lt;a href="http://www.codeplex.com/SQLServerMDDEStudio"&gt;initial release is now up on Codeplex&lt;/a&gt;. There isn't much information up about it yet, but I'm told that docs and examples should be appearing soon.&lt;/p&gt;  &lt;p&gt;Essentially what MDDE gives you is a way to create SSIS package templates, which can be easily updated when your metadata changes. I'm currently playing around the code, and will hopefully have a walk-through up in the next little while.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8330668" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/mattm/archive/tags/Samples/default.aspx">Samples</category><category domain="http://blogs.msdn.com/mattm/archive/tags/MDDE/default.aspx">MDDE</category><category domain="http://blogs.msdn.com/mattm/archive/tags/Templates/default.aspx">Templates</category></item></channel></rss>