<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8600927897234142120</id><updated>2012-01-26T14:07:33.816-08:00</updated><category term='Architect'/><category term='Denali'/><category term='Webcasts'/><category term='tools'/><category term='Performance'/><category term='Certification'/><category term='Toys'/><category term='Personal Life'/><category term='SQL Server'/><category term='Deployment'/><category term='Data Mining'/><category term='Beginners'/><category term='Best Practices'/><category term='MOF'/><category term='Quote'/><category term='2012'/><category term='Myths'/><category term='Upgrade'/><category term='Press'/><category term='MSF'/><category term='Conference'/><category term='Tangents'/><category term='BI'/><category term='Special Ops'/><category term='Presentation'/><category term='dev'/><category term='Work'/><category term='Process'/><category term='Katmai'/><category term='Office 2007'/><category term='T-SQL'/><category term='Book'/><category term='SSIS'/><category term='Training'/><category term='WPF'/><title type='text'>BI Polar</title><subtitle type='html'>Thoughts, musings, rants and ravings about the Microsoft Business Intelligence platform and development technologies.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default?start-index=101&amp;max-results=100'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>287</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8128349756659583047</id><published>2011-12-06T15:29:00.001-08:00</published><updated>2011-12-06T15:31:28.488-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Special Ops'/><title type='text'>Bring the Special Ops Tour to YOUR City</title><content type='html'>&lt;p&gt;Calling all SQL professionals!&lt;/p&gt; &lt;p&gt;Oh yeah, we used that in the last video, didn’t we…&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:8de9cae9-c207-4996-9ef8-5f3e37143f90" class="wlWriterEditableSmartContent"&gt;&lt;div id="324d0922-d3dc-4237-b1a9-ec9c0ef30971" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=jdN69o8DlbA" target="_new"&gt;&lt;img src="http://lh5.ggpht.com/-DW2-5YAYo30/Tt6lbQrxE9I/AAAAAAAAAxk/oQUixK4Ja7A/videoff3ed44d269b%25255B20%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('324d0922-d3dc-4237-b1a9-ec9c0ef30971'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/jdN69o8DlbA?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/jdN69o8DlbA?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;We’re just getting started.&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Yes we did, and SQL Server fans from across the country have visited &lt;a title="www.specialopstour.com" href="http://www.specialopstour.com/"&gt;www.specialopstour.com&lt;/a&gt; and voted for the cities where they want the tour to visit. As of today the most voted cities are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;San Diego, CA&lt;/li&gt; &lt;li&gt;Boston, MA&lt;/li&gt; &lt;li&gt;Denver, CO&lt;/li&gt; &lt;li&gt;Minneapolis, MN&lt;/li&gt; &lt;li&gt;Chicago, IL&lt;/li&gt; &lt;li&gt;Atlanta, GA&lt;/li&gt; &lt;li&gt;Dallas, TX&lt;/li&gt; &lt;li&gt;Cleveland, OH&lt;/li&gt; &lt;li&gt;New York, NY&lt;/li&gt; &lt;li&gt;Detroit, MI&lt;/li&gt; &lt;li&gt;Phoenix, AZ&lt;/li&gt; &lt;li&gt;Los Angeles, CA&lt;br&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;There are only a few more days remaining before the survey closes, so if you want to get your city on the list[1] the time to strike is now. Be sure to cast your vote before the next mission begins…&lt;/p&gt; &lt;p&gt;[1] Or, conversely, to keep your city from being bumped off the list.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8128349756659583047?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8128349756659583047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8128349756659583047' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8128349756659583047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8128349756659583047'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/12/bring-special-ops-tour-to-your-city.html' title='Bring the Special Ops Tour to YOUR City'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-DW2-5YAYo30/Tt6lbQrxE9I/AAAAAAAAAxk/oQUixK4Ja7A/s72-c/videoff3ed44d269b%25255B20%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2769467468088021013</id><published>2011-11-30T10:06:00.001-08:00</published><updated>2011-11-30T10:06:27.759-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Upgrade'/><title type='text'>5 Tips for a Smooth SSIS Upgrade to SQL Server 2012</title><content type='html'>&lt;p&gt;The SSIS team has just released a &lt;a href="http://msdn.microsoft.com/en-us/library/hh667275(d=lightweight).aspx"&gt;white paper on upgrading to SSIS in SQL Server 2012&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;Summary:&lt;/strong&gt; Microsoft SQL Server 2012 Integration Services (SSIS) provides significant improvements in both the developer and administration experience. This article provides tips that can help to make the upgrade to Microsoft SQL Server 2012 Integration Services successful. The tips address editing package configurations and specifically connection strings, converting configurations to parameters, converting packages to the project deployment model, updating Execute Package tasks to use project references and parameterizing the PackageName property. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;If you’ve been using SSIS in versions prior to 2012[1] please take a moment to check it out. The evenings you save may be your own…&lt;/p&gt; &lt;p&gt;Direct link: &lt;a title="http://msdn.microsoft.com/en-us/library/hh667275(d=lightweight).aspx" href="http://msdn.microsoft.com/en-us/library/hh667275(d=lightweight).aspx"&gt;http://msdn.microsoft.com/en-us/library/hh667275(d=lightweight).aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[1] And if you read this blog, odds are this is a safe bet.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2769467468088021013?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2769467468088021013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2769467468088021013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2769467468088021013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2769467468088021013'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/11/5-tips-for-smooth-ssis-upgrade-to-sql.html' title='5 Tips for a Smooth SSIS Upgrade to SQL Server 2012'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7834036086614306599</id><published>2011-11-29T09:08:00.001-08:00</published><updated>2011-11-30T10:01:05.669-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Setting up a SQL Server 2012 RC0 VM</title><content type='html'>&lt;p&gt;I ran across this excellent article last week, but forgot to share it before I went offline for the Thanksgiving holiday. Fortunately it was waiting for me in a browser tab this morning to remind me.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/3402.aspx"&gt;How to Build a SQL Server 2012 RC0 Hyper-V Virtual Machine&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Setting up a new development[1] environment for a new product is often complex. When the new product is something as diverse as SQL Server 2012, and when you want to explore integration with other products like Visual Studio, SharePoint and Exchange, the setup process can be positively daunting.&lt;/p&gt;  &lt;p&gt;In this &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/3402.aspx"&gt;wiki page&lt;/a&gt;, Richard Davis presents a step-by-step approach for building a SQL Server 2012 RC0 VM. I haven’t gone through the whole thing myself, but when I need to build out a comprehensive demo machine, this is where I’ll start. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Or demo, or play, or whatever.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7834036086614306599?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7834036086614306599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7834036086614306599' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7834036086614306599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7834036086614306599'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/11/setting-up-sql-server-2010-rc0-vm.html' title='Setting up a SQL Server 2012 RC0 VM'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-456660875811960534</id><published>2011-11-22T11:27:00.001-08:00</published><updated>2011-11-22T11:27:05.777-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS in RC0</title><content type='html'>&lt;p&gt;If you’ve been following the pre-release versions SQL Server 2012 (previously code-named “Denali”) you’ve probably been using the Community Technology Preview (CTP3) that Microsoft released back in July. You probably have already seen the Release Candidate (RC0) that was made available last week. &lt;/p&gt; &lt;p&gt;But what you may not know is how SSIS is changed between CTP3 and RC0. RC0 is a big leap forward for SSIS, and includes some significant new functionality, such as:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Script Component debugging&lt;/li&gt; &lt;li&gt;Attunity Change Data Capture components&lt;/li&gt; &lt;li&gt;Change Data Capture for Oracle&lt;/li&gt; &lt;li&gt;ODBC Source and Destination components&lt;/li&gt; &lt;li&gt;Externalize parameter values in Visual Studio configurations&lt;/li&gt; &lt;li&gt;New REPLACENULL expression function&lt;/li&gt; &lt;li&gt;UI for Pivot and Row Count transforms&lt;/li&gt; &lt;li&gt;Tons of minor fixes and improvements based on CTP feedback&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;SSIS developer Matt Masson has &lt;a href="http://blogs.msdn.com/b/mattm/archive/2011/11/17/what-s-new-in-ssis-for-sql-server-2012-rc0.aspx"&gt;a more in-depth look at these changes on the SSIS team blog&lt;/a&gt;[1], but I wanted to call them out here as well.&lt;/p&gt; &lt;p&gt;The final bullet[2] is also worth stressing. You may not notice these improvements directly, but the SSIS team have made a significant “fit and polish” for RC0, improving functionality that was delivered in (and before) CTP3. If you’ve been using SSIS in CTP3, be sure to download RC0 today and give it a try.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;[1] And to give credit where credit is due, the “what’s new” list in this post was blatantly copied from an email from Matt as well.&lt;/p&gt; &lt;p&gt;[2] Which I added to Matt’s list.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-456660875811960534?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/456660875811960534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=456660875811960534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/456660875811960534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/456660875811960534'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/11/if-youve-been-following-pre-release.html' title='SSIS in RC0'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1006167784425666954</id><published>2011-11-17T09:14:00.001-08:00</published><updated>2011-12-06T15:32:54.955-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Special Ops'/><title type='text'>SQL Server Special Ops Tour</title><content type='html'>&lt;p&gt;If you’ve been following recent SQL Server news, you know that the next version of SQL Server has lost its “Denali” code name[1] and has been officially named SQL Server 2012.[0] This is actually sort of old news, but I’m mentioning it here because it segues so nicely into the main topic of this post: the upcoming Special Ops tour.&lt;/p&gt;  &lt;p&gt;The SQL Server Special Ops tour is a 12-city[2] tour being organized by the SQL Server team. You’ve probably seen tours like this before, with technical experts providing deep insight into the features and capabilities of a new software release. But this is a tour with a twist, and the difference is &lt;em&gt;&lt;strong&gt;you&lt;/strong&gt;&lt;/em&gt;.[3] To be more specific, it’s members of the SQL Server community who will select the cities for the tour, and who will help select the topics. You can go to &lt;a title="www.specialopstour.com" href="http://www.specialopstour.com/"&gt;www.specialopstour.com&lt;/a&gt; today to cast your votes. There will be even more ways to participate, so check out the site today and watch for more news.&lt;/p&gt;  &lt;p&gt;And while you’re there, you may also want to check out just what it is that members of the SQL Server team get up to when they’re not at the office… &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:5bd12155-213f-44c7-8597-7905f8960ae2" class="wlWriterEditableSmartContent"&gt;&lt;div&gt;&lt;object width="448" height="252"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jdN69o8DlbA?hl=en&amp;amp;hd=1"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/jdN69o8DlbA?hl=en&amp;amp;hd=1" type="application/x-shockwave-flash" width="448" height="252"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Do you see any familiar faces?&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;[0] You also know that SQL Server 2012 Release Candidate 0 is now available for download, as of this morning.&lt;/p&gt;  &lt;p&gt;[1] Although I expect most people on the SQL Server team will be calling it “Denali” for many years to come. After joining the SSIS team this summer I had to dredge through my long-term memory to recall what “Yukon” and “Katmai” and “Kilimanjaro” were.&lt;/p&gt;  &lt;p&gt;[2] See the clever tie-in there? SQL Server 20&lt;strong&gt;12&lt;/strong&gt;. &lt;strong&gt;12&lt;/strong&gt; cities? Ahhh…&lt;/p&gt;  &lt;p&gt;[3] Yes, I’m playing this up a little bit. I’m home sick today (which is probably the only reason why I have time to blog during business hours) and am feeling a bit punchy…&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1006167784425666954?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1006167784425666954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1006167784425666954' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1006167784425666954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1006167784425666954'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/11/if-youve-been-following-recent-sql.html' title='SQL Server Special Ops Tour'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2487009489596469719</id><published>2011-11-17T08:48:00.001-08:00</published><updated>2011-11-17T08:48:59.196-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='2012'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2012 RC 0 Available for Download</title><content type='html'>&lt;p&gt;If you’re working with the pre-release versions of SQL Server 2012, or if you’re thinking about preparing for its release, today is a big day. The first release candidate has been published on the Microsoft Download Center:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/download/en/details.aspx?id=28145" href="http://www.microsoft.com/download/en/details.aspx?id=28145"&gt;http://www.microsoft.com/download/en/details.aspx?id=28145&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;RC0 is a major release for SQL Server Integration Services, with lots of improvements since the CTP3 release in July. If you’ve been waiting to kick the tires, you may not want to wait too much longer…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2487009489596469719?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2487009489596469719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2487009489596469719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2487009489596469719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2487009489596469719'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/11/if-youre-working-with-pre-release.html' title='SQL Server 2012 RC 0 Available for Download'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-982553121481472774</id><published>2011-07-21T11:25:00.001-07:00</published><updated>2011-07-21T11:25:28.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Your Window Improvements May Vary</title><content type='html'>&lt;p&gt;I love my new job. This morning I’m sitting in a training session organized by the SQL Server team to bring Microsoft team members up to speed on new Business Intelligence capabilities in SQL Server “Denali”. The session is about to begin, and I’m reviewing the SSIS slides so I can be prepared for questions as they arise. (Did I mention I love my new job?)&lt;/p&gt;  &lt;p&gt;I also love ambiguity.[1]&lt;/p&gt;  &lt;p&gt;One of the features listed in the presentation is “Variable Window Improvements”. Reading this, all I could think is “we’ve really improved the windows, but they’re different all the time, so we can’t tell you what they are.”[2]&lt;/p&gt;  &lt;p&gt;Of course, that’s not what the slide was about. The topic was the specific improvements made to the Variables Window for the SSIS package designer in SQL Server “Denali” Business Intelligence Development Studio. This may sound less than exciting[3] and even in the context of a two-day training event it only rates one slide bullet. But despite this, these tool improvements address a significant real-world need, and are certainly worthy of a blog post or two.&lt;/p&gt;  &lt;p&gt;Before we look at the new “Denali” goodness, let’s look at a scenario in pre-“Denali” SSIS today[4]:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You’re editing an Execute SQL task in your package, and realize that you need a variable in which to store the results of the query you’re running.&lt;/li&gt;    &lt;li&gt;You exit the task editor, and in the Variables window you create a new variable.&lt;/li&gt;    &lt;li&gt;Later on, you’re looking for the variable, and you can’t find it. You frown, scratch your head, and re-create the variable.&lt;/li&gt;    &lt;li&gt;When you run your package, you find that although the package (and the Execute SQL task) runs successfully, the variable is never populated with the value from the query.&lt;/li&gt;    &lt;li&gt;You get yourself another coffee and settle down for a long troubleshooting session…&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Experienced SSIS developers will probably be saying something along the lines of “well, of course, you needed to click on the package Control Flow design surface between steps 1 and 2. Duh!” &lt;/p&gt;  &lt;p&gt;Those who are newer to SSIS may be missing the key point in this scenario: When you create a new variable in SSIS, &lt;em&gt;the variable is created at the scope of whatever container or task was selected in the designer&lt;/em&gt;. Although this behavior is consistent and documented, it often comes as a surprise, because nobody actually reads the documentation.[5] It also often comes as a frustration, because most of the time variables should be created at the package level in order to be useful.[6]&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;In SQL Server “Denali” SSIS, all new variables are created at the package scope. &lt;/font&gt;&lt;/strong&gt;This change ensures that the “what the heck” moments we experienced in previous versions of SSIS will no longer occur, and that all new variables will be defined at the most frequently used scope.&lt;/p&gt;  &lt;p&gt;What about those situations when you actually do want a variable at a different scope? In previous versions of SSIS, variable scope could not be changed – you needed to delete the old variable and create a new one at the new scope.[7]&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;In SQL Server “Denali” SSIS, you can move or copy variables between scopes. &lt;/font&gt;&lt;/strong&gt;Odds are you will need this functionality less than you needed it in earlier versions of SSIS (you know, when it wasn’t there) but when you need it, you’ll love it.&lt;/p&gt;  &lt;p&gt;And that’s that. As per usual, I wrote two pages when I could have written two sentences (the ones I highlighted in red) but there you have it. The facts are always more meaningful when presented in the context of a story, and hopefully the story helped turn these two bullets into something more than a”yawn” moment. I’m sure you’ll let me know…&lt;/p&gt;  &lt;hr /&gt;  &lt;p&gt;[1] In case you’re interested: &lt;a title="http://en.wikipedia.org/wiki/Syntactic_ambiguity" href="http://en.wikipedia.org/wiki/Syntactic_ambiguity"&gt;http://en.wikipedia.org/wiki/Syntactic_ambiguity&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;[2] Yes, I crack myself up.&lt;/p&gt;  &lt;p&gt;[3] And less funny that my ambiguity joke, at least a little.&lt;/p&gt;  &lt;p&gt;[4] This is true with SSIS in SQL Server 2005, 2008 and 2008 R2.&lt;/p&gt;  &lt;p&gt;[5] Except you. I know you do, I meant everybody else. You know those guys…&lt;/p&gt;  &lt;p&gt;[6] One of the “lightweight best practices” I have included in my SSIS presentations over the years is “always right-click on the package design surface and choose Variables from the context menu” because it ensures that the new variable is at the package scope regardless of what task you were working on beforehand.&lt;/p&gt;  &lt;p&gt;[7] This functionality does exist in the amazing &lt;a href="http://bidshelper.codeplex.com/wikipage?title=Variables%20Window%20Extensions&amp;amp;referringTitle=Documentation"&gt;BIDS Helper&lt;/a&gt; add-in, but it was not included in SSIS.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-982553121481472774?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/982553121481472774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=982553121481472774' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/982553121481472774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/982553121481472774'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/07/your-window-improvements-may-vary.html' title='Your Window Improvements May Vary'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4435809723132500400</id><published>2011-07-20T11:33:00.001-07:00</published><updated>2011-07-20T11:33:53.860-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Denali'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Back in the SSISaddle</title><content type='html'>&lt;p&gt;Testing…&lt;/p&gt;  &lt;p&gt;Testing…&lt;/p&gt;  &lt;p&gt;Is this thing on?&lt;/p&gt;  &lt;p&gt;Although I still get the occasional comment on older blog posts, I assume that pretty much nobody subscribes to my blog anymore for SSIS information. When I joined Microsoft Learning in October 2008, the SQL/BI/SSIS side of my life got pushed to the side. I kept working with the tools, but it was no longer a core part of my job, and one of the things I largely gave up on blogging and related technical community efforts. It wasn’t a change I wanted to make, but I needed to ensure that I rocked my new job as much as possible. The end result was that over the last 30 months I’ve posted fewer than ten SSIS-related posts.[1]&lt;/p&gt;  &lt;p&gt;This will now change.&lt;/p&gt;  &lt;p&gt;This week I joined the SQL Server Integration Services team as a Senior Program Manager.[2]&lt;/p&gt;  &lt;p&gt;In the months leading up to the SQL Server “Denali” release, I hope to blog regularly on “Denali”-related features, enhancements and techniques. The “Denali” release is a major release for SSIS, with a ton of exciting new capabilities for new users and seasoned SSIS professionals alike.[3] If you are using SSIS already, SSIS in “Denali” is going to make your life easier in many ways. If you’re just starting off with SSIS, the “Denali” release will ease your learning curve, and help you &lt;a href="http://bi-polar23.blogspot.com/2007/08/swearing-lot-today.html"&gt;swear less&lt;/a&gt;. In short, I’ll have a lot to blog about.&lt;/p&gt;  &lt;p&gt;With this said, it may still be a few weeks before I post again. Not only will I be getting up to speed on my new team and my new role, I will also be relocating my family from New York to Redmond.[4] The relocation will be consuming most or all of my free time for the next few weeks, but once I’m settled in you should expect to hear from me more often.&lt;/p&gt;  &lt;p&gt;It’s good to be back.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:b0073008-5ca5-495a-9d16-f46517617e35" class="wlWriterEditableSmartContent"&gt;&lt;div id="9d332326-3698-49d2-b285-87a0a3944786" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=xuX28N2ckk0" target="_new"&gt;&lt;img src="http://lh5.ggpht.com/-aRWfMLK7LSk/TicfkaTAioI/AAAAAAAAAw4/_sd4lCMKdUo/video20cff967c48d%25255B19%25255D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('9d332326-3698-49d2-b285-87a0a3944786'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/xuX28N2ckk0?hl=en&amp;amp;hd=1\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/xuX28N2ckk0?hl=en&amp;amp;hd=1\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;448\&amp;quot; height=\&amp;quot;252\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="width:448px;clear:both;font-size:.8em"&gt;Back in the SSISaddle indeed.&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;[1] And that I rocked the new job pretty darned hard, but that’s a longer story. Ask your friendly neighborhood Microsoft Certified Trainer.&lt;/p&gt;  &lt;p&gt;[2] I wish you could see the smile on my face as I typed that sentence.&lt;/p&gt;  &lt;p&gt;[3] If you want an overview of these new things, please be sure to download and view &lt;a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DBI317"&gt;Matt Masson’s presentation from TechEd North America&lt;/a&gt;. We’ll have more announcements coming closer to release, but this session is more than enough to whet your appetite.&lt;/p&gt;  &lt;p&gt;[4] I have two children, two cats and one wife, and the effort and stress of moving the whole family is staggering. I thought I knew what I was getting into, but boy was I wrong.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4435809723132500400?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4435809723132500400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4435809723132500400' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4435809723132500400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4435809723132500400'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2011/07/back-in-ssisaddle.html' title='Back in the SSISaddle'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-aRWfMLK7LSk/TicfkaTAioI/AAAAAAAAAw4/_sd4lCMKdUo/s72-c/video20cff967c48d%25255B19%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-806287783356178049</id><published>2009-10-07T05:55:00.001-07:00</published><updated>2009-10-07T05:55:57.966-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Transformations are NOT Tasks</title><content type='html'>&lt;p&gt;This is another one of those “I thought I blogged this years ago” posts. I was having a conversation with a fellow MCT a few days ago, and he described SSIS data flow transformations as “tasks on the data flow tab.” I didn’t say anything then, but this phrase has been sticking in my mind ever since – not unlike a nasty splinter – and I think I need to get it written down before my brain lets me move on.&lt;/p&gt;  &lt;p&gt;Why is this seemingly innocuous phrase causing me so much mental distress?&lt;/p&gt;  &lt;p&gt;Because &lt;font color="#ff0000"&gt;&lt;em&gt;&lt;strong&gt;transformations are not tasks!&lt;/strong&gt;&lt;/em&gt; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Let’s list a few characteristics of tasks in SSIS. Tasks:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Are used in the SSIS Control Flow. &lt;/li&gt;    &lt;li&gt;Are Containers, with all of the properties (such as the ability to control transaction scope, or to be enabled or disabled) of containers. &lt;/li&gt;    &lt;li&gt;Support property expressions. &lt;/li&gt;    &lt;li&gt;Support breakpoints and debugging. &lt;/li&gt;    &lt;li&gt;Can be individually configured for logging. &lt;/li&gt;    &lt;li&gt;Are presented as boxes connected by arrows on the BIDS design surface. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The only characteristic that data flow transformations share with tasks is the last one: they’re presented as boxes, connected by arrows. &lt;/p&gt;  &lt;p&gt;But the similarities end there. Transformations are metadata-bound functions that operate on data stored in the memory buffers managed by the data flow engine. They are subcomponents of the Data Flow task, which is just another task. It’s an important task, and it gets its own designer because of this, but it is just another task nonetheless.&lt;/p&gt;  &lt;p&gt;Why is this important to me? Some (ok, most) may argue that I’m just being pedantic. And perhaps they’re right, to some degree. But any technical field has its own terminology that allows its practitioners to communicate efficiently and precisely. Hearing an SSIS developer use “task” for “transformation” is kind of like hearing a surgeon use “abdomen” for “stomach” or a .NET developer use “component” for “assembly.” The terms are related, but their meanings are very different. In each case it’s probably likely that the speaker knows the difference and is simply not speaking carefully, but sometimes (particularly with the surgeon ;-) you just want to be sure.&lt;/p&gt;  &lt;p&gt;So the next time someone tells you that he’s using “the Lookup Task” please send him here.&lt;/p&gt;  &lt;p&gt;P.S. I should also be sure to mention that the MCT who used this offending phrase probably does not need this rant to let him know what’s going on. MCTs tend to have a solid grasp of the technologies they teach; you tend to crash in burn in front of the classroom if this is not the case. But I knew that I was going to have this stuck in my mind forever if I didn’t say something somewhere…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-806287783356178049?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/806287783356178049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=806287783356178049' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/806287783356178049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/806287783356178049'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/10/transformations-are-not-tasks.html' title='Transformations are NOT Tasks'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8066020044294942649</id><published>2009-09-29T10:18:00.001-07:00</published><updated>2009-09-29T10:18:38.898-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>SQL Server MVP Deep Dives</title><content type='html'>&lt;p&gt;I’m not a SQL Server Most Valuable Professional anymore[1], but I was when this amazing project got underway, and I am proud to contribute as an author on SQL Server Integration Services. &lt;a href="http://www.sqlservermvpdeepdives.com"&gt;SQL Server MVP Deep Dives&lt;/a&gt; is a unique book. It has:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;53 authors&lt;/li&gt;    &lt;li&gt;59 chapters&lt;/li&gt;    &lt;li&gt;Coverage of database design, development, administration and performance tuning&lt;/li&gt;    &lt;li&gt;Coverage of the SQL Server BI suite: SSIS, SSAS &lt;em&gt;and&lt;/em&gt; SSRS&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But that’s not the coolest thing about this book. The coolest thing is where the money goes. All author royalties (that’s right – 100%) go to &lt;a href="http://www.warchild.org/"&gt;War Child International&lt;/a&gt;, a network of independent organizations, working across the world to help children affected by war.[2] So not only will this book help you become a better SQL Server practitioner, it will also help children around the world.&lt;/p&gt;  &lt;p&gt;You can pre-order the book online today at the &lt;a href="http://www.sqlservermvpdeepdives.com"&gt;SQL Server MVP Deep Dives web site&lt;/a&gt;, and get immediate access to a pre-release PDF copy of the book. (Note: if you order before the end of September and use the code &lt;strong&gt;pop0928&lt;/strong&gt; at the checkout&lt;strong&gt; &lt;/strong&gt;you will also save 50%!) Also, if you’re attending the &lt;a href="http://summit2009.sqlpass.org/AboutSummit.aspx"&gt;PASS Summit&lt;/a&gt; in Seattle in early November, you can buy a copy at the conference bookstore and it signed by many of the authors. I’ll be there, and based on the email I’ve seen we’ll see a majority of the authors and editors should be there as well.&lt;/p&gt;  &lt;p&gt;If you only &lt;a href="http://www.sqlservermvpdeepdives.com"&gt;buy&lt;/a&gt; one SQL Server book this year, why not make it this book? And since all proceeds go to benefit &lt;a href="http://www.warchild.org/"&gt;a great cause&lt;/a&gt;, why not buy two?&lt;/p&gt;  &lt;p&gt;I’ll see you at &lt;a href="http://summit2009.sqlpass.org/AboutSummit.aspx"&gt;PASS&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;[1] You can’t be an MVP and a Microsoft employee at the same time, so when I joined Microsoft they took away my MVP status. Which was OK. &lt;/p&gt;  &lt;p&gt;[2] Not, as some may think, a non-profit organization dedicated to helping aging Jethro Tull fans.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8066020044294942649?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8066020044294942649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8066020044294942649' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8066020044294942649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8066020044294942649'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/09/sql-server-mvp-deep-dives.html' title='SQL Server MVP Deep Dives'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6160339743209324201</id><published>2009-09-21T15:49:00.001-07:00</published><updated>2009-09-21T15:49:12.713-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS Package Templates: The Good, The Bad and The Ugly.</title><content type='html'>&lt;p&gt;This is one of those “I could have sworn I blogged on this topic years ago” posts. I speak to this topic whenever I’m presenting on SSIS development best practices, and with my half-day mini-seminar in Stockholm last week[1] I was thinking of it – and speaking about it - again. Although SSIS is a great platform and provides pretty much all the tools you need to get the job done, sometimes it’s not always easy to know what tools to use and how to use them.&lt;/p&gt;  &lt;p&gt;Which brings us, of course, to package templates. So before we continue, please read &lt;a href="http://support.microsoft.com/kb/908018"&gt;this Knowledge Base article on how to create a package template in BIDS&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Done? Good – let’s review, and paraphrase while we do it.&lt;/p&gt;  &lt;p&gt;Package templates are pretty much the entire reuse story in SSIS.[2] You define the baseline package, including connection managers, log providers, configurations, variables and expressions, tasks, containers and precedence constraints and sometimes data flow components as well. When you create a new package you create a new copy of the template with this pre-defined starting point instead of starting with a blank package, so you can be sure that the package is just like the baseline you created.&lt;/p&gt;  &lt;p&gt;In keeping with the theme established in the post title, this is the “good” side of SSIS package templates. They’re valuable, and when you’re building a large number of packages for the ETL subsystem of a DW/BI project, they’re &lt;em&gt;in&lt;/em&gt;valuable, in that the common “plumbing” required by all packages can be defined once and used consistently everywhere. And this is particularly vital when working in a team environment, where different developers (each of whom inherently has his own style and own way of building packages) are working on the same project, which is typically the case on ETL projects of anything but the most trivial in scale.&lt;/p&gt;  &lt;p&gt;Which brings us to the “bad” side of package templates, at least as implemented when following the guidance in the KB article referenced above. This guidance is firmly targeted at the lone developer; did you notice how all the instructions about creating a package and saving it in the Visual Studio install folder never mentioned on what computer you should be performing these steps? That’s because the article assumes the context is “your machine” – the lone developer’s machine or - at scale – on &lt;em&gt;every &lt;/em&gt;developer’s machine.&lt;/p&gt;  &lt;p&gt;Why is this bad, you ask? Surely it can’t be so much work to copy a DTSX file to the same folder on a few computers, can it?&lt;/p&gt;  &lt;p&gt;Of course not. The “bad” side of following this approach comes not when creating the templates, but when the real world comes into play and the project continues to grow and evolve. In a perfect world, when the needs of the project are understood 100% before development begins, and the needs of the project never change after development begins, this approach will work just fine for team development. Your mileage may vary, but I’ve yet to work an SSIS project[3] like this.&lt;/p&gt;  &lt;p&gt;In the real world, most successful BI projects are iterative and agile, just like most other successful development projects. If you look at &lt;a href="http://agilebi.com/cs/blogs/jwelch/default.aspx"&gt;SQL Server MVP John Welch&lt;/a&gt; or &lt;a href="http://portal.sqltrainer.com/"&gt;MVP and VSTS Ranger Ted Malone&lt;/a&gt;, their blogs focus strongly on agile BI. If you read &lt;a href="http://www.msftdwtoolkit.com/"&gt;Kimball&lt;/a&gt;, you will see an overarching theme of agile and iterative development. And if you’ve ever seen &lt;a href="http://blogs.msdn.com/michen/"&gt;former SSIS program manager Michael Entin&lt;/a&gt; present on SSIS performance tuning[4] you’ve noticed this best practice under the heading of “Principles of Good Package Design”: “Follow Microsoft Development Guidelines - Iterative design, development &amp;amp; testing.”&lt;/p&gt;  &lt;p&gt;Ok, so why did I just go off on that tangent and drop so many names? Regular readers will quickly note that my writing style practically revolves around tangents and will likely seize on this as the reason, but today it is to drive home a point: The real world is neither pretty nor neat, and people who know more about BI than I will ever forget[5] have gone out of their way to point this out.&lt;/p&gt;  &lt;p&gt;Why is this bad, you ask yet again? Surely it can’t be so much work to copy a DTSX file to the same folder on a few computers, can it? And can you please just get to the point, Matthew?&lt;/p&gt;  &lt;p&gt;Maybe. Picture this story: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A small team of five or six SSIS developers are working together on a project. The lead developer has created a package template for all developers on the team to use moving forward. He emails the DTSX file to each team member along with a reference to &lt;a href="http://support.microsoft.com/kb/908018"&gt;KB article 908018&lt;/a&gt; for instructions on how to install and use the template.&lt;/p&gt;    &lt;p&gt;A week later the lead developer identifies a problem with the package template.[6] He updates the template package and emails it out to his team with instructions to update their local machines with the new package right away. &lt;/p&gt;    &lt;p&gt;Unfortunately, one of the team members is a “heads-down” kind of developer who turns off email during the day, and finishes a few more packages before he gets the message, even though he does save the new template package once he checks his email. &lt;/p&gt;    &lt;p&gt;And another developer is on vacation when the email is sent, and by the time he gets back he has too many new messages in his inbox to ever get through, so he decides that if anything is really important then the sender will re-send it, and he just deletes anything that is unread to get a fresh start with no email backlog.[7] So he keeps on developing packages using the outdated template until the next update is sent out a few weeks later…&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You see where this is going, right? This is gong to the “ugly” side of SSIS package templates. The ugly part comes in downstream when integration testing begins. The packages developed by the individual team members need to be deployed into a test environment and tested together, and of course at that point things start to fall apart. Everyone works extra hours and deadlines slip by while people try to track down problems they &lt;em&gt;knew &lt;/em&gt;had been solved long ago. Although to be honest, the worst case scenario is that the test cases don’t find the problem at this point, and the ETL solution is deployed into production without the errors being resolved.&lt;/p&gt;  &lt;p&gt;Unfortunately, I have seen this story play out in one way or another on several different projects over the years. The details are always different, but the ending is always the same: extra work, unhappy clients, and pain.&lt;/p&gt;  &lt;p&gt;Now picture this story retold, with a few different details:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The lead developer works with his team to establish Team Foundation Server (TFS) source code control[8] before any development begins. He develops a set of packages that serve as “template examples” and checks them into TFS. &lt;/p&gt;    &lt;p&gt;He also establishes standards with his team, so that each team member knows to Get Latest whenever starting work on a new package. This ensures that – no matter what happens – each developer always has the most recent versions of all packages with no need for “special case” tasks like updating a template. &lt;/p&gt;    &lt;p&gt;The lead developer also instructs each development team member to create any new packages by right-clicking in Solution Explorer and selecting Add Existing Package, and then browsing to a current file from TFS.[9] This ensures that whenever a new package is created, it is being created as a new instance of a “rolling template” that is stored in TFS and as such the same version is always available for use by all developers.&lt;/p&gt;    &lt;p&gt;Then, whenever problems are identified in existing packages, the “problem packages” are updated immediately, and the fixes are applied to any existing packages created from a now-outdated template.[10]&lt;/p&gt;    &lt;p&gt;And whenever anyone goes on vacation, problems are found earlier, their impact is lessened, deadlines are met, and everyone lives happily ever after.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ok, so the results are probably not so extreme, but in my experience on multiple projects this “rolling template” approach is the &lt;em&gt;best practice &lt;/em&gt;way to approach SSIS package templates. Any attempt to utilize the &lt;a href="http://support.microsoft.com/kb/908018"&gt;Microsoft guidance&lt;/a&gt; in a team environment runs into problem after problem, and at the worst extreme I have seen a development team manually re-implement dozens of SSIS packages using a new template after churning for a full week while trying to reconcile and resolve the problems disseminated by using the “official” template approach.&lt;/p&gt;  &lt;p&gt;And to be fair, the definition and implementation of policies and procedures can help make following the “official” approach less bad, but the starting point is inherently flawed for team development. If anyone were to suggest to me that following &lt;a href="http://support.microsoft.com/kb/908018"&gt;KB 908018&lt;/a&gt; was the right way to approach package templates, I would have to politely[11] disagree. &lt;/p&gt;  &lt;p&gt;What do &lt;em&gt;you &lt;/em&gt;think? Even though I have been around the block a few times with SSIS, I don’t claim to know it all. I’d love to hear your thoughts on how you use package templates – especially if I took your name in vain earlier on - including what works and what does not work in your team environment.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] I never seem to find the time to do tourist stuff when traveling for work, but for some reason I just could not say no when I was invited to speak on SSIS best practices when in Sweden for a friend’s wedding. I have the world’s most understanding wife.&lt;/p&gt;  &lt;p&gt;[2] I say “pretty much” because using small, modular packages and executing them via the Execute Package task or some other client, or using the SSIS .NET API to dynamically construct and execute packages are the other parts. In SQL Server 2008 and SQL Server 2008 there is not a lot to say about reuse in SSIS.&lt;/p&gt;  &lt;p&gt;[3] Or projects using any other technology, for that matter. If you know of any projects like this and are looking for a consultant, I’m pretty sure I can work out a moonlighting arrangement with Microsoft. ;-)&lt;/p&gt;  &lt;p&gt;[4] Or have seen me blatantly plagiarize his slide decks for my own talks.&lt;/p&gt;  &lt;p&gt;[5] No Ted, this doesn’t include you. Sorry.&lt;/p&gt;  &lt;p&gt;[6] I won’t go into the details of the problem because it isn’t really important to the story, but it could be anything along the lines of:&lt;/p&gt;  &lt;p&gt;&amp;#160; a) A missing variable, which needed to be added.   &lt;br /&gt;&amp;#160; b) A variable defined at an incorrect scope, hiding a variable at the package scope when accessed from a Script task.    &lt;br /&gt;&amp;#160; c) A log provider needed to be added to support new project requirements.&lt;/p&gt;  &lt;p&gt;You get the idea, right?&lt;/p&gt;  &lt;p&gt;[7] Yes, people really do this. Yes, I’m thinking about doing it right now. I’ve been on vacation for a week and have been checking email at least once a day to respond to high priority items, but I still have nearly 700 unread messages in my inbox. ;-(&lt;/p&gt;  &lt;p&gt;[8] Or Visual SourceSafe or pretty much any modern SCC system. But TFS has so many additional benefits, it’s hard to recommend anything else.&lt;/p&gt;  &lt;p&gt;[9] Just to be clear, I’m not implying that there is any ability to browse TFS repositories in BIDS, but instead am saying that the developers all have the most recent packages from TFS and can browse to them on their local file systems.&lt;/p&gt;  &lt;p&gt;[10] Odds are they use a tool like &lt;a href="http://www.codeplex.com/pacman"&gt;PacMan&lt;/a&gt; to batch update the existing packages. ;-)&lt;/p&gt;  &lt;p&gt;[11] Or perhaps not so politely depending on the hour…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6160339743209324201?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6160339743209324201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6160339743209324201' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6160339743209324201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6160339743209324201'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/09/ssis-package-templates-good-bad-and.html' title='SSIS Package Templates: The Good, The Bad and The Ugly.'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4376561584334575891</id><published>2009-05-22T11:00:00.001-07:00</published><updated>2009-05-22T11:01:42.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Coolest. Tool. Ever.</title><content type='html'>&lt;p&gt;I’m struggling with how to best start this post. Here are a few possibilities:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I like to think that I’m a hard person to impress. But… &lt;/li&gt;    &lt;li&gt;I swear at my computer many times a day, but usually in anger and almost never in delighted surprise. &lt;/li&gt;    &lt;li&gt;Someone deserves a raise. &lt;/li&gt;    &lt;li&gt;Holy crap! &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;All of them apply, so you can take your pick.&lt;/p&gt;  &lt;p&gt;But what am I talking about? &lt;/p&gt;  &lt;p&gt;I’m talking about the DocumentReflector tool that’s included with the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0"&gt;Open XML Format SDK v2.0&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;You see, I’ve been playing today with a few Office development tasks today for a work-related project. I’ve never looked too closely at working with the Office Open XML file format before this week; I’ve read white papers and such, but until you start writing your own code you never really “get” what an API is all about. After a few false starts and many searches, I was less than impressed. &lt;/p&gt;  &lt;p&gt;But then I discovered DocumentReflector. This is a stand-alone SDK tool that will (wait for it) let you open an Office Open XML document, select a subset of the document or the entire document and it (here it comes) displays the C# code that will create it.&lt;/p&gt;  &lt;p&gt;Holy crap indeed.&lt;/p&gt;  &lt;p&gt;I’m sure I’ll be swearing at this amazing tool before the weekend is over (the new wears off pretty quickly for me) but today whoever built this app is officially my hero.&lt;/p&gt;  &lt;p&gt;Edit: I almost forgot to add – there’s a great overview of using this tool on Erika Ehrli’s blog, &lt;a href="http://blogs.msdn.com/erikaehrli/archive/2009/05/14/open-xml-format-sdk-2-0-getting-started-best-practices.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Now I can’t help but ask why we don’t have a tool like this for SSIS packages. Wouldn’t it be great to point a utility at a DTSX file and have it output the code required to build that package through the SSIS API? ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4376561584334575891?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4376561584334575891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4376561584334575891' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4376561584334575891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4376561584334575891'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/05/coolest-tool-ever.html' title='Coolest. Tool. Ever.'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4137250211220058989</id><published>2009-05-19T11:25:00.001-07:00</published><updated>2009-05-19T11:25:04.452-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Spatial Demo Goodness</title><content type='html'>&lt;p&gt;If you’re someone who presents on SQL Server topics, you have probably run into something of a wall when it comes to getting interesting spatial data sets to demonstrate. The spatial data included with the SQL Server 2008 sample databases is functional, but not particularly complex or interesting. There is free spatial data available for many different sources online, but it tends to be difficult to find, in different formats, and annoyingly difficult to load into SQL Server.[1] And of course, the not-free spatial content out there tends to be &lt;em&gt;really, really &lt;/em&gt;not-free, and while it may make sense to pay a premium price if you are developing premium software, but for demo purposes this is generally a non-starter.&lt;/p&gt;  &lt;p&gt;Enter &lt;a href="http://www.geonames.org/"&gt;GeoNames&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;GeoNames is an open source provider of spatial data. Essentially they have many disparate sources of free spatial content and have aggregated them into a single location, with many different access methods. They support web service access (and publish a nice set of &lt;a href="http://www.geonames.org/export/client-libraries.html"&gt;client libraries&lt;/a&gt; too) which is nice for direct application integration, but to me the cool factor comes from the ability to &lt;a href="http://download.geonames.org/export/dump/"&gt;download text dumps&lt;/a&gt; of the whole database or just the countries you want. Because then you can load the data into SQL Server 2008 and let the demo goodness begin.&lt;/p&gt;  &lt;p&gt;And Ed Katibah, PM for the SQL Server spatial team, has &lt;a href="http://blogs.msdn.com/edkatibah/archive/2009/01/13/loading-geonames-data-into-sql-server-2008-yet-another-way.aspx"&gt;posted instructions&lt;/a&gt; for loading GeoNames data into SQL Server 2008. It’s great to have these steps documented because there are quite a few of them, but hopefully you’ll only need to perform them once.&lt;/p&gt;  &lt;p&gt;So if you have been waiting for great spatial data that’s available for free, wait no longer.&lt;/p&gt;  &lt;p&gt;I should also point out that I became aware of this cool resource not based on my own hard work and research, but instead because of the excellent &lt;a href="http://www.simple-talk.com/opinion/geek-of-the-week/marc-wick-geek-of-the-week/"&gt;Simple Talk newsletter&lt;/a&gt; that &lt;a href="http://www.red-gate.com"&gt;Red Gate Software&lt;/a&gt; produces. And I should probably mention that the primary reason I blogged about it is that my friend and colleague, senior SQL Server trainer and all-around good guy &lt;a href="http://blogs.ameriteach.com/chris-randall/"&gt;Chris Randall&lt;/a&gt; has been working on building better spatial demo sets, and I’ve heard rumors that&amp;#160; he occasionally reads this blog. Hopefully this will save him (and you, and me) some work…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Please keep in mind that I don’t claim to be a SQL Server spatial expert, so what is “annoyingly difficult” for me may be “exceptionally simple” for someone with more experience, but it likely to be “annoyingly difficult” for many people.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4137250211220058989?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4137250211220058989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4137250211220058989' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4137250211220058989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4137250211220058989'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/05/spatial-demo-goodness.html' title='Spatial Demo Goodness'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7762745995875017742</id><published>2009-04-09T09:20:00.001-07:00</published><updated>2009-04-09T09:20:44.532-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>More on Package Configurations</title><content type='html'>&lt;p&gt;Douglas Laudenschlager from the SSIS documentation team has posted an excellent article to his unofficial SSIS blog on how package configurations are applied in SQL Server 2005 and SQL Server 2008 Integration services. &lt;a href="http://dougbert.com/blogs/dougbert/archive/2009/04/07/understand-how-ssis-package-configurations-are-applied.aspx"&gt;Check it out here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I don’t often post on my blog simply to reference someone else’s original work, but I wanted to do it today because:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Package configurations are a vitally important feature that are often misunderstood.&lt;/li&gt;    &lt;li&gt;The manner in which configurations are applied has changed between SQL Server 2005 and SQL Server 2008.&lt;/li&gt;    &lt;li&gt;These changes can cause changes in package behavior when executing packages with specific DTEXEC options&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So if you are moving from SQL Server 2005 to SQL Server 2008, definitely be sure to read about these changes.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7762745995875017742?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7762745995875017742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7762745995875017742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7762745995875017742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7762745995875017742'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/04/more-on-package-configurations.html' title='More on Package Configurations'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5443963287920383373</id><published>2009-04-05T14:57:00.001-07:00</published><updated>2009-04-05T14:57:09.650-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Visual Studio Window Layout for SSIS Development</title><content type='html'>&lt;p&gt;My friend and colleague &lt;a href="http://blogs.msdn.com/SoCalDevGal/"&gt;Lynn Langit&lt;/a&gt; has a habit of blogging where she posts an image and a brief question and that’s it. I’m very jealous, because I can’t seem to write a blog post that’s shorter than 20 pages or so.&lt;/p&gt;  &lt;p&gt;So in this post I’m trying to be More Like Lynn.&lt;/p&gt;  &lt;p&gt;This is how I configure my Visual Studio development environment for SSIS development:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_EUgQcLQ7WNI/SdkpM43pjBI/AAAAAAAAAuI/rOrDFvbtldQ/s1600-h/SSIS%20Window%20Layout%5B3%5D.png"&gt;&lt;img title="SSIS Window Layout" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="246" alt="SSIS Window Layout" src="http://lh4.ggpht.com/_EUgQcLQ7WNI/SdkpNWe5OVI/AAAAAAAAAuM/BNJsqBeAd-s/SSIS%20Window%20Layout_thumb%5B1%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;(Click on the thumbnail for a larger image.)&lt;/p&gt;  &lt;p&gt;How do you configure your windows?&lt;/p&gt;  &lt;p&gt;Ok, so now if I were More Like Lynn, that would be the whole post. But since I haven’t had a mango martini in far too long, I feel compelled to elaborate:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;I dock the Variables window in the upper left corner in its own tab group. &lt;/li&gt;    &lt;li&gt;I dock the Toolbox window in the lower left corner in a different tab group.      &lt;br /&gt;(This lets me see both the Variables and the Toolbox at the same time during package development, which is often very useful.)&lt;/li&gt;    &lt;li&gt;I dock the Log Events window in the same tab group as the Toolbox, because you generally don’t use them both at the same time.&lt;/li&gt;    &lt;li&gt;I dock the Solution Explorer window in the upper right corner.&lt;/li&gt;    &lt;li&gt;I dock the Team Explorer window in the same tab group as Solution Explorer.&lt;/li&gt;    &lt;li&gt;I dock the Properties window in the lower right corner in its own tab group.&lt;/li&gt;    &lt;li&gt;I dock the Error List window on the bottom.&lt;/li&gt;    &lt;li&gt;I dock the Output window on the bottom in the same tab group.&lt;/li&gt;    &lt;li&gt;I dock the Pending Changes window on the bottom in the same tab group as the Error List and the Output windows.&lt;/li&gt;    &lt;li&gt;I leave all of the designers in the middle, since this is where they always go. :-)&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This layout gives me ready access to all of the tools I need, when I need them. And I would still love to know how you lay out your windows in &lt;em&gt;your &lt;/em&gt;SSIS development environment…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5443963287920383373?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5443963287920383373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5443963287920383373' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5443963287920383373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5443963287920383373'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/04/visual-studio-window-layout-for-ssis.html' title='Visual Studio Window Layout for SSIS Development'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_EUgQcLQ7WNI/SdkpNWe5OVI/AAAAAAAAAuM/BNJsqBeAd-s/s72-c/SSIS%20Window%20Layout_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-999618552651907523</id><published>2009-04-05T13:55:00.001-07:00</published><updated>2009-04-05T13:55:13.506-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS and the Package ProtectionLevel Property</title><content type='html'>&lt;p&gt;This is another one of those “I could have sworn I blogged on this years ago” posts.[1] I was looking for something I’d already written that discussed the ProtectionLevel property of the SSIS Package, but search as I might I could not find it. So I guess it’s time to write it, eh?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;(As a note for the lazy reader, the moral of the story is that you should use the &lt;strong&gt;DontSaveSensitive &lt;/strong&gt;ProtectionLevel for your packages, and use package configurations to apply the sensitive property values to your packages. Feel free to read the next five pages, but it all boils down to this.)&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;First of all, let’s start off by reviewing the property itself. Take a look at the properties of any SSIS package and you’ll see it there:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_EUgQcLQ7WNI/SdkarrmBgLI/AAAAAAAAAuA/Jy9odx_jSU4/s1600-h/ProtectionLevel00%5B3%5D.png"&gt;&lt;img title="ProtectionLevel00" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="390" alt="ProtectionLevel00" src="http://lh4.ggpht.com/_EUgQcLQ7WNI/SdkasDaOCPI/AAAAAAAAAuE/Bf34QzbXteA/ProtectionLevel00_thumb%5B1%5D.png?imgmax=800" width="294" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice the description there at the bottom of the Properties window? “Specifies the protection mode and the protection method of the package.” Hey – that’s pretty self-explanatory, so maybe we don’t need a blog post after all. Right?&lt;/p&gt;  &lt;p&gt;Maybe not.&lt;/p&gt;  &lt;p&gt;Before we continue, why not take a look at &lt;a href="http://msdn.microsoft.com/en-us/library/ms141747.aspx"&gt;what SQL Server Books Online (BOL) has to say about this property&lt;/a&gt;?&lt;/p&gt;  &lt;p&gt;Ok, so you’ve read the docs. Now let’s review:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Component developers get to specify which properties of their components are considered sensitive.&lt;/li&gt;    &lt;li&gt;For the built-in components, this includes the password property of connection managers, some system variables and the XML nodes in the underlying DTSX file that store this information.&lt;/li&gt;    &lt;li&gt;SSIS users (that means us, the package developers) cannot control what is considered sensitive.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Why does this matter?&lt;/p&gt;  &lt;p&gt;Well, SSIS is designed to be secure. One aspect of this is that any “sensitive” information that is part of your package (think about it – many packages include information like passwords in connection strings for connecting to databases and legacy systems where valuable data is stored) needs to be protected. And by protected, we mean &lt;em&gt;never, ever stored in clear text&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;That’s right, donkey – never, ever.[3]&lt;/p&gt;  &lt;p&gt;But wait, you say – I’ve built many SSIS packages and I’ve never been prompted to encrypt any sensitive anything. How am I supposed to believe you?&lt;/p&gt;  &lt;p&gt;Good question. Like most developers[4], the fine members of the SSIS product group wanted to avoid irritating their users.[5] Because of this, they wanted to make protecting sensitive data seamless, even transparent. So they did. Take another look at that screen shot of the Properties window above. Do you notice the &lt;strong&gt;EncryptSensitiveWithUserKey&lt;/strong&gt; option? That’s the default.&lt;/p&gt;  &lt;p&gt;This means that, by default, SSIS uses the Data Protection API (&lt;a href="http://blogs.msdn.com/shawnfa/archive/2004/05/05/126825.aspx"&gt;DPAPI&lt;/a&gt;) to encrypt any sensitive data with the user key of the user who saves the package. Every Windows user has a user key, so this is pretty straightforward. Then, when the user goes to open the package again, the encrypted data is automatically decrypted without the user needing to do anything. Pretty slick, eh?&lt;/p&gt;  &lt;p&gt;Yep. Pretty slick. Especially for SSIS developers who live in a world where they never work in teams and never have their &lt;a href="http://bi-polar23.blogspot.com/2007/12/ssis-and-sql-server-agent.html"&gt;packages run in an unattended batch job that uses a service account&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Unfortunately, I don’t live in that world, and neither do many of the SSIS developers I know.&lt;/p&gt;  &lt;p&gt;Ok, let’s be fair. That sounded awfully critical, but it wasn’t intended to be. I generally don’t like to criticize unless I can suggest a better alternative, and in this context I don’t see a more reasonable default behavior. It just works, and it lets developers be productive with SSIS without needing to worry about manually configuring security settings.&lt;/p&gt;  &lt;p&gt;The criticism that I have is that people just don’t seem to understand this, and that causes problems. If one developer didn’t understand it, then it’s probably his fault. But if dozens or hundreds of people have this same problem (and they do – just take a look at the SSIS forums on MSDN to see how often questions related to the ProtectionLevel property come up) then the communication about the feature hasn’t been what it could be.&lt;/p&gt;  &lt;p&gt;So what is the problem, and how does it show up? Well, consider one of these situations:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The package developer &lt;a href="http://bi-polar23.blogspot.com/2009/03/ssis-development-and-source-code.html"&gt;checks his package into source control&lt;/a&gt;[6] and another developer checks it out to make changes. The second developer can open the package, but gets an error saying “Failed to decrypt protected XML node &amp;quot;DTS:Password&amp;quot;” and the package will not execute.&lt;/li&gt;    &lt;li&gt;The package developer deploys the package to the production server and the DBA &lt;a href="http://bi-polar23.blogspot.com/2007/12/ssis-and-sql-server-agent.html"&gt;schedules it to execute via a SQL Server Agent job&lt;/a&gt;. When the job is run, the job step fails with an error saying “Failed to decrypt protected XML node &amp;quot;DTS:Password&amp;quot;” and the package will not execute.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I won’t go on. You probably see the trend already. With the default settings, initial development is easy, but downstream tasks are more difficult. Only the user who saves the package can edit and execute it without error. This is probably not what we want.&lt;/p&gt;  &lt;p&gt;What about the other options? Let’s consider:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;EncryptAllWithUserKey &lt;/strong&gt;– This option has all of the drawbacks of the default EncryptSensitiveuserKey option, but has the additional drawback of encrypting the whole darned package, so not only can no other user execute the package without re-entering the sensitive data, no other user can even open the package. Probably not what you want.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;EncryptSensitiveWithPassword &lt;/strong&gt;– This option replies on the package developer entering a password for the package, and then entering that password every time the package is opened or executed. Um… right. I don’t know about you, but my real-world SSIS projects tend to involve many dozens of packages. And I typically have a dozen or more open in Visual Studio at any given time. So picture me staggering to my desk on a blurry Monday morning, desperately clutching my mug of coffee, and launching Visual Studio. Visual Studio loves me, so it has remembered the packages I had open when I shut down for the weekend, and in a display of digital affection it re-opens them all.[7] Now picture the look on my face as I am prompted to enter the &amp;amp;^%$%@(* package $#^%#&amp;amp; password for every &amp;amp;@%$(^@ package as it opens. (And for that matter, picture the look on&amp;#160; the faces of the poor people from accounting down the hall as they run for the fire escape.) And to make matters worse, this option pretty much negates the security it’s designed to provide, because every developer on the team needs to know the package password, and at least one developer[8] will put that password on his white board or on a Post-It Note.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;EncryptAllWithPassword &lt;/strong&gt;– Just when you thought it was safe to go back into the Properties window, here comes an option which combines the worst of all worlds. Not only do you have to enter the &amp;amp;%#*&amp;amp; password every time you open the package, the whole package contents are also encrypted so if you forget the password[9] you’re pretty much SOL[10].&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So what does that leave us? That leaves us with two options. The first is the one that I use and advocate: the DontSaveSensitive option.&lt;/p&gt;  &lt;p&gt;This option, like the others we’ve seen so far, is pretty much self-describing. It protects the sensitive data by simply not saving it in the package file. What’s not to like? No password, no user keys, everyone can open the file without error. It’s a little slice of perfection in our imperfect world!&lt;/p&gt;  &lt;p&gt;Maybe.&lt;/p&gt;  &lt;p&gt;Maybe not. &lt;/p&gt;  &lt;p&gt;The difficulty, of course, comes in when you actually want to execute the package. The package can’t run if it doesn’t have a valid connection string to connect to that legacy database server from which it extracts data, now can it? So where &lt;em&gt;does &lt;/em&gt;the sensitive data get stored, if not in the package? The answer is that we, the package developer, need to store that sensitive data in &lt;a href="http://bi-polar23.blogspot.com/2008/12/choosing-ssis-configuration-location.html"&gt;package configurations&lt;/a&gt;. This could be XML config files, it could be a SQL Server database, or the Windows Registry – there are many options. And each one of them can be secured in its own way, through database permissions, NTFS permissions or Registry ACLs.&lt;/p&gt;  &lt;p&gt;The problem that some developers have with this is that it doesn’t let them get down to doing what they want to do the most, which is build their packages. And what do we say to those developers?&lt;/p&gt;  &lt;p&gt;We say “tough luck!”&lt;/p&gt;  &lt;p&gt;We don’t have much sympathy for those developers, because they’re missing the big picture. Yes, it can slow things down up front to have to add configurations to your packages, but this saves a ton of time later on. Configurations are a required feature of packages that will need to get deployed to multiple environments (and unless your packages will only ever be run by you on your machine, then this means your packages) and by adding them right at the beginning of package development you will have a much greater chance of having a successful deployment than if you wait until you start deploying to start thinking about deployment.&lt;/p&gt;  &lt;p&gt;So this is what I recommend that SSIS developers do when building their packages:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Set the ProtectionLevel property to DontSaveSensitive&lt;/li&gt;    &lt;li&gt;Add a package configuration for each connection string or other sensitive property in the package.&lt;/li&gt;    &lt;li&gt;Test everything and make sure that it works.&lt;/li&gt;    &lt;li&gt;Save the package and use it as a template package moving forward.[11]&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ahhh… life is good. Life is so much simpler when you have prescriptive guidance.&lt;/p&gt;  &lt;p&gt;But wait… What about that last option. What about ServerStorage? Should we ever use that one?&lt;/p&gt;  &lt;p&gt;ServerStorage can only be used when deploying packages into a SQL Server database[12]. If you deploy to SQL, then you can rely on the database to protect your sensitive data. But as you probably know, this doesn’t apply to package development. Visual Studio can only work with DTSX files on the file system – it cannot open packages from or save packages to SQL Server. This means that while ServerStorage is a viable option for once package development is complete, but not during development. During development you want to use DontSaveSensitive, even if you are planning to deploy to SQL.&lt;/p&gt;  &lt;p&gt;So there you have it. I’ve spent five pages[13] saying “use the DontSaveSensitive package ProtectionLevel option when you develop SSIS packages.” But even though it took longer to read, hopefully you’ll have a better idea of why you should choose this option than if I’d just come out and told you…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Just as a side note, re-read the subject line. Doesn’t it sound like the name of a children’s story? It was all that I could do to not write this post as an AeSISSop’s Fable or modern cautionary tale[2]. &lt;/p&gt;  &lt;p&gt;[2] I also started putting it to the tune of the Gilligan’s Island theme before i caught myself. I haven’t been feeling well lately, you see…&lt;/p&gt;  &lt;p&gt;[3] Say it in your best Shrek voice and it may make sense. Especially in the fable context.&lt;/p&gt;  &lt;p&gt;[4] Read the rest of the sentence and then have a good laugh with me, ok?&lt;/p&gt;  &lt;p&gt;[5] Wait, then wipe the tears from your eyes, and then start reading again.&lt;/p&gt;  &lt;p&gt;[6] And we all use source control, right?&lt;/p&gt;  &lt;p&gt;[7] Awww….&lt;/p&gt;  &lt;p&gt;[8] You know who I’m talking about.&lt;/p&gt;  &lt;p&gt;[9] And can’t find your way down the hall to Bob’s white board.&lt;/p&gt;  &lt;p&gt;[10] That’s “Server Offline” to you.&lt;/p&gt;  &lt;p&gt;[11] There will likely be other things that need to be set up in your template package too, but this is a good start.&lt;/p&gt;  &lt;p&gt;[12] I personally prefer file system deployments and so do most of the SSIS professionals I know. Check out &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2006/02/20/SSIS_3A00_-Deploy-to-file-system-or-SQL-Server.aspx"&gt;this post from Jamie Thompson where he discusses this topic&lt;/a&gt;, and make sure you also click on the &lt;a href="http://www.sqljunkies.com/WebLog/knight_reign/archive/2005/05/05/13523.aspx"&gt;link in the top of his post&lt;/a&gt; too.&lt;/p&gt;  &lt;p&gt;[13] And if memory serves me, set a new record for the number of footnotes in a single blog post.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-999618552651907523?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/999618552651907523/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=999618552651907523' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/999618552651907523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/999618552651907523'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/04/ssis-and-package-protectionlevel.html' title='SSIS and the Package ProtectionLevel Property'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_EUgQcLQ7WNI/SdkasDaOCPI/AAAAAAAAAuE/Bf34QzbXteA/s72-c/ProtectionLevel00_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1918595444941181062</id><published>2009-03-30T08:57:00.001-07:00</published><updated>2009-03-30T08:57:11.349-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Hey, That Was Fun!</title><content type='html'>&lt;p&gt;As you probably know, I’m a Microsoft Certified Trainer (MCT). As you may not know, MCTs are required to renew their certification each year, and the 2009 renewal period is currently underway. I got my MT 2009 welcome kit a week or so ago.&lt;/p&gt;  &lt;p&gt;And with that welcome kit came a nice surprise – a voucher for one free &lt;a href="http://www.microsoft.com/learning/mcp/msbc/mcas/default.mspx"&gt;Microsoft Certified Application Specialist&lt;/a&gt; (MCAS) exam. &lt;/p&gt;  &lt;p&gt;Now, if you’re like me, you probably like to think of yourself as being a geek. Someone who builds software that has never existed before, and who dominates the poor software that is unlucky enough to cross your path. (Or something like that anyway.) So although I had been aware of the MCAS certification for some time, I had never really considered trying to achieve it. But hey – free is free, right?&lt;/p&gt;  &lt;p&gt;So last Friday I scheduled my exam (&lt;a href="https://www.microsoft.com/learning/en/us/exams/77-601.mspx"&gt;77-601: Using Microsoft Office Word 2007&lt;/a&gt;) for this morning. I was going to be out of the office for a dentist appointment anyway, and the test center is on the way home, so why not, right?&lt;/p&gt;  &lt;p&gt;Well, to make a long story short, I passed the exam and had a great time doing it. The exam was delivered in Word 2007 – each question gave me a list of things to accomplish and I then used Word 2007 to achieve the required goals. It didn’t matter what steps you used (I’m a big keyboard shortcut user and don’t use the Ribbon too often) so long as you achieve the requirements as written.&lt;/p&gt;  &lt;p&gt;The thing that struck me here was that this exam really tested my ability to use Word 2007 as a “power user.” Not just someone who typed documents, but someone who knows what features are there and who knows how to use them. I doubt that I’ll stop taking my technical certification exams any time soon, but I think that I may just need to try my hand at the Excel 2007 and PowerPoint 2007 exams too…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1918595444941181062?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1918595444941181062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1918595444941181062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1918595444941181062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1918595444941181062'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/03/hey-that-was-fun.html' title='Hey, That Was Fun!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-184033524591351254</id><published>2009-03-28T19:16:00.001-07:00</published><updated>2009-03-28T19:16:30.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS Development and Source Code Control</title><content type='html'>&lt;p&gt;In my &lt;a href="http://bi-polar23.blogspot.com/2007/11/ssis-best-practices-part-2.html"&gt;personal best practices for SSIS development&lt;/a&gt;, I claim that we need to treat SSIS packages like code. When I give presentations on this topic, I have a slide that elaborates and talks about how we &lt;em&gt;must &lt;/em&gt;use source code control for our SSIS projects just like we do[1] for our “traditional” VB and C# projects. It’s one of those irrefutable best practices of software development; you wouldn’t drive your car without your seat belt, and you’d never even think of building software without source code control. &lt;/p&gt;  &lt;p&gt;In fact, this is so obvious and so important, I had assumed that I must have blogged about it years ago. So I came here tonight to get the URL so I could reference it somewhere else. &lt;/p&gt;  &lt;p&gt;And I couldn’t find it. So here’s the post I was expecting to find,[2] so that the next time I look I will find it here.&lt;/p&gt;  &lt;p&gt;The points that I like to bring up in my presentations are how even though SSIS development is software development, there are inherent differences in the tools that can turn into “gotchas” if you’re not careful. In particular, walk through these basic steps just to make sure you’re following me:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open an SSIS package in Visual Studio – a package that has at least one user variable defined.&lt;/li&gt;    &lt;li&gt;Look up at the tab at the top of the package designer. You’ll see that the tab displays the name of the DTSX file followed by the word [Design] in square brackets, in case you weren’t sure you were looking at the designer and not the raw XML.&lt;/li&gt;    &lt;li&gt;Ensure that there is no “*” asterisk after the word [Design] – this asterisk shows that the file has been modified and needs to be changed, and for the purposes of this exercise we need it to not show up. If your package does show an asterisk, save it now to make the asterisk go away.&lt;/li&gt;    &lt;li&gt;In the Variables window, click on the name of a variable. Don’t change anything, just click.&lt;/li&gt;    &lt;li&gt;Then click on the design surface. Again, don’t change anything – just click.&lt;/li&gt;    &lt;li&gt;Then look up at the tab. What do you see? &lt;/li&gt;    &lt;li&gt;That’s right! An asterisk!! The package has been changed by a non-editing action on your part. Has the world gone mad?!?&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Um… probably not. Or at least, not yet. &lt;/p&gt;  &lt;p&gt;But let’s assume for the sake of argument that you followed this best practice and have been using source code control. And let’s further assume that since no one told you any different that you set up your source control plug-in in Visual Studio and left it with the default settings. &lt;/p&gt;  &lt;p&gt;Uh-oh.&lt;/p&gt;  &lt;p&gt;Let’s take a look at those default settings, shall we?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_EUgQcLQ7WNI/Sc7Z-HVG91I/AAAAAAAAAtw/zozWVJSIXBs/s1600-h/SSIS%20SCC%20Evil%5B9%5D.png"&gt;&lt;img title="SSIS SCC Evil" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="235" alt="SSIS SCC Evil" src="http://lh5.ggpht.com/_EUgQcLQ7WNI/Sc7Z-o54rGI/AAAAAAAAAt0/Vaq-3BPoCbE/SSIS%20SCC%20Evil_thumb%5B5%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s right. The default settings are evil.&lt;/p&gt;  &lt;p&gt;Why evil? Well, think back to the “not really editing a variable name” scenario from earlier. If this package were under source control, you just checked out that package without meaning to, and probably without realizing it. And that means that as soon as you walk out the door to go on that two-week vacation[3], you just became &lt;a href="http://graphjam.com/2009/03/25/song-chart-memes-blamed-work/"&gt;that guy&lt;/a&gt;. That’s right – the guy who gets blamed for things because he’s not there. Because the default source control settings in Visual Studio are to silently check out a file when the developer starts editing it. And while this may make sense for traditional code files, it definitely does not make sense for DTSX files.&lt;/p&gt;  &lt;p&gt;And the worst part is, you really are to blame here, at least in part, because you did not resist, you did not fight back against the evil that consumed you and is now ravaging your team’s productivity. You’re kind of like Gollum.[4]&lt;/p&gt;  &lt;p&gt;But do not despair – it is not too late to turn back from the path of evil! In fact, you really just need to change one drop-down, like so:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_EUgQcLQ7WNI/Sc7Z--WYEyI/AAAAAAAAAt4/b-7GFojP9Ic/s1600-h/SSIS%20SCC%20Good%5B3%5D.png"&gt;&lt;img title="SSIS SCC Good" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="236" alt="SSIS SCC Good" src="http://lh3.ggpht.com/_EUgQcLQ7WNI/Sc7Z_V47UUI/AAAAAAAAAt8/K6O1AjR_wus/SSIS%20SCC%20Good_thumb%5B1%5D.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s right – just say “Prompt for exclusive checkouts” and the problem goes away[5]. Any time that you perform a step in the SSIS designer that would cause the package to get checked out (we walked through one with the variable name thing, but there are many more) you’ll be prompted to check out the file.&lt;/p&gt;  &lt;p&gt;And that’s about it. As usual, I spent five pages to say what could have been done with one screen shot and ten words, but hopefully you’ll understand the &lt;a href="http://bi-polar23.blogspot.com/2007/05/dr-ivan-brady-strikes-again.html"&gt;context&lt;/a&gt; a little better this way.&lt;/p&gt;  &lt;p&gt;So always use source code control, but also be certain that you have configured it correctly for SSIS.&lt;/p&gt;  &lt;p&gt;[1] We &lt;em&gt;&lt;strong&gt;do&lt;/strong&gt;&lt;/em&gt;, don’t we?&lt;/p&gt;  &lt;p&gt;[2] Yes, it’s late on a Saturday night, but hopefully you too will see that this is more than a little like time travel. Or is it just me?&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;[3] I did mention that you are going on vacation, right? Go on – you’ve earned it!&lt;/p&gt;  &lt;p&gt;[4] Did I mention how much I loved you in those movies?&lt;/p&gt;  &lt;p&gt;[5] Yes, this means that Sam and Frodo’s budding romance will probably never get a chance to bloom, but that is a price I’m willing to pay for you to enjoy your vacation.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-184033524591351254?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/184033524591351254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=184033524591351254' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/184033524591351254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/184033524591351254'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/03/ssis-development-and-source-code.html' title='SSIS Development and Source Code Control'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_EUgQcLQ7WNI/Sc7Z-o54rGI/AAAAAAAAAt0/Vaq-3BPoCbE/s72-c/SSIS%20SCC%20Evil_thumb%5B5%5D.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-611343503902278272</id><published>2009-03-26T07:39:00.001-07:00</published><updated>2009-03-26T07:39:57.888-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Going to Tech·Ed 2009 North America!</title><content type='html'>&lt;p&gt;I’ve been to &lt;a href="http://www.msteched.com/"&gt;Tech·Ed&lt;/a&gt; North America every year for the last four years. It’s Microsoft’s biggest technical conference and is an amazing opportunity to learn and to network – and it’s always a ton of fun as well. People have been asking me a lot lately “are you going to be in Los Angeles?” and I haven’t been able to answer them.&lt;/p&gt;  &lt;p&gt;Until today.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_EUgQcLQ7WNI/ScuTtioAodI/AAAAAAAAAtg/tcMOFa03yl0/s1600-h/email_sig_2%5B3%5D.jpg"&gt;&lt;img title="email_sig_2" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="87" alt="email_sig_2" src="http://lh5.ggpht.com/_EUgQcLQ7WNI/ScuTud3scKI/AAAAAAAAAtk/4iD8QfsODRo/email_sig_2_thumb%5B1%5D.jpg?imgmax=800" width="388" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;I learned this week that I will indeed be going to Tech·Ed. I’ll be In Los Angeles the whole week, from May 11 through May 16, helping to represent Microsoft Learning at the conference. I’ll have more details to share about what I’ll be doing as the conference approaches, but for now I just think that I’ll be staying away from places where I see this sign:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_EUgQcLQ7WNI/ScuTu3w48kI/AAAAAAAAAto/gz1JG_RYFwg/s1600-h/TENA_blgr1_mctshang%5B2%5D.gif"&gt;&lt;img title="TENA_blgr1_mctshang" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="204" alt="TENA_blgr1_mctshang" src="http://lh6.ggpht.com/_EUgQcLQ7WNI/ScuTvfS5BEI/AAAAAAAAAts/XsRhowVynkE/TENA_blgr1_mctshang_thumb.gif?imgmax=800" width="184" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Hang here? Yikes! ;-)&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Seriously, interacting with Microsoft Certified Trainers is probably going to be a big part of my role at the conference. I just wonder how “hang” ever got through the layers of review.&lt;/p&gt;  &lt;p&gt;So I’ll be there – will you?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-611343503902278272?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/611343503902278272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=611343503902278272' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/611343503902278272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/611343503902278272'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/03/going-to-teched-2009-north-america.html' title='Going to Tech·Ed 2009 North America!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_EUgQcLQ7WNI/ScuTud3scKI/AAAAAAAAAtk/4iD8QfsODRo/s72-c/email_sig_2_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-782820803604157821</id><published>2009-03-24T04:08:00.001-07:00</published><updated>2009-03-24T04:08:54.536-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Get on the Bus!</title><content type='html'>&lt;p&gt;if (you.Location.Match(“Atlanta”,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; “Charlotte”, “Philadelphia”, “Columbus”,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; “Indianapolis”, “St. Louis”, “Kansas City”,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; “Denver”, “Albuquerque”, “Phoenix”,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; “Las Vegas”, “Los Angeles”) ==     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; MatchResults.CloseEnough)    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; you.EnterContest(“Get on the Bus”);    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;if (you.WinContest(“Get on the Bus”))   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; you.AttendConference(Microsoft.Conference.TechEd,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cost.Free);    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Sound like a good deal? Learn more and enter here: &lt;a title="http://www.microsoft.com/learning/mcp/offers/getonthebus/default.mspx" href="http://www.microsoft.com/learning/mcp/offers/getonthebus/default.mspx"&gt;http://www.microsoft.com/learning/mcp/offers/getonthebus/default.mspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_EUgQcLQ7WNI/Sci_Qrf_62I/AAAAAAAAAtY/-sZJouaCA6c/s1600-h/150x300%5B7%5D.jpg"&gt;&lt;img title="150x300" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="304" alt="150x300" src="http://lh5.ggpht.com/_EUgQcLQ7WNI/Sci_RNMcIuI/AAAAAAAAAtc/KNdpkPdtyvI/150x300_thumb%5B3%5D.jpg?imgmax=800" width="154" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;(I just wish that I were eligible…)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-782820803604157821?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/782820803604157821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=782820803604157821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/782820803604157821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/782820803604157821'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/03/get-on-bus.html' title='Get on the Bus!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_EUgQcLQ7WNI/Sci_RNMcIuI/AAAAAAAAAtc/KNdpkPdtyvI/s72-c/150x300_thumb%5B3%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4870350000358764252</id><published>2009-03-13T07:38:00.001-07:00</published><updated>2009-03-17T10:05:28.172-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Indexes and SSIS Data Flow Performance</title><content type='html'>&lt;p&gt;Wow – it’s been a while, hasn’t it?&lt;/p&gt;  &lt;p&gt;As you may know, I took a job with Microsoft back in October. It’s been a fun (and insanely busy) five months; the work is challenging and diverse, the team I work with is talented and motivated and there is always something new and interesting to learn and/or do. What’s not to like?&lt;/p&gt;  &lt;p&gt;In fact, even though BI isn’t a core component of my job role, I have been working with SSIS and the rest of the SQL Server 2008 BI tools to get easier access to some of the data I need to make better decisions and to support the recommendations I make with some “real numbers.”[1] It’s an easy way to add some value to existing data, and for me it’s a fun way to keep my BI skills from getting too rusty.&lt;/p&gt;  &lt;p&gt;So… I re-learned an interesting lesson the other day: &lt;strong&gt;Don’t load data into indexed tables.&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;One of the SSIS packages I’ve built extracts data from a set of text files and loads it into a set of SQL Server tables.[2] There is around 20 GB worth of text file data that ends up in one particular table. When I ran this package Monday evening, I found it was still running Tuesday morning, which was not expected. I looked around in SSMS and noticed that there was one non-clustered index on this table. I had added it recently and had not dropped or disabled it before running the package. So when the package finished running, I took a look at the execution results and found this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;DTExec: The package execution returned DTSER_SUCCESS (0).      &lt;br /&gt;Started:&amp;#160; 6:03:50 PM       &lt;br /&gt;Finished: 9:54:20 AM       &lt;br /&gt;Elapsed:&amp;#160; 57028.7 seconds&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;That’s right – the package took nearly 16 hours to run. Ugh!&lt;/p&gt;  &lt;p&gt;So I re-ran the package this morning, after having ensured that all indexes on this table had been dropped. And the result?&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New" size="2"&gt;DTExec: The package execution returned DTSER_SUCCESS (0).      &lt;br /&gt;Started:&amp;#160; 9:49:21 AM       &lt;br /&gt;Finished: 10:41:15 AM       &lt;br /&gt;Elapsed:&amp;#160; 3114.05 seconds&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;That’s right – the package completed in well under an hour, taking roughly 5.5% of the time it took to execute the package against the indexed table.&lt;/p&gt;  &lt;p&gt;But wait, you say – that’s not a fair comparison. You still need to rebuild that index!&lt;/p&gt;  &lt;p&gt;You’re right, of course – the time to rebuild the index needs to be considered before we can make any apples-to-apples comparison. So what I did was to re-create all of the indexes on this table (four indexes, each with included columns, for a total index size of 15.8 GB) which took an hour and 39 minutes. Even though this is longer than the package execution itself, the total end-to-end execution time is still only around 15.9% of the package execution time with one index on the target table. In the end we achieved an 84% reduction in execution time.&lt;/p&gt;  &lt;p&gt;So what’s the lesson? &lt;/p&gt;  &lt;p&gt;Drop or disable your indexes before loading data into your tables, and then re-create or enable them once you’re done. If you don’t, then SQL Server will keep incrementally rebuilding the indexes while your package executes, thus killing your performance.&lt;/p&gt;  &lt;p&gt;This isn’t new advice – this has been a best practice for bulk loading data into SQL Server for as long as I can remember. But it is something that I have not blogged on before, and since failing to follow this advice bit me this week I thought I would take the time to share my &lt;a href="http://bi-polar23.blogspot.com/2007/10/real-world-experience.html"&gt;pain&lt;/a&gt; with the world in hopes that someone else can avoid it.&lt;/p&gt;  &lt;p&gt;And, of course, it’s good to blog on SSIS again. Hopefully I’ll be posting again before another few months have passed…&lt;/p&gt;  &lt;p&gt;[1] Please note that I’m not calling this a “BI solution” here. At this point I am more in a discovery phase than anything else. The components I’ve developed, while functional, will probably get thrown away once they have served their purpose as prototypes and learning tools. All of the performance numbers come from running the packages on a &lt;a href="http://bi-polar23.blogspot.com/2008/12/thinkpad-keyboard-madness.html"&gt;laptop&lt;/a&gt;, with both the target data database’s data file and the source text files on the same external 5,400 RPM USB hard drive. No, I wouldn’t do this in production either. ;-)&lt;/p&gt;  &lt;p&gt;[2] The astute reader will note that this is in flagrant violation of the “&lt;a href="http://bi-polar23.blogspot.com/2007/11/ssis-best-practices-part-2.html"&gt;each package should only load data into one table&lt;/a&gt;” best practice that I talk about whenever I have someone who will listen. The scenario in which I’m working here provides an interesting exception to this guideline, and please trust that I did think hard before going against my own advice.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4870350000358764252?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4870350000358764252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4870350000358764252' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4870350000358764252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4870350000358764252'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/03/indexes-and-ssis-data-flow-performance.html' title='Indexes and SSIS Data Flow Performance'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1693617597687390314</id><published>2009-02-06T09:50:00.001-08:00</published><updated>2009-02-06T09:50:31.730-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>I’m Certifiable – Are You?</title><content type='html'>&lt;p&gt;Odd are, if you read this blog you are certifiable. One way or the other. &lt;/p&gt;  &lt;p&gt;But of course, I’m talking about Microsoft technical certifications in the developer and IT Professional world. (What were &lt;em&gt;you &lt;/em&gt;thinking?) I’ve been a Microsoft Certified Trainer since 1996, and have taken any number of certification exams since then. I love certification for many reasons[1] - and one of the reasons is that I thing that the certification exams are fun.[2] I love the ability to demonstrate the depth and breadth of my knowledge in an almost competitive setting – it’s almost like &lt;a href="http://www.youtube.com/watch?v=G0oRa9UPgTU"&gt;playing chess with myself&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;But not everyone has seen the fun side of certification. Until now!&lt;/p&gt;  &lt;p&gt;Microsoft Learning[3] has just launched a new online game that is like a cross between a certification practice exam and an Xbox 360 game show. It’s a riot – I played a quick game over lunch today and loved it. &lt;/p&gt;  &lt;p&gt;But instead of reading my opinions, you should &lt;a href="http://www.areyoucertifiable.com/"&gt;check it out here&lt;/a&gt;. Enjoy!&lt;/p&gt;  &lt;p&gt;[1] But I’m not going to try to go into all of the reasons why. If you want more on that front, check out the &lt;a href="http://blogs.technet.com/mslcommunity/archive/2009/02/03/bits-and-bytes.aspx"&gt;Born to Learn blog&lt;/a&gt; where Ken Rosen and his team post just about every day.&lt;/p&gt;  &lt;p&gt;[2] Please refer to the title of this post again.&lt;/p&gt;  &lt;p&gt;[3] Yes, this is the group within Microsoft where I work these days, even though I can’t take any credit for the genius behind this site.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1693617597687390314?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1693617597687390314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1693617597687390314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1693617597687390314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1693617597687390314'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/02/im-certifiable-are-you.html' title='I’m Certifiable – Are You?'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3448630482692731991</id><published>2009-01-16T09:05:00.001-08:00</published><updated>2009-01-16T09:05:40.754-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Loving Windows 7</title><content type='html'>&lt;p&gt;I installed the public Windows 7 beta on one of my laptops early this week. This is a laptop that I use all the time when I’m at home (I love the keyboard, so I sit at this one and Remote Desktop into my other machines) but it’s been running Windows XP because Windows Vista never ran particularly well on its 2004-era hardware. And as is always the case when working with a pre-release operating system, there is both good news and bad news.&lt;/p&gt;  &lt;p&gt;Let’s do the bad news first:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I’m traveling this week and next, so I only had two days to play with new features before heading out on the road.&lt;/li&gt;    &lt;li&gt;I have a bunch of demos I need to do next week at the MCT Summit in Redmond, so I can’t blow away the Windows Server 2008 install on my demo laptop and replace it with Windows 7 until the Summit is over.&lt;/li&gt;    &lt;li&gt;That’s about it for the bad news…&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The good news is much longer, so I’ll just hit on the highlights:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows 7 runs faster and better than Windows XP ever did, even with the same software running. I’m vastly impressed by how well it runs, and I can’t wait to get it installed on more modern hardware.&lt;/li&gt;    &lt;li&gt;It looks and feels great, with all of the nice features of Windows Vista (I love Vista search and some of the Explorer enhancements that I miss so much when I go back to Windows XP or 2003) and is more usable (and just plain prettier) as well.&lt;/li&gt;    &lt;li&gt;Windows 7 automatically detected my Nvidia video card and downloaded drivers for it. This may sound trivial (and isn’t really something for which i can give credit to the Windows 7 team) but the new driver finally works. For all previous operating systems and driver versions, this video card has always displayed any video being played in full-screen mode on the secondary monitor. This meant that I could not work on one display while having a video (any video – not just Manowar videos) play on the other. With the new driver, this is no longer the case, and video finally works the way that it should.&lt;/li&gt;    &lt;li&gt;Did I mention it’s amazingly fast? ;-)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;But the thing that prompted me to post this article is not my own experience. I found today a list of “Windows 7 Secrets” published by Tim Sneath here: &lt;a title="http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx" href="http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx"&gt;http://blogs.msdn.com/tims/archive/2009/01/12/the-bumper-list-of-windows-7-secrets.aspx&lt;/a&gt;. This includes a ton of keyboard shortcuts (one of my favorite tools) and ways to work with the new OS features that you’d be unlikely to stumble across on your own. Definitely check it out the next time you sit down at your Windows 7 machine, or if you’re wondering whether you should make the move…&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3448630482692731991?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3448630482692731991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3448630482692731991' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3448630482692731991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3448630482692731991'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2009/01/loving-windows-7.html' title='Loving Windows 7'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-219057621007370722</id><published>2008-12-31T11:12:00.001-08:00</published><updated>2008-12-31T11:12:21.601-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Christmas Came Late!</title><content type='html'>&lt;p&gt;Santa has just delivered the gift that many SSIS developers have had on their Christmas lists: more samples and options for programmatically building SSIS packages. Although in this case, the role of Santa is played by Matt Masson of the SSIS team, who must have gained quite a bit of weight since the last time I saw him. Matt posted seven new articles on his blog yesterday, including this index post here: &lt;a title="http://blogs.msdn.com/mattm/archive/2008/12/30/samples-for-creating-ssis-packages-programmatically.aspx" href="http://blogs.msdn.com/mattm/archive/2008/12/30/samples-for-creating-ssis-packages-programmatically.aspx"&gt;http://blogs.msdn.com/mattm/archive/2008/12/30/samples-for-creating-ssis-packages-programmatically.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are samples for &lt;a href="http://blogs.msdn.com/mattm/archive/2008/12/30/create-a-package-with-a-data-flow-task.aspx"&gt;building a package with a data flow task&lt;/a&gt;, and for &lt;a href="http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-oledb-source-and-oledb-destination.aspx"&gt;adding OLE DB Source and Destination components&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-ado-net-source.aspx"&gt;adding the ADO.NET Source component&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-row-count-transform.aspx"&gt;adding a Row Count transformation&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mattm/archive/2008/12/30/api-sample-conditional-split.aspx"&gt;adding a Conditional Split transformation&lt;/a&gt;. Each post includes nicely commented C# code, and each one goes a long way towards filling the documentation gap around the SSIS data flow API.&lt;/p&gt;  &lt;p&gt;And if that's not exciting enough, Santa was just getting started. Evgeny Koblov, a tester on&amp;#160; the SSIS team has gone far beyond simply it easier to work with the less-than-intuitive COM API exposed by the SSIS data flow. He has built a better API. It's called EzAPI and you can read about it on Matt Masson's blog here: &lt;a title="http://blogs.msdn.com/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx" href="http://blogs.msdn.com/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx"&gt;http://blogs.msdn.com/mattm/archive/2008/12/30/ezapi-alternative-package-creation-api.aspx&lt;/a&gt;. You can also download it and start using it on the CodePlex web site here: &lt;a title="http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=21238" href="http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=21238"&gt;http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=21238&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;EzAPI is probably the most exciting thing I've seen coming into the world of SSIS since the release of SQL Server 2008, if not before. It's essentially a native .NET wrapper around the underlying COM API, which doesn't sound particularly interesting at first glance, but since it delivers the ability to quickly and easily build SSIS packages and data flows through code, it's sure to be a time-saver (if not life-saver) for many SSIS developers.&lt;/p&gt;  &lt;p&gt;Now please excuse me while I download EzAPI and start to play... &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-219057621007370722?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/219057621007370722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=219057621007370722' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/219057621007370722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/219057621007370722'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/christmas-came-late.html' title='Christmas Came Late!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7808505194608391916</id><published>2008-12-23T06:27:00.001-08:00</published><updated>2008-12-23T06:27:36.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Quote'/><title type='text'>Math and Terror</title><content type='html'>&lt;p&gt;My son just celebrated his eighth birthday. While he was eating his birthday breakfast before heading to school, he came out with this gem:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;I'm half of sixteen today!&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now part of me is happy that he's thinking of mathematical relationships at the breakfast table. But another part of me is thinking how I am so incredibly not yet ready for sixteen. These first eight years have gone by so quickly, I can't begin to imagine how quickly the next will fly.&lt;/p&gt;  &lt;p&gt;So the next time you're wondering if the glass is half empty or half full, just be glad that it isn't half of sixteen...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7808505194608391916?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7808505194608391916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7808505194608391916' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7808505194608391916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7808505194608391916'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/math-and-terror.html' title='Math and Terror'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5119269315265808755</id><published>2008-12-18T09:59:00.001-08:00</published><updated>2008-12-18T09:59:39.159-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>Better File Rename</title><content type='html'>&lt;p&gt;This is just a random tool recommendation - I've been meaning to post it for months, but have never made the time. Well, a meeting just finished early, so the time made itself.&lt;/p&gt;  &lt;p&gt;I've love this tool: &lt;a href="http://www.publicspace.net/windows/BetterFileRename/index.html"&gt;Better File Rename&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It's a Windows shell extension that gives you a ton (maybe more) of batch file renaming options. Right-click on a folder or a group of files and you can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Add characters to the beginning of a file&lt;/li&gt;    &lt;li&gt;Change the file extension&lt;/li&gt;    &lt;li&gt;Add sequence numbers to the file name&lt;/li&gt;    &lt;li&gt;Add date/time stamps to the file name&lt;/li&gt;    &lt;li&gt;Replace characters or string patterns in the file name&lt;/li&gt;    &lt;li&gt;A staggering number of other possibilities&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I've been using this delightful little tool since 2002, and it works great on Windows XP, Windows Vista, Windows Server 2003 and I assume Windows Server 2008 as well, although I've never personally tested it. If I ever rebuild my primary laptop to run Server 2008 then I'll know, because this app is one of the few 3rd party &amp;quot;must have&amp;quot; utilities that I install whenever I rebuild my main machine.&lt;/p&gt;  &lt;p&gt;Ok, that's that. Check it out - download a trial version and see if it rocks your world too. Especially with all of the Christmas photos you'll soon be taking, you know you want it...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5119269315265808755?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5119269315265808755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5119269315265808755' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5119269315265808755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5119269315265808755'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/better-file-rename.html' title='Better File Rename'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5855436711027397118</id><published>2008-12-15T07:28:00.001-08:00</published><updated>2008-12-15T07:28:42.724-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Changes in SQL Server 2008</title><content type='html'>&lt;p&gt;&lt;a href="http://www.linkedin.com/profile?viewProfile=&amp;amp;key=6616695"&gt;MCT Russ Loski&lt;/a&gt; recently shared this great link with the SQL Server trainer community:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/cc280407.aspx" href="http://msdn.microsoft.com/en-us/library/cc280407.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc280407.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is the top-level &amp;quot;Backward Compatibility&amp;quot; topic from SQL Server 2008 Books Online, and includes sub-topics for the DRBMS, SSAS, SSIS, SSRS and replication, covering deprecated features, behavioral changes, breaking changes and more.&lt;/p&gt;  &lt;p&gt;If you're looking into what's new and different (and what might bite you if you're not careful) with SQL Server 2008, this is a great place to start. Thanks, Russ!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5855436711027397118?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5855436711027397118/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5855436711027397118' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5855436711027397118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5855436711027397118'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/changes-in-sql-server-2008.html' title='Changes in SQL Server 2008'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2601253240986534194</id><published>2008-12-10T13:40:00.001-08:00</published><updated>2008-12-10T13:40:36.543-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>"Bonus" Technical Deep Dive Session at the MCT Summit - Redmond and Prague</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;The vast majority of the content at the 2009 MCT Summit events is heavily weighted toward the IT Professional audience. This is largely due to the fact that the major developer and database product releases took place in 2007 and 2008, while there are significant releases in-flight for Windows and Exchange Server. But I believe there should still be some deep technical content for at least one underrepresented trainer audience: the BI developer. &lt;/p&gt;  &lt;p&gt;So I'm going to fill in this gap by presenting an &amp;quot;off the schedule&amp;quot; technical deep dive on SQL Server Integration Services. &lt;a href="http://bi-polar23.blogspot.com/2008/02/ssis-deep-dive-at-mct-summit-in-redmond.html"&gt;I did something similar at the 2008 Redmond summit&lt;/a&gt; and it was very well received, so I'm going to model the 2009 Summit session on the same model. Here's the deal: &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#8220;Everything You Ever Wanted to Know About SQL Server Integration Services but Were Afraid Your Students Would Ask&amp;#8221; &lt;/p&gt;    &lt;p&gt;In this technical &amp;#8220;deep dive&amp;#8221; session, Matthew Roche will take attendees on a wild and sometimes horrifying ride into the dark underbelly of real world SSIS development that existing SSIS books and courseware doesn&amp;#8217;t effectively cover, including development and deployment best practices, data flow internals and performance tuning and more. But be warned &amp;#8211; there will be no fixed agenda for this session! The topics covered will be driven by attendee involvement, so the more questions you bring to the session the more everyone will get out of it. If you teach (or fear you may be asked to teach) the SSIS courses for SQL Server 2005 or SQL Server 2008, this is a session you don&amp;#8217;t dare to miss. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;Does this sound interesting to you? &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;If you are attending either event (Prague or Redmond) and would be willing to attend this session &lt;em&gt;after the summit sessions end one day[1]&lt;/em&gt; then please reply here[2] to express your interest. If anyone (even one attendee) is interested then I will come prepared to spend as much time as necessary (I think we ran around three hours at the 2008 Summit in Redmond) to give each attendee everything he needs. So speak now or forever hold your data...&lt;/p&gt;  &lt;p&gt;[1] This is a key point, as it will mean skipping on some other planned after-hours event, I'm sure.&lt;/p&gt;  &lt;p&gt;[2] Or in the microsoft.private.mct.mctsummits newsgroup.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2601253240986534194?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2601253240986534194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2601253240986534194' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2601253240986534194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2601253240986534194'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/technical-deep-dive-session-at-mct.html' title='&amp;quot;Bonus&amp;quot; Technical Deep Dive Session at the MCT Summit - Redmond and Prague'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6194403104765497405</id><published>2008-12-05T08:50:00.001-08:00</published><updated>2008-12-05T08:50:06.948-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Connection Strings</title><content type='html'>&lt;p&gt;This is just a little reminder for myself as much as for anyone else. There's a great resource online at &lt;a title="http://www.connectionstrings.com/" href="http://www.connectionstrings.com/"&gt;http://www.connectionstrings.com/&lt;/a&gt; that lists the syntax for hundreds of different types of data sources (SQL Server, Oracle, Excel, Active Directory, etc.) complete with examples and general rules/guidelines for constructing them. If you're ever in a situation where you need to build a connection string without a GUI to help you, I've never seen a better reference. Check it out.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6194403104765497405?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6194403104765497405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6194403104765497405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6194403104765497405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6194403104765497405'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/connection-strings.html' title='Connection Strings'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2556968913375655571</id><published>2008-12-04T20:30:00.001-08:00</published><updated>2008-12-04T20:30:07.103-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>ThinkPad Keyboard Madness</title><content type='html'>&lt;p&gt;I own lots of laptops. After being an independent software development and BI consultant for many years, I've assembled quite the collection. I have Dells and Toshibas[1] and have had Gateways and HPs as well. My little home office is filled with them[2].&lt;/p&gt;  &lt;p&gt;I also have a Lenovo. It's a ThinkPad X300, and if I never needed to type on it, it would probably be one of my favorite computers. It's light, it's powerful, it's solid, and just about everything you could want a laptop to be.&lt;/p&gt;  &lt;p&gt;But I do have to type on it. And because of this, I swear. A lot. In fact, I swear so much I just may need a &lt;a href="http://bi-polar23.blogspot.com/2007/08/swearing-lot-today.html"&gt;new chart&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Why all the swearing, you ask? Well, before I answer, please take a look at your keyboard, down in the bottom left corner. Go on. I'll wait.&lt;/p&gt;  &lt;p&gt;There.&lt;/p&gt;  &lt;p&gt;You see, if you're typing on a ThinkPad, you'll probably[3] notice that the bottom left key is the control &amp;quot;Ctrl&amp;quot; key, and to the right of that (if you're using a laptop anyway) is the function &amp;quot;Fn&amp;quot; key.&lt;/p&gt;  &lt;p&gt;Still with me? Good.&lt;/p&gt;  &lt;p&gt;Now if you were horribly evil in a past life and are currently being punished by having to type on a ThinkPad, you'll instead notice that the Fn and Ctrl keys have been reversed. Swapped. Inverted. &lt;/p&gt;  &lt;p&gt;And this is insane!&lt;/p&gt;  &lt;p&gt;Ok, you ask - what's the big deal? Who cares?&lt;/p&gt;  &lt;p&gt;First and foremost - me. I care a lot. You see, I'm a developer. And while I don't buy in with the whole developer stereotype[4] I definitely am a very keyboard-centric computer user. I prefer to use my keyboard whenever possible, and there are literally thousands of times each day when I perform some task that utilizes a Ctrl+Key keyboard shortcut. For example, you may be familiar with some of these well-loved productivity enhancers:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ctrl-C = Copy&lt;/li&gt;    &lt;li&gt;Ctrl-V = Paste&lt;/li&gt;    &lt;li&gt;Ctrl-Arrow (Left or right) = Jump one word in text&lt;/li&gt;    &lt;li&gt;Ctrl-Shift-Arrow (Left or right) = Jump and highlight one word in text&lt;/li&gt;    &lt;li&gt;Ctrl-F4 = Close current tab or child window&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I could go on and on and on. A significant portion of the most common Windows keyboard shortcuts involve the Ctrl key.&lt;/p&gt;  &lt;p&gt;Now at this point you're probably asking &amp;quot;But Matthew, since this incarnation of ultimate evil that Lenovo uses for a keyboard inverts the Ctrl and Fn keys, what do these keyboard shortcuts do if your finger, trained through decades of computer use, hits the Fn key instead?&amp;quot;&lt;/p&gt;  &lt;p&gt;Funny you should ask. This is what happens:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Fn-C = &lt;font color="#ff0000"&gt;Nothing&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Fn-V = &lt;font color="#ff0000"&gt;Nada&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Fn-Arrow (Left or right) = &lt;font color="#ff0000"&gt;Zip&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Fn-Shift-Arrow (Left or right) = &lt;font color="#ff0000"&gt;Zilch&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Fn-F4 = &lt;font color="#ff0000"&gt;Puts the computer to sleep!!!!!&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That's right. If you try to close out a child window and let your fingers follow the paths that are ingrained deep in their muscle memory, you have just effectively closed the lid on your accursed laptop and have shut it down. Even if you're in the middle of working. Even if you're in the middle of a giant download that then needs to be restarted. Even if you're connected remotely to the corporate network and you then need to dig out your smart card so you can re-connect. Even if you're hosting a LiveMeeting that your boss' boss' boss is attending. Yeah. Even then.&lt;/p&gt;  &lt;p&gt;I could go on. I could rant about how there is no way to re-map these keys, because the Fn key isn't exposed to the standard Windows keyboard APIs. I could rave about how the Esc key is on its own row above the function keys (F1 through F12) so that when I try to hit F2 to rename a file I get F3 (search) and when I attempt to hit Esc I get F1 (help) instead. I could blow my top and go on and on about how when I use my other laptops (which outnumber my lone ThinkPad 7:1 at this point) the lessons that my poor fingers are being forced to learn are tripping me up when I use normal keyboards. I could go on and on and on...&lt;/p&gt;  &lt;p&gt;But I won't. Because it's far too late for a rant like this to go on any further. Instead, I'm going to fill out &lt;a href="http://lenovoblogs.com/designmatters/?p=218"&gt;a little survey that Lenovo has put together&lt;/a&gt;. And I encourage you to do the same. Please, please, please do the same.&lt;/p&gt;  &lt;p&gt;I think it's great that Lenovo is conducting such a survey. But I think it is very frustrating that they're just getting around to asking. Take a few minutes and Live Search around on &amp;quot;ThinkPad&amp;quot; and &amp;quot;keyboard&amp;quot; and you'll see what I mean - dozens of other frustrated ThinkPad owners have poured their anguish into the ether as well. (My favorite one is &lt;a href="http://justaddwater.dk/2007/05/17/new-laptop-with-better-defaults/"&gt;here&lt;/a&gt;.)&amp;#160; And even more frustrating, the survey doesn't even mention the Fn and Ctrl key positions - it focuses on the Esc, Home, End, PgUp and PgDn keys instead. Ugh...&lt;/p&gt;  &lt;p&gt;But hopefully they're listening now. This is what I told them at the end of my survey, in response to the question &amp;quot;Of the keys that vary between different key layouts, for which keys are you most concerned about their location (e.g. Esc, Home, End, PgUp, PgDn, others, etc.)?&amp;quot;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;The Ctrl key MUST be in the bottom-left corner, immediately below the Shift key. If this is not the case in the hardware then there MUST be a way to re-map these keys in the OS or BIOS. Yes, you need to keep your historic users happy, but you also need to understand the basic mechanics of using keyboard shortcuts and the PAIN that users feel when attempting to adjust to the ThinkPad's non-standard layout. Until one of these solutions is implemented I will never buy or use another ThinkPad.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And I won't. It pains me &lt;em&gt;that &lt;/em&gt;much. There are lots of small, light, powerful laptops out there just waiting for my hardware budget, and only the ThinkPad comes with a keyboard that makes my typing life miserable every day. It's a show-stopper for me, and I will never buy another laptop without looking at the keyboard first.&lt;/p&gt;  &lt;p&gt;But now it's time for me to sleep. And hopefully to dream of non-ThinkPad keyboards...&lt;/p&gt;  &lt;p&gt;[1] Which is another story, but probably not one I'll rant about just yet...&lt;/p&gt;  &lt;p&gt;[2] And, in the winter, heated by them.&lt;/p&gt;  &lt;p&gt;[3] I saw &amp;quot;probably&amp;quot; simply because I have not owned one of every type of computer ever made, but for my own personal sample &amp;quot;probably&amp;quot; means 100% of the time.&lt;/p&gt;  &lt;p&gt;[4] For example, I dislike Red Bull, don't drink Mountain Dew, and I'm tall, good looking[5] and very comfortable around members of the opposite sex. ;-)&lt;/p&gt;  &lt;p&gt;[5] Humble, too.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2556968913375655571?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2556968913375655571/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2556968913375655571' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2556968913375655571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2556968913375655571'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/thinkpad-keyboard-madness.html' title='ThinkPad Keyboard Madness'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7431224861852993920</id><published>2008-12-04T14:51:00.001-08:00</published><updated>2008-12-04T14:51:41.262-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Quote'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Know Your Data... Werewolves</title><content type='html'>&lt;p&gt;(That's right. Werewolves.)&lt;/p&gt;  &lt;p&gt;Over a year ago, I posted a &lt;a href="http://bi-polar23.blogspot.com/2007/11/ssis-best-practices-part-2.html"&gt;list of SSIS best practices&lt;/a&gt;, and I've presented on this topic a dozen or more times since then at conferences and user groups and seminars. One of these best practices was &amp;quot;&lt;strong&gt;Really know your data &amp;#8211; really!&lt;/strong&gt;&amp;quot; and the advice went something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;If there is one lesson I've learned it is that source systems never behave the way you expect them to and behave as documented even less frequently. Question everything, and then test to validate the answers you retrieve. You need to understand not only the static nature of the data - what is stored where - but also the dynamic nature of the data - how it changes when it changes, and what processes initiate those changes, and when, and how, and why. Odds are you will never understand a complex source system well enough, so make sure you are very friendly (may I recommend including a line item for chocolate and/or alcohol in your project budget?) with the business domain experts for the systems from which you will be extracting data. Really.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Well, last night I stumbled across some old meeting notes that reminded me of why this is so very important. The notes were incredibly brief, and consisted largely of a quote from the client project owner. But before I share the quote, please let me share the &lt;a href="http://bi-polar23.blogspot.com/2007/05/dr-ivan-brady-strikes-again.html"&gt;context&lt;/a&gt; and story[1]...&lt;/p&gt;  &lt;p&gt;I was helping to design and build a BI application that my client was then re-selling as a service to their customers.[2] We were loading in data from a variety of source systems that provided the same type of data, but which were implemented by different vendors. One of the systems, called FooBar[3] was consistently causing us problems. The data import was running without error, and everything looked good on the surface, but the FooBar-using customers were unhappy[4] because the data they were seeing through the BI portal was incorrect.&lt;/p&gt;  &lt;p&gt;Yuck.&lt;/p&gt;  &lt;p&gt;The client project owner had, years earlier, worked with the development group that built FooBar, and with his insight we were able to discover that occasionally the data export process in FooBar was failing silently, so that we were getting only partial exports, and there was no way to tell - no error was raised, no checksum existed, and because of some nasty internal details (which I won't go into here) the effort involved in updating FooBar would be very significant. It was not a good time.&lt;/p&gt;  &lt;p&gt;So what's the quote? It was this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&amp;quot;You guys planned for wolves. FooBar is werewolves.&amp;quot;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Even after all this time, I still remember the deadpan delivery for this gem. And it was so true. We'd gone in thinking we were prepared for all of the usual problems - and we were. But we weren't prepared for the horrifying reality of the data problems that were lying in wait. We weren't prepared for werewolves.&lt;/p&gt;  &lt;p&gt;So what's the moral of the story? Plan for werewolves. Assume the worst. Test early and often, and test failure scenarios, not just happy-day scenarios. Because the time to learn that there really are werewolves is when there is still time to pack a crossbow and some silver bolts, not when the full moon is rising.&lt;/p&gt;  &lt;p&gt;Trust me.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Names have been changed to protect the innocent. And the other people too...&lt;/p&gt;  &lt;p&gt;[2] This has been a recurring theme for me, so it's probably not the company you're thinking of. &lt;/p&gt;  &lt;p&gt;[3] I changed the names, remember?&lt;/p&gt;  &lt;p&gt;[4] I may also use a literary tool called &amp;quot;understatement&amp;quot; in this story...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7431224861852993920?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7431224861852993920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7431224861852993920' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7431224861852993920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7431224861852993920'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/know-your-data-werewolves.html' title='Know Your Data... Werewolves'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3678471816119904203</id><published>2008-12-04T09:07:00.001-08:00</published><updated>2008-12-04T09:07:07.528-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Choosing the "Right" SSIS Configuration Location</title><content type='html'>&lt;p&gt;One of the questions I get asked quite often boils down to this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;Should I store my SSIS configuration data in SQL Server or in XML configuration files?&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And my every-so-helpful answer usually is:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;Yes!&amp;quot;[1]&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That's right - very accurate, but not very useful.&lt;/p&gt;  &lt;p&gt;Of course, for this question isn't quite as simple as it might seem at first glance, and there really is no single answer that is both generally accurate (like mine is) and useful (which mine is not) at the same time. The truly useful answer is more complex, because it relies on the &lt;a href="http://bi-polar23.blogspot.com/2007/05/dr-ivan-brady-strikes-again.html"&gt;context&lt;/a&gt; of the question more than it relies on the question itself. There is no &amp;quot;best&amp;quot; or &amp;quot;correct&amp;quot; or &amp;quot;right&amp;quot; choice for configuration storage in general - it all depends on the packages, the project and the project team.&lt;/p&gt;  &lt;p&gt;What does this mean? I like to summarize it something like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you are using a file system deployment, it probably makes more sense to use XML configuration files.&lt;/li&gt;    &lt;li&gt;If you are using a SQL Server deployment, it probably makes more sense to use SQL Server configurations.&lt;/li&gt;    &lt;li&gt;If your ETL solution is managed by the application owner or server administrator, it probably makes more sense to use XML configuration files.&lt;/li&gt;    &lt;li&gt;If your ETL solution is managed by the database administrator, it probably makes more sense to use SQL Server configurations.&lt;/li&gt;    &lt;li&gt;If project team members and/or administrators have past experience and success with a given configuration type, it probably makes sense to use that type unless there is some compelling project-specific reason to do otherwise.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Notice that there's nothing in this list about the capabilities of the different configuration types. I've never found a problem that could be solved with one configuration type that could not also be solved with the other.&lt;/p&gt;  &lt;p&gt;Of course, there are differences in the approaches that you use when selecting and implementing a configuration strategy for an SSIS application. And it's not always obvious how to get started, or where to go one you do get started. Fortunately, there are quite a few resources available to help make the right decision for you and to implement your configuration strategy correctly the first time. In particular, there is a small set of MSDN community articles[2] written by SSIS-focused SQL Server MVPs about SSIS configurations. Take a look at these:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc671628.aspx"&gt;Best Practices for Integration Services Configurations&lt;/a&gt; by Jamie Thomson&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc671625.aspx"&gt;Defining a Configuration Approach for Integration Services Packages&lt;/a&gt; by John Welch &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc895212.aspx"&gt;Understanding Integration Services Package Configurations&lt;/a&gt; by Rafael Salas&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc671619.aspx"&gt;Reusing Connections with Data Sources and Configurations&lt;/a&gt; by Matthew Roche&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The articles are listed in the order of &amp;quot;most likely valuable&amp;quot; so if you don't have time to read all four, you should read the top ones first.&lt;/p&gt;  &lt;p&gt;Check it out, and good luck!&lt;/p&gt;  &lt;p&gt;[1] I blame my mother for this. My childhood was filled with conversations that went like this: &amp;quot;Are we having chicken for dinner, or fish?&amp;quot; &amp;quot;Yes!&amp;quot; &amp;quot;Um...&amp;quot; ;-)&lt;/p&gt;  &lt;p&gt;[2] There is an interesting story behind these articles. Shortly before SQL Server 2008 shipped, the SSIS team asked a bunch of MVPs if they would like to write SSIS articles for MSDN. There was no guidance or suggestions provided on what topics these articles should cover. But all but one of the MVPs who provided articles independently chose to write about some aspect of configurations. To me this reinforces my belief that configurations are both one of the most important and least understood features in all of SSIS.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3678471816119904203?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3678471816119904203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3678471816119904203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3678471816119904203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3678471816119904203'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/12/choosing-ssis-configuration-location.html' title='Choosing the &amp;quot;Right&amp;quot; SSIS Configuration Location'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5663699632461625924</id><published>2008-11-21T10:23:00.001-08:00</published><updated>2008-11-21T10:23:51.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><title type='text'>The IT Crowd - Series 3</title><content type='html'>&lt;p&gt;I don't watch a lot of TV, but I love the delightful &lt;a href="http://www.channel4.com/entertainment/tv/microsites/I/itcrowd/index.html"&gt;The IT Crowd&lt;/a&gt; show put out by Britain's Channel 4. There're aren't a lot of episodes yet, but today that is going to change. The first episode of the new 3rd series is going to air tonight. Those of us in the US will need to wait a while longer, but I'm excited nonetheless. If you're already a fan then you know there's more geek madness in store. And if you're not, you should track down series 1 and 2 and see what you're missing... &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5663699632461625924?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5663699632461625924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5663699632461625924' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5663699632461625924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5663699632461625924'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/11/it-crowd-series-3.html' title='The IT Crowd - Series 3'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3879057857429971222</id><published>2008-11-17T11:36:00.001-08:00</published><updated>2008-11-17T11:36:54.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Toys'/><title type='text'>A Bad Week to Travel</title><content type='html'>&lt;p&gt;I'm on the road this week, in Seattle for the &lt;a href="http://summit2008.sqlpass.org/"&gt;PASS Community Summit&lt;/a&gt; conference and in Redmond for meetings and such. Normally I love this trip, because the food is great[1], it's a beautiful area and it's a chance for me to get face-to-face time with more members of my team.&lt;/p&gt;  &lt;p&gt;But this week I really wish I were at home, and the reason may not be obvious. It's because I'm going to miss the rollout of the &lt;a href="http://www.xbox.com/en-US/live/nxe/"&gt;New Xbox Experience&lt;/a&gt;. Yeah, I know that's geeky[2] but I've been looking forward to this major overhaul of the Xbox platform ever since it was announced a few months back. Not only does the Xbox UI get a complete makeover, but I will also be able to stream Netflix content directly to my Xbox 360 for instant video gratification.&lt;/p&gt;  &lt;p&gt;And it's going to be released this Wednesday, November 19th. And I'm going to miss it until I get home Friday night. And yes, I've been looking forward to it enough to resent those two days enough to blog about it.&lt;/p&gt;  &lt;p&gt;Is it Friday yet?&lt;/p&gt;  &lt;p&gt;[1] Yes, I'm going back to &lt;a href="http://bi-polar23.blogspot.com/2008/09/elemental-my-dear-watson.html"&gt;Elemental@Gasworks&lt;/a&gt; this week ;-)&lt;/p&gt;  &lt;p&gt;[2] And not like &amp;quot;developer geek&amp;quot; but more like &amp;quot;end user geek&amp;quot; which is a lot less cool-sounding&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3879057857429971222?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3879057857429971222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3879057857429971222' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3879057857429971222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3879057857429971222'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/11/bad-week-to-travel.html' title='A Bad Week to Travel'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7527024007214578221</id><published>2008-11-04T03:55:00.001-08:00</published><updated>2008-11-04T03:55:03.877-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><title type='text'>Vote Early!</title><content type='html'>&lt;p&gt;For those of us in the US, today is Election Day. After months of campaigning (I wanted to say &amp;quot;heated debate&amp;quot; but we didn't really get months of that, id we?) it's time to vote, and select a new president.&lt;/p&gt;  &lt;p&gt;I live in a quiet little neighborhood, and typically get up early to vote as soon as the polls open. There have never been more than five or ten people in line in front of me, and it's always been a quick in-and-out[1] procedure. &lt;/p&gt;  &lt;p&gt;But today was a little different.&lt;/p&gt;  &lt;p&gt;Today, when I arrived a few minutes after the polls opened (6:00 AM, still dark outside) the parking lot was nearly full. There were 60 or 70 people already in line in front of me; it took me almost half an hour to get in, vote, and get back out again. And when I left the line was noticeably longer than it had been when I arrived.&lt;/p&gt;  &lt;p&gt;Never before have I seen a voter turnout like this one. For some reason, people must feel that this particular election is very important.&lt;/p&gt;  &lt;p&gt;So if you're thinking about waiting until after work today to vote, please let me urge you to not delay. If the massive[2] voter turnout that I experienced this morning is at all indicative of what the day will look like at polls around the nation, you will probably want to ensure that you take into account longer lines and longer delays at the polls.&lt;/p&gt;  &lt;p&gt;So go vote!&lt;/p&gt;  &lt;p&gt;[1] And if you now for some reason feel the urge to go watch A Clockwork Orange then my work here is done. ;-)&lt;/p&gt;  &lt;p&gt;[2] Ok, so 60 or 70 people isn't &amp;quot;massive&amp;quot; on a global scale, but please work with me here...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7527024007214578221?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7527024007214578221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7527024007214578221' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7527024007214578221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7527024007214578221'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/11/vote-early.html' title='Vote Early!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1914221137540998538</id><published>2008-10-31T07:28:00.001-07:00</published><updated>2008-10-31T07:28:44.974-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Press'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Just One More Reason to Love SSIS</title><content type='html'>&lt;p&gt;Alternate title for this post: &amp;quot;Is Sarah Palin BI?&amp;quot; But I didn't want to go there, and I'm sure you appreciate that.&lt;/p&gt;  &lt;p&gt;But here in the US, the presidential election season is nearly over (just a few more days to go) and many people are getting sick and tired of listening to the candidates talk. But for the last few months (or years) they have been talking a lot, and people have been transcribing what they say for the press and for prosperity.&lt;/p&gt;  &lt;p&gt;And someone (sadly I do not know who[1]) has taken those words, particularly the words of vice presidential candidate Sarah Palin, and run them through the text mining features of SQL Server Integration Services. And the UK IT news web site The Register &lt;a href="http://www.theregister.co.uk/2008/10/31/bi_sarah_palin/"&gt;has the scoop&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What's not to love? Politics, plus killer BI tools, plus dry British humor[2] is a surefire recipe for holiday laughs.&lt;/p&gt;  &lt;p&gt;Happy Halloween!&lt;/p&gt;  &lt;p&gt;[1] Although if the author of the SSIS package reads this and wants to share the DTSX with me, I would love to have it ;-)&lt;/p&gt;  &lt;p&gt;[2] Or does that need to be &amp;quot;humour?&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1914221137540998538?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1914221137540998538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1914221137540998538' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1914221137540998538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1914221137540998538'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/just-one-more-reason-to-love-ssis.html' title='Just One More Reason to Love SSIS'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1113122927095380654</id><published>2008-10-30T19:41:00.001-07:00</published><updated>2008-10-30T19:41:52.156-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Join Me in Prague!</title><content type='html'>&lt;p&gt;Earlier this week the MCT team here at Microsoft Learning went live with the &lt;a href="http://www.mctsummit2009.com/"&gt;MCT Summit 2009 web site&lt;/a&gt;. There's information about the two currently scheduled summits:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Prague, Czech Republic - Jan 6, 2009 - Jan 9, 2009&lt;/li&gt;    &lt;li&gt;Redmond, Washington, US - Jan 20, 2009 - Jan 23, 2009&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We're also going to be announcing a 3rd Asia-Pacific region event soon, but the dates and location aren't yet finalized.&lt;/p&gt;  &lt;p&gt;But the excitement here[1] today is that I will be attending the Prague event. I wasn't sure until today if I would be able to make it to Prague, but everything has come together and I will be there representing Microsoft Learning in my new Quality Architect role.&lt;/p&gt;  &lt;p&gt;And for my own personal pleasure, I'm hoping to do a repeat performance of my &amp;quot;SSIS deep dive&amp;quot; session from February's MCT Summit event in Redmond, and present an &amp;quot;Everything you ever wanted to know about SSIS but were afraid your students would ask&amp;quot; technical session in addition to my Microsoft Learning presentations. The Summit schedule is still up in the air, but even if I can't get on the official schedule I will still do the session if I can find a room and an audience.[2] If you're interested, let me know early, ok?&lt;/p&gt;  &lt;p&gt;I'll see you there!&lt;/p&gt;  &lt;p&gt;[1] &amp;quot;Here&amp;quot; in this case is my office in New York - I'm sure that everyone at Microsoft Learning in Redmond is probably saying &amp;quot;Oh no, not that guy again!&amp;quot; ;-)&lt;/p&gt;  &lt;p&gt;[2] This is what happened in Redmond at the 2008 MCT Summit. Everything came together at the last minute, so there was no way to get on the real schedule, but we ended up with a few dozen MCTs who stuck around for almost four hours of SSIS goodness, even though Microsoft was supplying MCTs with free drinks and food on the other side of town, How's that for commitment?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1113122927095380654?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1113122927095380654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1113122927095380654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1113122927095380654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1113122927095380654'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/join-me-in-prague.html' title='Join Me in Prague!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1484808912063368599</id><published>2008-10-29T07:58:00.001-07:00</published><updated>2008-10-29T07:58:28.407-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Certification Offers at PASS</title><content type='html'>&lt;p&gt;Are you going to be at the PASS Community Summit 2008 conference next month in Seattle? I am, and you should be too. Why? Well, if the opportunity to attend &lt;a href="http://summit2008.sqlpass.org/spotlight-sessions.html"&gt;amazing sessions&lt;/a&gt; and rub shoulders with members of the SQL Server product group and SQL Server MVPs wasn't enough, Microsoft Learning is offering a variety of &lt;a href="http://summit2008.sqlpass.org/ms-learning-cert-center.html"&gt;certification-related offers&lt;/a&gt; to help PASS attendees get certified on SQL Server 2005 or SQL Server 2008. &lt;/p&gt;  &lt;p&gt;First of all, there are two discounts offers available. &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;If you're among the first 100 to &lt;a href="http://www.prometric.com/Microsoft/PASS+Community+Summit+2008"&gt;register for an exam&lt;/a&gt;, you get the exam for free. This offer has been published for a while, so act now for a chance to get this 100% discount.&lt;/li&gt;    &lt;li&gt;If you're not among the first 100, you still get a 25% discount on any exams you want to take during the conference - just &lt;a href="http://www.prometric.com/Microsoft/PASS+Community+Summit+2008"&gt;register&lt;/a&gt; and go.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Next, Microsoft Learning is also offering a set of exam prep sessions for PASS attendees who want an extra edge when taking a certification exam. Here's the tentative schedule (it's really unlikely that this is going to change, but you know how conferences are - you should always check the schedule on site once the event begins) for the exam prep sessions:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Tuesday, November 18&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;10:15am - 70 432 TS: Microsoft SQL Server 2008, Installation and Maintenance&lt;/li&gt;      &lt;li&gt;1:00pm - 70 431 TS: Microsoft SQL Server 2005 - Implementation and Maintenance&lt;/li&gt;      &lt;li&gt;2:45pm - 70-447&amp;#160; UPGRADE: MCDBA Skills to MCITP DBA by Using Microsoft SQL Server 2005 &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Wednesday, November 19&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;10:15am - 70 448 TS: Microsoft SQL Server 2008, Business Intelligence Development and Maintenance&lt;/li&gt;      &lt;li&gt;1:30pm - 70 445 TS: Microsoft SQL Server 2005 - Business Intelligence&lt;/li&gt;      &lt;li&gt;3:00pm - 70 455&amp;#160; Upgrade: Transition your MCITP Business Intelligence Developer Skills to MCITP Business Intelligence Developer 2008&lt;/li&gt;      &lt;li&gt;4:30pm - Cert 101 &lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Thursday, November 20&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;10:15am - 70 432 TS: Microsoft SQL Server 2008, Installation and Maintenance&amp;#160; (repeat)&lt;/li&gt;      &lt;li&gt;1:30pm - 70 450 PRO: Designing, Optimizing and Maintaining a Database Server Infrastructure using Microsoft SQL Server 2008&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/li&gt;      &lt;li&gt;3:00pm - 70 453 Upgrade: Transition your MCITP Database Administrator Skills to MCITP Database Administrator 2008&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;As you can probably guess, I'm going to be presenting the three BI exam sessions on Wednesday. They asked me &amp;quot;can you do two?&amp;quot; and I said &amp;quot;no, but I can do three!&amp;quot; The other exam prep sessions are going to be delivered by veteran MCTs &lt;a href="http://www.linkedin.com/pub/0/200/172"&gt;Telmo Sampaio&lt;/a&gt; and &lt;a href="http://www.linkedin.com/in/robboek"&gt;Rob Boek&lt;/a&gt;, and the Cert 101 session is going to be delivered by none other than Microsoft Learning's own &lt;a href="http://blogs.msdn.com/gerryo/default.aspx"&gt;Gerry O'Brien&lt;/a&gt;. What's not to love?&lt;/p&gt;  &lt;p&gt;So - if you're going to be at PASS and are thinking about getting certified on SQL Sever, don't miss these offers. And be sure to look me up during the conference. I'll be in the certification area on Wednesday, and will probably be hanging out in the Ask The Experts Lounge at least some of the time (I have so many questions! ;-) and who knows where else I'll be the rest of the time - just keep your eyes open and be sure to say hello.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1484808912063368599?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1484808912063368599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1484808912063368599' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1484808912063368599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1484808912063368599'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/certification-offers-at-pass.html' title='Certification Offers at PASS'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6786885202317711405</id><published>2008-10-29T06:16:00.001-07:00</published><updated>2008-10-29T06:18:49.991-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SQL Server 2008 - Free with Classroom Training</title><content type='html'>&lt;p&gt;Talk about synchronicity - the old and the new have come together with a great big bonus for SQL Server professionals who are seeking training on SQL Server 2008. Microsoft Learning[1] is teaming up with the SQL Server[2] team to give away &lt;em&gt;&lt;strong&gt;free copies of SQL Server 2008 Standard Edition&lt;/strong&gt;&lt;/em&gt; to people who attend instructor-led classroom training at a Microsoft Certified Partner for Learning Solutions (CPLS). Here's the deal: &lt;/p&gt;  &lt;p&gt;1) Attend one of these classes at a participating CPLS between December 10, 2008 (when the courses start to become available) and June 30, 2009:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;2778 - Writing Queries Using Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Transact-SQL &lt;/li&gt;    &lt;li&gt;6158 - Updating Your SQL 2005 Skills to SQL Server 2008 &lt;/li&gt;    &lt;li&gt;6231 - Maintaining a Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Database &lt;/li&gt;    &lt;li&gt;6232 - Implementing a Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Database &lt;/li&gt;    &lt;li&gt;6234 - Implementing and Maintaining Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Analysis Services &lt;/li&gt;    &lt;li&gt;6235 - Implementing and Maintaining Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Integration Services &lt;/li&gt;    &lt;li&gt;6236 - Implementing and Maintaining Microsoft&amp;#174; SQL Server&amp;#8482; 2008 Reporting Services &lt;/li&gt;    &lt;li&gt;6317 - Upgrading Your SQL Server 2000 Skills to SQL Server 2008 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;2) Get SQL Server 2008:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server 2008 Standard Edition &amp;#8211; Full software&lt;/li&gt;    &lt;li&gt;1 Client Access License (CAL)&lt;/li&gt;    &lt;li&gt;32 bit, 64 bit and IA64 versions included&lt;/li&gt;    &lt;li&gt;Software will be English only at this point &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Pretty simple, right? There are a few minor gotchas, but please don't let these stand in your way:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Each CPLS will decide whether or not they participate in this promotion campaign, so talk to your local CPLS and make sure they know about it and that they are participating.&lt;/li&gt;    &lt;li&gt;This offer is only good while supplies last. Plan your training early!&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And that's that. Call your local CPLS today and ask about SQL Server 2008 training. Tell them Matthew sent you. [3]&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SQhitjDq_TI/AAAAAAAAAgQ/YHphvqYioLE/FreeSQL2008%5B4%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="130" alt="FreeSQL2008" src="http://lh6.ggpht.com/matthewmct/SQhiuPQBOeI/AAAAAAAAAgU/NvGV0r_xBNI/FreeSQL2008_thumb%5B2%5D.png" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;[1] This is the &amp;quot;new&amp;quot; part - I joined Microsoft Learning as a Senior Program Manager earlier this month, although I cannot take any credit for this cool promotion.&lt;/p&gt;  &lt;p&gt;[2] This is the &amp;quot;old&amp;quot; part - I've loved SQL Server since forever.&lt;/p&gt;  &lt;p&gt;[3] And no, I don't get any kickbacks. How unfair is that? ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6786885202317711405?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6786885202317711405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6786885202317711405' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6786885202317711405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6786885202317711405'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/sql-server-2008-free-with-classroom.html' title='SQL Server 2008 - Free with Classroom Training'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/matthewmct/SQhiuPQBOeI/AAAAAAAAAgU/NvGV0r_xBNI/s72-c/FreeSQL2008_thumb%5B2%5D.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5656074302148382357</id><published>2008-10-28T09:37:00.001-07:00</published><updated>2008-10-28T09:37:33.249-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Toys'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Holy VHDs Batman!</title><content type='html'>&lt;p&gt;Ok, color me impressed. I'm watching today's PDC keynote and just saw that Windows 7 can natively:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Mount VHD files as disks&lt;/li&gt;    &lt;li&gt;Create fixed size or dynamic VHDs&lt;/li&gt;    &lt;li&gt;Boot from Windows 7 VHDs&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Holy crap. That last one &lt;em&gt;totally &lt;/em&gt;blows me away - the ability to natively boot from a VHD file to test a virtual machine (and the software it runs) without a host OS sucking down resources. Oh yeah!&lt;/p&gt;  &lt;p&gt;Now if they just expand the mounting support to also include standard ISO images, I'll be the happiest geek on the block.&lt;/p&gt;  &lt;p&gt;it's not BI, but I'm darned excited!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5656074302148382357?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5656074302148382357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5656074302148382357' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5656074302148382357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5656074302148382357'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/holy-vhds-batman.html' title='Holy VHDs Batman!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3601756252299526155</id><published>2008-10-28T09:20:00.001-07:00</published><updated>2008-10-28T09:20:21.516-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Toys'/><title type='text'>A Free Font of Wisdom</title><content type='html'>&lt;p&gt;One of my Facebook friends (hi Julie!) posted this morning asking for advice on where to find good free fonts. I replied pointing her to one site where I have found many good fonts, and another friend responded with three more. Here's the list:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://www.dafont.com/" href="http://www.dafont.com/"&gt;http://www.dafont.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.1001freefonts.com/" href="http://www.1001freefonts.com/"&gt;http://www.1001freefonts.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://www.1001fonts.com/" href="http://www.1001fonts.com/"&gt;http://www.1001fonts.com/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a title="http://betterfonts.com/" href="http://betterfonts.com/"&gt;http://betterfonts.com/&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I know that this isn't BI-related, but I'll bet I'm not the only person who looks for cool and interesting fonts from time to time. And even if I am, now I know where to find a list of links. ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3601756252299526155?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3601756252299526155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3601756252299526155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3601756252299526155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3601756252299526155'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/free-font-of-wisdom.html' title='A Free Font of Wisdom'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4531814949461767676</id><published>2008-10-27T09:45:00.001-07:00</published><updated>2008-10-27T09:45:31.266-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Teaser from PDC: SQL Services</title><content type='html'>&lt;p&gt;The core of the PDC keynote has been about Windows Azure, the newly announced &amp;quot;Cloud OS&amp;quot; that Microsoft is showing off. Although this is neat and all, I tend to think of myself as a &amp;quot;data guy&amp;quot; so I've just been nodding and smiling.&lt;/p&gt;  &lt;p&gt;Until a few minutes ago, when Bob Muglia presented this slide:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SQXwJVVGlxI/AAAAAAAAAgI/1PZ1izHoSSk/s1600-h/SQL%20Services%20-%20Bob%20Muglia%20PDC%20SLide%5B6%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="SQL Services - Bob Muglia PDC SLide" src="http://lh3.ggpht.com/matthewmct/SQXwKEP5pQI/AAAAAAAAAgM/unPRAdjPE2s/SQL%20Services%20-%20Bob%20Muglia%20PDC%20SLide_thumb%5B4%5D.png?imgmax=800" width="324" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You're probably aware already of SQL Server Data Services. This is a new announcement about the evolution of SSDS, named simply SQL Services. This is a cloud-based service that includes core RDBMS functionality but also analysis, data mining, reporting and ETL. Now &lt;em&gt;that &lt;/em&gt;made me sit up and pay attention. (And start typing ;-)&lt;/p&gt;  &lt;p&gt;One thing that caught my ear, however, is that while SQL Server Analysis Services and SQL Server Reporting Services were both mentioned by name, SQL Server Integration Services was not. Instead Bob Muglia simply talked about ETL, not SSIS.&lt;/p&gt;  &lt;p&gt;What does this mean? Who knows. I could just be focusing on a trivial oversight (I often forget to mention things when I'm on stage, so I know how this works) but I think it will be interesting to see how this plays out. Stay tuned!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4531814949461767676?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4531814949461767676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4531814949461767676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4531814949461767676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4531814949461767676'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/teaser-from-pdc-sql-services.html' title='Teaser from PDC: SQL Services'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/matthewmct/SQXwKEP5pQI/AAAAAAAAAgM/unPRAdjPE2s/s72-c/SQL%20Services%20-%20Bob%20Muglia%20PDC%20SLide_thumb%5B4%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1702203542281474120</id><published>2008-10-27T07:48:00.001-07:00</published><updated>2008-10-27T07:54:39.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><title type='text'>Manowar Metal Server 2008 CTP</title><content type='html'>&lt;p&gt;If you've read my blog with any degree of regularity over the past few years, you will probably know that I am a fan of the heavy metal band Manowar. Their music is a major source of inspiration in my life, giving me the &amp;quot;warrior spirit&amp;quot; to face head-on the challenges that life brings[1]. But you may not quite understand why.&lt;/p&gt;  &lt;p&gt;Well, now you can!&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:799ef142-320f-49a5-8835-5adbd931caed" class="wlWriterSmartContent"&gt;&lt;div&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_LfUV-NnVPA"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_LfUV-NnVPA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p&gt;Manowar has just released the trailer for their soon-to-be-released Magic Circle Festival Volume II 2-DVD set. I attended this festival in Bad Arolsen, Germany back in July, and have been waiting for the DVD ever since. It will be released one month from today on November 27th, and you can preorder it at &lt;a href="http://store.magiccirclemusic.com/product/925/Magic-Circle-Music-DVD-Limited-Edition-Magic-Circle-Festival-Volume-2"&gt;Manowar's online store&lt;/a&gt; for just $40.&lt;/p&gt;  &lt;p&gt;So if you are looking for a little inspiration in your life, or if you just want to know what the heck Matthew has been talking about all these years, now is your chance.[2] Preorder today!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; And you can also view a high-quality, full screen version of the trailer &lt;a href="http://www.youtube.com/watch?v=_LfUV-NnVPA"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;[1] And it's amazing music too. The inspiration wouldn't quite be the same without the divine vocals, the screaming guitar, the pounding drums and the driving bass.&lt;/p&gt;  &lt;p&gt;[2] And before you ask, no, they don't pay me anything.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1702203542281474120?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1702203542281474120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1702203542281474120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1702203542281474120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1702203542281474120'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/manowar-metal-server-2008-ctp.html' title='Manowar Metal Server 2008 CTP'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5393248377808962991</id><published>2008-10-27T06:29:00.001-07:00</published><updated>2008-10-27T06:29:43.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Press'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>iWindows 7 Surface Phone?</title><content type='html'>&lt;p&gt;I'm not attending the &lt;a href="http://www.microsoftpdc.com/"&gt;PDC&lt;/a&gt; this year, and I must admit that I'm more than a little jealous of my friends and colleagues who are in Los Angeles at the conference this week.[1] I've been following some of the news from the pre-conference online. And one &lt;a href="http://www.infoworld.com/article/08/10/23/Microsoft_expanding_Surface_access_1.html"&gt;InfoWorld article&lt;/a&gt; had a quote that caught my eye. The article itself is about Microsoft opening up the Surface SDK, which is pretty cool in and of itself, but towards then end there was this quote from a Forrester researcher:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;What the &lt;a href="http://www.apple.com/iphone/"&gt;iPhone&lt;/a&gt;, the &lt;a href="http://www.microsoft.com/surface/"&gt;Surface&lt;/a&gt;, and &lt;a href="http://en.wikipedia.org/wiki/Windows_7"&gt;Windows 7&lt;/a&gt; all have in common is that they are the vanguard of the next major wave of human/technology interaction.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Ok, I get the iPhone and Surface part here - they both have touch-driven interfaces that move beyond what we've seen before in consumer devices - but what about Windows 7? What features is Windows 7 going to include that justifies a market analyst including it in the same category as the Surface and the iPhone for human/technology interaction? &lt;/p&gt;  &lt;p&gt;Microsoft has been playing Windows 7 pretty close to the vest, and this week's PDC is likely to be the first time that many people outside of Microsoft get to see it. I suppose that now that I am working for Microsoft[2] I could download and install it, but honestly I have too many other things to get done. So for now I'll just keep watching the press.&lt;/p&gt;  &lt;p&gt;And now that this tidbit has piqued my interest, I will definitely be watching the &lt;a href="http://www.microsoftpdc.com/"&gt;PDC keynote&lt;/a&gt; in two hours. You should too.&lt;/p&gt;  &lt;p&gt;[1] Although when I learned that it was &lt;a href="http://en.wikipedia.org/wiki/Ray_Ozzie"&gt;Ozzie&lt;/a&gt; and not &lt;a href="http://en.wikipedia.org/wiki/Ozzy_Osbourne"&gt;Ozzy&lt;/a&gt; delivering the keynote with Bob Muglia, I was a bit less disappointed to not be there. Ray just can't hit those high notes the same way...&lt;/p&gt;  &lt;p&gt;[2] Three weeks today!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5393248377808962991?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5393248377808962991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5393248377808962991' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5393248377808962991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5393248377808962991'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/iwindows-7-surface-phone.html' title='iWindows 7 Surface Phone?'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5982423686325085829</id><published>2008-10-14T16:01:00.001-07:00</published><updated>2008-10-14T16:01:58.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>T-SQL Fundamentals is (Almost) Here!</title><content type='html'>&lt;p&gt;Not too long ago I &lt;a href="http://bi-polar23.blogspot.com/2008/08/buy-this-book-or-your-database-gets-it.html"&gt;posted&lt;/a&gt; about Itzik Ben-Gan's excellent book &lt;a href="http://www.amazon.com/gp/product/0735623139/"&gt;Inside Microsoft SQL Server 2005: T-SQL Querying&lt;/a&gt; and how valuable I've found it. Well, Itzik has just completed work on his next book: &lt;a href="http://www.sql.co.il/books/tsqlfund2008/"&gt;Microsoft SQL Server 2008 T-SQL Fundamentals&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;This is a book for people who are new to SQL programming, which is an audience that Itzik has not tackled before. Now you might think that for someone who knows more about T-SQL that anyone else in the world, writing a beginners' book should be about as difficult as sleepwalking, but this is not the case. In a recent post to the private SQL Server newsgroup for MCTs[1] Itzik had this to share:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#8220;I always wanted to write a book about T-SQL Fundamentals, but kept postponing it until I felt I acquired enough knowledge and teaching experience to write it. Well, you never feel you have enough knowledge especially with a language and a model that are so deep, but at least enough to make a decent effort. Some may think that writing a Fundamentals book is easier than writing an advanced one, but I think it's actually the other way around, especially with SQL. Target audience for advanced books is less prone to be misled and mainly need their gaps to be filled. It's a big responsibility to teach people fundamentals, and that's one of the reasons I waited so long.&amp;#8221;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;How cool is that? Even though I don't think I'm the target audience for this book, I am definitely going to get a copy. As a trainer I'm always looking for better ways to explain core concepts, and T-SQL has enough difficult concepts that I am sure to pick up a pointer or two (or two hundred) from this book.&lt;/p&gt;  &lt;p&gt;The book is scheduled to be released on October 22 and you can pre-order it today. So what are you waiting for? &lt;/p&gt;  &lt;p&gt;[1] Yes, I asked his permission before posting this quote here. ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5982423686325085829?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5982423686325085829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5982423686325085829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5982423686325085829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5982423686325085829'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/t-sql-fundamentals-is-almost-here.html' title='T-SQL Fundamentals is (Almost) Here!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7456777059106563133</id><published>2008-10-14T08:16:00.001-07:00</published><updated>2008-10-14T08:16:56.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><title type='text'>Silverlight 2.0 RTM!</title><content type='html'>&lt;p&gt;This is a little far from the usual BI topics, but I think it's pretty exciting regardless. Microsoft Silverlight 2.0 has[1] been released. You can download the bits and the development tools on the &lt;a href="http://silverlight.net/GetStarted/"&gt;official Silverlight web site&lt;/a&gt;. There is also a &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/10/14/silverlight-2-released.aspx"&gt;great blog post from Scott Guthrie&lt;/a&gt; that describes the 2.0 platform and lots of resources that are available to Silverlight developers.&lt;/p&gt;  &lt;p&gt;I don't know about you, but as a developer who has to play in the UI tier occasionally, this is the release I've been waiting for. Check it out!&lt;/p&gt;  &lt;p&gt;[1] Finally! I can't remember the last time there was a product that I'd been hearing about and seeing so much of for so long before it was released.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7456777059106563133?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7456777059106563133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7456777059106563133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7456777059106563133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7456777059106563133'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/10/silverlight-20-rtm.html' title='Silverlight 2.0 RTM!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1704253729491037233</id><published>2008-09-16T16:24:00.001-07:00</published><updated>2008-09-16T16:24:07.897-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Fame! Fortune! Featured Blog!</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SNBAFYVVHXI/AAAAAAAAAgA/hD9JEcSGMqM/s1600-h/TechEd%20Bloggers%20Excerpt%5B5%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="260" alt="TechEd Bloggers Excerpt" src="http://lh4.ggpht.com/matthewmct/SNBAFxd0m1I/AAAAAAAAAgE/9_e6y4wimB8/TechEd%20Bloggers%20Excerpt_thumb%5B3%5D.png?imgmax=800" width="224" align="right" border="0" /&gt;&lt;/a&gt; I just received an email notifying me that my BI Polar blog has been featured in &lt;a href="http://msdn.microsoft.com/en-us/events/teched/cc531163.aspx"&gt;the &amp;quot;Bloggers Spotlight&amp;quot; section on the TechEd Bloggers web site&lt;/a&gt;. This site aggregates a bunch of technical blogs from bloggers who participated in Microsoft's TechEd conference. I've had a bunch of my posts (not the ones about fine dining and finer music, just the technical ones) show up there but it's a nice surprise to have the whole blog featured.&lt;/p&gt;  &lt;p&gt;On a related note, I definitely do continue to blog on BI and SSIS topics (and all of the other random stuff that justifies the &amp;quot;BI Polar&amp;quot; title) after I join Microsoft next month. I'm sure my post frequency will continue to be erratic, or even if but the blog will continue to be hosted here on blogspot, but rest assured the madness will continue. I see several interesting places to apply BI technologies to the challenges waiting for me at Microsoft, and if I know me (this is not guaranteed, but it does seem likely) I'll find the time to blog about it here and there...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1704253729491037233?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1704253729491037233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1704253729491037233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1704253729491037233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1704253729491037233'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/fame-fortune-featured-blog.html' title='Fame! Fortune! Featured Blog!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/matthewmct/SNBAFxd0m1I/AAAAAAAAAgE/9_e6y4wimB8/s72-c/TechEd%20Bloggers%20Excerpt_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4560500851363934351</id><published>2008-09-15T17:26:00.001-07:00</published><updated>2008-09-15T17:26:52.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Losing My MVP</title><content type='html'>&lt;p&gt;&lt;img src="http://bp2.blogger.com/_EUgQcLQ7WNI/R4EaJbfSEOI/AAAAAAAAAQk/dxCOmxl3jnQ/S220/MVPLogo.gif" align="right" /&gt; Since the beginning of the year I've had the Microsoft Most Valuable Professional (MVP) logo on my blog. I've been delighted to be honored with the MVP award, because is is an acknowledgment of the effort I've made to give back to the Microsoft technical community. This is what Microsoft has to say about the MVP award:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;The Microsoft MVP Award Program recognizes and thanks outstanding members of technical communities for their community participation and willingness to help others. The MVP Award is given to exceptional technical community leaders who foster the free and objective exchange of knowledge by actively sharing their real-world expertise with technology users. The MVP Award celebrates the most active community members from around the world who provide invaluable online and offline expertise that enriches the community experience and makes a difference in technical communities that feature Microsoft products.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;What a cool thing to have Microsoft say about you, right? But in another three weeks I will no longer be an MVP - Microsoft is taking the award away from me.&lt;/p&gt;  &lt;p&gt;Why would they do that, you ask?&lt;/p&gt;  &lt;p&gt;Well, since I haven't been violating any NDAs lately, that narrows down the field. Have you guessed yet?&lt;/p&gt;  &lt;p&gt;That's right - I'm going to be joining Microsoft as a full time employee. MVPs are &amp;quot;&lt;em&gt;independent &lt;/em&gt;experts&amp;quot; and Microsoft employees cannot be MVPs.&lt;/p&gt;  &lt;p&gt;Starting October 6th I will be joining Microsoft Learning as a Senior Program Manager/Quality Architect. I will be working with Microsoft Learning's Courseware Development Group (CDG) to improve the quality of Microsoft Official Curriculum (MOC) courseware. This is a challenge that is very close and dear to my heart. I've been a Microsoft Certified Trainer (MCT) since 1996, and have taught many MOC courses over the years. The quality of the courseware is a big factor that affects trainers (and their students) around the world, and being in a position to make such a big difference to such a large audience is an opportunity I simply could not refuse.&lt;/p&gt;  &lt;p&gt;And I get one of those cool blue badges - how cool is that? ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4560500851363934351?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4560500851363934351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4560500851363934351' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4560500851363934351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4560500851363934351'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/losing-my-mvp.html' title='Losing My MVP'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_EUgQcLQ7WNI/R4EaJbfSEOI/AAAAAAAAAQk/dxCOmxl3jnQ/s72-c/MVPLogo.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3975778440900582444</id><published>2008-09-15T14:53:00.001-07:00</published><updated>2008-09-15T14:58:26.178-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>My Interview With Chris Shaw</title><content type='html'>&lt;p&gt;Chris Shaw is the conference director for the SSWUG vConferences that I have been blogging about for the past few months. Last week he sent out a set of interview questions to the various conference chairs[1] asking questions about careers and technology and such. I replied, and today Chris posted the interview on his blog, here:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a title="Business Intelligence with Matthew Roche" href="http://chrisshaw.wordpress.com/2008/09/15/business-intelligence-with-matthew-roche/"&gt;Business Intelligence with Matthew Roche&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Some of the questions[2] were quite interesting, so if you have a spare minute or two you should feel free to check it out.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Not the things you sit in, but so far as I know this is the accepted gender-neutral form of &amp;quot;chairmen&amp;quot; as opposed to &amp;quot;chairpeople&amp;quot; or something...&lt;/p&gt;  &lt;p&gt;[2] As opposed to the answers, of course&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3975778440900582444?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3975778440900582444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3975778440900582444' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3975778440900582444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3975778440900582444'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/my-interview-with-chris-shaw.html' title='My Interview With Chris Shaw'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3011563318325427116</id><published>2008-09-15T13:56:00.001-07:00</published><updated>2008-09-15T13:56:08.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Business Intelligence vConference Update</title><content type='html'>&lt;p&gt;If you've been following my posts about the &lt;a href="http://www.vconferenceonline.com/Business-Intelligence/"&gt;SSWUG Business Intelligence vConference&lt;/a&gt;, you know that it's an online conference with 10 world-class speakers and 30+ sessions that cover the breadth of the Microsoft SQL Server BI stack. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vconferenceonline.com/pressrelease09162008.pdf"&gt;But it just got even better better&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Based on popular demand from conference attendees, the BI vConference and its sister &lt;a href="http://www.vconferenceonline.com/SharePoint/"&gt;SharePoint&lt;/a&gt;, &lt;a href="http://www.vconferenceonline.com/sswug/SQLF"&gt;SQL Server&lt;/a&gt; and &lt;a href="http://www.vconferenceonline.com/dotnet/"&gt;.NET&lt;/a&gt; vConferences will be consolidated into a single &lt;a href="http://www.vconferenceonline.com/"&gt;SSWUG Ultimate Conference&lt;/a&gt;[1] that includes all 120+ sessions from 40 industry-leading speakers&lt;/p&gt;  &lt;p&gt;And you get all this for the $100 price tag of the BI-only conference.&lt;/p&gt;  &lt;p&gt;The new conference dates are November 5, 6 and 7, so you also have some extra time to prepare for the show. Tell your friends, and I'll see you all there.&lt;/p&gt;  &lt;p&gt;[1] I voted for the name of &amp;quot;&amp;#220;berCon&amp;quot; but got vetoed on this one...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3011563318325427116?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3011563318325427116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3011563318325427116' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3011563318325427116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3011563318325427116'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/business-intelligence-vconference.html' title='Business Intelligence vConference Update'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8716903210425637777</id><published>2008-09-13T14:14:00.002-07:00</published><updated>2008-09-16T08:41:31.284-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><title type='text'>Elemental, My Dear Watson</title><content type='html'>&lt;p&gt;This is a completely non-technical post, but since I know that quite a few people who read my blog also live in the Seattle area, so there is no way I could not post it. You see, I had the most amazing dinner last night...&lt;/p&gt;&lt;p&gt;My friends Ken and Susan had each independently recommended the restaurant, &lt;a href="http://seattletimes.nwsource.com/html/restaurants/2002226480_leson01.html"&gt;Elemental@Gasworks&lt;/a&gt;[1] to me and I'd been wanting to check it out for some months now. And since I was in Seattle and free last night, I had my chance. And let me tell you, my expectations were sky-high, and I was not disappointed.&lt;/p&gt;&lt;p&gt;I arrived around 4:15. I'd heard that the place was hard to find so I wanted to give myself some extra time, but between my GPS and the verbal instructions I'd received from Ken I did ok. I took advantage of the opportunity to visit the &lt;a href="http://en.wikipedia.org/wiki/Gas_Works_Park"&gt;Gasworks Park&lt;/a&gt; which is just south of the restaurant, and took my seat around 5:00 when the doors opened[2] for business. There was a cocktail hour from 5:00 to 6:00, but since I was driving I couldn't partake in the hard stuff, and instead sipped some iced wine and cucumber water[3] while snacking on my truffle popcorn.&lt;/p&gt;&lt;p&gt;Instead of ordering from the menu I took the &lt;a href="http://en.wikipedia.org/wiki/Table_d"&gt;prix fixe&lt;/a&gt; option. I'd heard enough good things about the chef to trust her judgment, and what followed was an exercise in culinary delight. Let's see...&lt;/p&gt;&lt;ul&gt;&lt;li&gt;We started with stuffed calamari (the body of the squid was stuffed with rice and other goodness, and the tentacles were on the side) cooked in red wine, &lt;/li&gt;&lt;li&gt;Which was followed by a blue cheese and pear bread pudding, which was savory and sweet at the same time, &lt;/li&gt;&lt;li&gt;And then a dish of lamb tartare with a quail egg yolk on top, served with crispy salty cheese cracker triangles, &lt;/li&gt;&lt;li&gt;Followed by a green salad with a truffle vinaigrette dressing, &lt;/li&gt;&lt;li&gt;And a salmon filet cooked with bacon and served on some sort of wilted greens and pear tomatoes, &lt;/li&gt;&lt;li&gt;And finished up with a roast quail stuffed with something delicious - by that point it was too dark for me to tell just what it was. &lt;/li&gt;&lt;li&gt;Of course "finished up" is something of a misnomer, because I opted to get the cheese course as well, which included four types of amazing cheese, three varieties of wine, some bread, slices of apple, and a date stuffed with nuts and other goodness. &lt;/li&gt;&lt;li&gt;And by then there was no way I could say no to the "sweets," which included three different desserts and a pair of dessert wines. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Oh my goodness - was the best meal I've had in months, and perhaps the best meal I've ever had in the US. Yes, it was that good.&lt;/p&gt;&lt;p&gt;I just wish I had a designated driver, so I could have done more than sip my wine. The wines were generous and paired perfectly with the courses, but since I was driving I had to limit my intake to just a taste here and a taste there.&lt;/p&gt;&lt;p&gt;And the last thing that blows my mind - the meal cost $87 in total. Now I know this is not a cheap meal, but this includes the prix fixe menu ($40) plus the wine pairings ($20) plus the cheese course ($12) plus desserts ($15) and includes taxes. And they don't accept tips, so when I say "total" that's exactly what I mean. I honestly don't know how they do it. I've paid twice as much for meals that were far inferior.&lt;/p&gt;&lt;p&gt;If you're in the Seattle area, definitely check out this restaurant. You need to show up early (doors open at 5:00 and every table was full by 5:15 or so, and at 9:00 I was the first one to leave) or show up late (to get a table when the first round of diners is done) but definitely show up. I know that I'll be back...&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;[1] As I write this the restaurant web site is down, so I'm linking to a Seattle Times review instead. Normally you can find them online here &lt;a href="http://www.elementalatgasworks.com/"&gt;http://www.elementalatgasworks.com&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;[2] Figuratively - the doors were physically open the whole time.&lt;/p&gt;&lt;p&gt;[3] That's right - there was a little slice of cucumber in the carafe of ice water on the table, and it gave the water a very subtle cucumber flavor. It was a little weird, but it worked.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8716903210425637777?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8716903210425637777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8716903210425637777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8716903210425637777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8716903210425637777'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/elemental-my-dear-watson.html' title='Elemental, My Dear Watson'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1982332047299126599</id><published>2008-09-10T22:44:00.001-07:00</published><updated>2008-09-10T22:44:24.592-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Views as "Interfaces" for SSIS</title><content type='html'>&lt;p&gt;This is a technique that I have used for quite some time, and while I have mentioned it to others often enough, I have never blogged on it. A recent conversation on the MVP newsgroups made me think of it again, and hopefully I'll get the chance to type it all up before I get pulled back to the real world.&lt;/p&gt;  &lt;p&gt;Here's the scenario:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;An SSIS package is extracting data from a 3rd party database.&lt;/li&gt;    &lt;li&gt;The package is deployed to multiple dev/test/prod environments.&lt;/li&gt;    &lt;li&gt;The package uses configurations so that deploying to multiple environments does not require changes to the package file.&lt;/li&gt;    &lt;li&gt;The database schema of the various environments is &amp;quot;identical.&amp;quot; [1]&lt;/li&gt;    &lt;li&gt;The package works in one environment, but when deployed to another environment, it fails validation with the dreaded &amp;quot;VS_NEEDSNEWMETADATA&amp;quot; error.&lt;/li&gt;    &lt;li&gt;After various debugging and diagnostic steps are completed, the package suddenly works again, even though &amp;quot;nothing has been changed.&amp;quot;[2]&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hey wait - if the database schemas are identical, you shouldn't get this error, right? And since nothing has changed, the error shouldn't just disappear. What's going on here? Obviously SSIS shouldn't behave like this.&lt;/p&gt;  &lt;p&gt;Of course, the real world story here is that someone was changing the schema of the test environment and had not communicated that change to anyone. Once this is known, the solution is pretty obvious, and it's clear that SSIS is behaving as desired, enforcing strict typing in the data flow.&lt;/p&gt;  &lt;p&gt;But if this was a simple &amp;quot;user error&amp;quot; scenario it wouldn't be appropriate blog fodder, would it? &lt;/p&gt;  &lt;p&gt;But unfortunately, this is not a rare, one-off scenario, and the solution generally involves more communication than it involves technology. But before looking at a solution, let's see if we can summarize the problem. These are the significant problem factors that I see when I look at this scenario:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The SSIS data flow is incredibly strict when it comes to data types. This strictness is closely related to interfaces in object oriented programming in that the names, order and data types of the columns being consumed cannot change in any way once a client (the SSIS data flow) exists that is built to use the interface.&lt;/li&gt;    &lt;li&gt;When the &amp;quot;interface&amp;quot; of the source data changes, any data flows that reference it will break with the &amp;quot;VS_NEEDSNEWMETADATA&amp;quot; error mentioned above.&lt;/li&gt;    &lt;li&gt;Database administrators are generally pretty good about not changing column names and data types on tables when they know that other database objects rely on those tables.[3]&lt;/li&gt;    &lt;li&gt;There is no simple/easy/straightforward way for a DBA to tell if an SSIS package uses a given table. Solutions generally rely upon documentation that is external to the database, or just waiting until something breaks.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So how does this problem description help us reach a solution? Take a look at the last two bullets and the solution practically presents itself: Use database views as an &amp;quot;interface layer&amp;quot; within the database itself.&lt;/p&gt;  &lt;p&gt;But what does this mean? In short, it means that:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The SSIS data flows should extract views from views and not from base tables.&lt;/li&gt;    &lt;li&gt;The views should &amp;quot;self-documenting&amp;quot; to DBAs because they are database objects with concrete dependencies with the base tables from which they draw their data.&lt;/li&gt;    &lt;li&gt;The views should explicitly CAST each column to an explicit data type and column alias - even when the alias name and data type exactly match the base table - to provide an additional layer of insulation against changes to the base tables.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The key here comes from the second and third bullets, above. Having the views as &amp;quot;clients&amp;quot; to the base tables should make it more obvious to people who are changing table schemas that the the tables in question are being used. And the explicit data type casting in the view definitions will define the &amp;quot;interface&amp;quot; required by the SSIS package clients in a way that is familiar to DBAs.&lt;/p&gt;  &lt;p&gt;Now obviously this isn't always an option - many DBAs will not allow the creation of new database objects (such as views) but when this is viable it is a technique with which I have had great success. And when it's not, you can still get some of the same benefits (namely the data type change protection) by basing your data flow on a source query that explicitly casts and aliases each column in the SELECT statement. Then, so long as data type changes to the underlying tables can still support an explicit cast to the data type required by the SSIS data flow, the package still won't break.&lt;/p&gt;  &lt;p&gt;So there you have it - a technique to isolate SSIS data flows from changes in source databases, and to reduce the likelihood of those changes happening in the first place.&lt;/p&gt;  &lt;p&gt;What do you think? I'd love to hear if anyone has used similar techniques...&lt;/p&gt;  &lt;p&gt;[1] Yes, this is in quotes for a reason&lt;/p&gt;  &lt;p&gt;[2] Same thing here&lt;/p&gt;  &lt;p&gt;[3] This is a pretty broad statement, I know...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1982332047299126599?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1982332047299126599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1982332047299126599' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1982332047299126599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1982332047299126599'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/09/views-as-for-ssis.html' title='Views as &amp;quot;Interfaces&amp;quot; for SSIS'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1738253566696804370</id><published>2008-08-30T08:39:00.001-07:00</published><updated>2008-08-30T08:39:22.959-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS Sample Data Flow Transformations</title><content type='html'>&lt;p&gt;Every few months I stumble across this old blog post by Euan Garden[1] that links to a bunch of sample transformation components that the SSIS team put out in the 2005 release timeframe. Check it out: &lt;a title="http://blogs.msdn.com/euanga/archive/2006/02/14/IsTransforms.aspx" href="http://blogs.msdn.com/euanga/archive/2006/02/14/IsTransforms.aspx"&gt;http://blogs.msdn.com/euanga/archive/2006/02/14/IsTransforms.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now obviously this isn't new news, but I can never find it when I'm looking for it, so hopefully it will help me &lt;em&gt;and &lt;/em&gt;you the next time one of us is looking for sample transformations...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Always when I'm looking for something else entirely.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1738253566696804370?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1738253566696804370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1738253566696804370' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1738253566696804370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1738253566696804370'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/ssis-sample-data-flow-transformations.html' title='SSIS Sample Data Flow Transformations'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8104669044230476621</id><published>2008-08-28T17:21:00.001-07:00</published><updated>2008-08-28T17:21:41.164-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>New SSIS Article Online on MSDN</title><content type='html'>&lt;p&gt;I have a new article on the SSIS Developer Center on MSDN, focusing on Data Sources and Configurations as tools for connection reuse across sets of SSIS packages. I wrote it months ago (looking at it now it seems even longer[1]) but it just made it online today.&lt;/p&gt;  &lt;p&gt;Check it out here: &lt;a title="http://msdn.microsoft.com/en-us/library/cc671619.aspx" href="http://msdn.microsoft.com/en-us/library/cc671619.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc671619.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is actually one of a set of articles by SSIS-focused SQL Server MVPs that will be published over the next week of so - I just could not wait to let people know that it was out there. I'll post links to all of the articles once they're all online (and I probably won't be the only one to do so) but for now you can get started with this one. Enjoy!&lt;/p&gt;  &lt;p&gt;[1] For example, the &amp;quot;about the author&amp;quot; blurb at the bottom lists me as still working at Configuresoft, even though I have not been working with Configuresoft since the end of July.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8104669044230476621?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8104669044230476621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8104669044230476621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8104669044230476621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8104669044230476621'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/new-ssis-article-online-on-msdn.html' title='New SSIS Article Online on MSDN'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7156892534454488919</id><published>2008-08-28T16:40:00.001-07:00</published><updated>2008-08-28T16:40:11.411-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><title type='text'>Who Runs The Cloud?</title><content type='html'>&lt;p&gt;Cloud Computing is a very popular phrase these days, and it's been creeping its way into SQL Server circles with the introduction of &lt;a href="http://www.microsoft.com/sql/dataservices/default.mspx"&gt;SQL Server Data Services&lt;/a&gt; and other service offerings from Microsoft and other companies. It seems to be what many IT managers and some IT professionals want to talk about. &lt;/p&gt;  &lt;p&gt;But it's always struck me as being a little odd. After all, I've never met either:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;A) Software that runs on water vapor and ice particles suspended in air,&lt;/p&gt;    &lt;p&gt;or&lt;/p&gt;    &lt;p&gt;B) A cloud that's made up of high-end computer hardware.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Yes, I know - that's not really fair. Everyone knows that the &amp;quot;cloud&amp;quot; in Cloud Computing refers to the Internet, which is usually drawn as a big fluffy cloud on whiteboards because it's too complex and dynamic in structure to be diagrammed accurately at more detailed levels of abstraction. But still, it seems to me that too many people fail to look deeper, to force the &amp;quot;cloud&amp;quot; abstraction to leak, as it were.&lt;/p&gt;  &lt;p&gt;Until it leaks on them.&lt;/p&gt;  &lt;p&gt;Obviously, having your software run &amp;quot;in the cloud&amp;quot; means that it's running in a well-connected data center, probably one that's managed by a 3rd party. But the cloud is still made up of hardware and software, and regardless of who owns and operates it, it still needs to be managed by someone. And what happens when that fails?&lt;/p&gt;  &lt;p&gt;Well, bad things, right? I came across this article on The Register[1] today:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.theregister.co.uk/2008/08/28/flexiscale_outage/" href="http://www.theregister.co.uk/2008/08/28/flexiscale_outage/"&gt;http://www.theregister.co.uk/2008/08/28/flexiscale_outage/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ouch.[2]&lt;/p&gt;  &lt;p&gt;What's the moral of the story? I'm not going to claim that I know, but I'm sure that it is something related to &amp;quot;good for the goose, good for the gander&amp;quot; or the like. The same bad things that can happen to your own data center can happen to others' data centers as well, even when your applications and services are running there.&lt;/p&gt;  &lt;p&gt;So is it time to look at your SLA again?&lt;/p&gt;  &lt;p&gt;[1] My favorite source for bitter and sarcastic IT news&lt;/p&gt;  &lt;p&gt;[2] Ouch and a half.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7156892534454488919?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7156892534454488919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7156892534454488919' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7156892534454488919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7156892534454488919'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/who-runs-cloud.html' title='Who Runs The Cloud?'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1868145092573771897</id><published>2008-08-28T12:29:00.001-07:00</published><updated>2008-08-28T12:29:34.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Book'/><title type='text'>Buy This Book, or Your Database Gets It!</title><content type='html'>&lt;p&gt;At last night's &lt;a href="http://www.vduny.org/"&gt;VDUNY&lt;/a&gt; meeting I talked about a whole bunch of new features in SQL Server 2008 for database developers. And because this is a favorite topic of mine[1] a lot of the discussion revolved around Transact-SQL.&lt;/p&gt;  &lt;p&gt;And you can't really talk about Transact-SQL without the name &lt;a href="http://www.sql.co.il/"&gt;Itzik Ben-Gan&lt;/a&gt; coming up at least once or twice. Itzik is arguably the person who knows more about using T-SQL than anyone else on the planet, including the people who develop the language at Microsoft.[2] And of course, you can't mention Itzik at a user group without recommending this book:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0735623139/"&gt;Inside Microsoft SQL Server 2005: T-SQL Querying&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you develop applications using SQL Server - any version, not just SQL Server 2005 - then you absolutely must have this book in your library. It doesn't matter if you are brand new to SQL Server or (like me) you have been a SQL Server consultant and trainer for over ten years - you &lt;em&gt;&lt;strong&gt;will &lt;/strong&gt;&lt;/em&gt;find information in this book that you never knew you didn't know, and you'll find techniques that will make you a better SQL developer every day.&lt;/p&gt;  &lt;p&gt;Yeah, it's that good.&lt;/p&gt;  &lt;p&gt;Just to make sure no one thinks that Itzik is here behind me with a gun, this is a purely unsolicited recommendation. I'd just gotten a follow-up email from an attendee, which made me remember the presentation, which made me remember the discussion, which made me remember just how darned good this book is. Buy it and see.&lt;/p&gt;  &lt;p&gt;[1] And because they were foolish enough to say &amp;quot;talk about whatever you'd like.&amp;quot; ;-)&lt;/p&gt;  &lt;p&gt;[2] Yes, this is a powerful statement, but I feel comfortable making it because A) I did qualify it with the word &amp;quot;arguably&amp;quot; and B) I've heard enough people on the SQL Server team say the same thing without using the word &amp;quot;arguably.&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1868145092573771897?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1868145092573771897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1868145092573771897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1868145092573771897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1868145092573771897'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/buy-this-book-or-your-database-gets-it.html' title='Buy This Book, or Your Database Gets It!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6486394515819456924</id><published>2008-08-27T11:35:00.001-07:00</published><updated>2008-08-27T11:35:18.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><title type='text'>Working Around AT&amp;T's "Help"</title><content type='html'>&lt;p&gt;I own an &lt;a href="http://www.wireless.att.com/cell-phone-service/cell-phone-details/?q_sku=sku1060009"&gt;AT&amp;amp;T Tilt smartphone&lt;/a&gt;. I use it for all sorts of things, including voice calls, web browsing and email, and it's very rare that I leave home without it. But one thing that I have not used it for before today was connecting to the Internet from my laptop. Earlier this month I upgraded my AT&amp;amp;T plan to include &amp;quot;tethering&amp;quot; to allow me to do just this. I spent half an hour or so on the phone with a very helpful young lady at AT&amp;amp;T tech support who walked me through what I would need to do to set up and use tethering, including &lt;a href="http://www.wireless.att.com/answer-center/solutionDisplay.jsp?solutionId=KB77167"&gt;this&lt;/a&gt; and &lt;a href="http://www.wireless.att.com/answer-center/solutionDisplay.jsp?solutionId=kb82957"&gt;this&lt;/a&gt;. Life was good.&lt;/p&gt;  &lt;p&gt;Except for the fact that it didn't work.&lt;/p&gt;  &lt;p&gt;Following AT&amp;amp;T's &amp;quot;help&amp;quot; allowed me to connect my laptop to my phone, but not actually to the Internet. And today, since I'm preparing to &lt;a href="http://bi-polar23.blogspot.com/2008/08/vduny-meeting-tonight.html"&gt;be at the Rochester Microsoft offices for tonight's WDUNY meeting&lt;/a&gt;, I figured the time was right to figure out what was going on. I was getting ready to call AT&amp;amp;T support again to see what they had to say when I realized that this might not be the best approach. So instead I fired up my favorite search engine and found &lt;a href="http://discuss.pocketnow.com/showthread.php?threadid=22481"&gt;this&lt;/a&gt; and &lt;a href="http://www.htcwiki.com/page/Internet+Sharing?t=anon"&gt;this&lt;/a&gt;. And by following the instructions on the second page, I was up and running - connected to the Internet from my laptop via my phone, and connected to my VPN from there, and talking on the phone at the same time - within 10 minutes.&lt;/p&gt;  &lt;p&gt;Thank goodness for the Internet. But why did it need to be this hard? Why is the &amp;quot;official&amp;quot; solution obtuse and backward and (to top it all off) non-functional?&lt;/p&gt;  &lt;p&gt;I don't have an answer, but with a little luck the next time someone is trying to tether his Tilt, he'll have one more resource to help him get going. And hopefully this solution will keep working, since I'm going to be on the road a lot over the next three or four weeks...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6486394515819456924?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6486394515819456924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6486394515819456924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6486394515819456924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6486394515819456924'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/working-around-at.html' title='Working Around AT&amp;amp;T&amp;#39;s &amp;quot;Help&amp;quot;'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5310825643589250151</id><published>2008-08-27T09:35:00.001-07:00</published><updated>2008-08-27T09:35:08.632-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>VDUNY Meeting Tonight</title><content type='html'>&lt;p&gt;Just as a quick reminder, I will be presenting on new features in SQL Server 2008 at the &lt;a href="http://www.vduny.org/"&gt;Visual Developers of Upstate New York&lt;/a&gt; user group tonight at 6:00 PM in Rochester, New York. If you're in the Rochester area, be sure to attend.&lt;/p&gt;  &lt;p&gt;And remember - as an added bonus I will be giving away a set of post-conference DVDs from this year's TechEd conference. This is a set of nine DVDs with all of the breakout sessions and keynotes from both the TechEd Developers and TechEd IT Professionals conferences, with a retail value of $195. It could be yours!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5310825643589250151?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5310825643589250151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5310825643589250151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5310825643589250151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5310825643589250151'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/vduny-meeting-tonight.html' title='VDUNY Meeting Tonight'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2050975389897126527</id><published>2008-08-27T07:18:00.001-07:00</published><updated>2008-08-27T07:18:43.470-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Webcasts'/><category scheme='http://www.blogger.com/atom/ns#' term='Beginners'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>One More Reason to Attend</title><content type='html'>&lt;p&gt;I've posted a few times already[1] about the &lt;a href="http://www.vconferenceonline.com/Business-Intelligence/"&gt;SSWUG Business Intelligence vConference&lt;/a&gt; that I have been helping to organize. Well, the conference is now less than a month away, and there is more news to share:&lt;/p&gt;  &lt;p&gt;We're giving away a copy of &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/aa718657.aspx"&gt;Microsoft Visual Studio Team System 2008 Team Suite with MSDN Premium&lt;/a&gt; to one lucky attendee.&lt;/p&gt;  &lt;p&gt;That's right - the big one. This is the ultimate version of Microsoft's MSDN subscription, with a suggested retail price of $10,939. If you're a software developer or BI professional, this package has everything that you need to develop for the Microsoft platform, and then some.&lt;/p&gt;  &lt;p&gt;If you'd like a chance to win this MSDN subscription, just register for the &lt;a href="http://www.vconferenceonline.com/Business-Intelligence/"&gt;SSWUG Business Intelligence vConference&lt;/a&gt;. For just $100 you get:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;30 amazing &lt;a href="http://www.vconferenceonline.com/business-intelligence/abstract.asp"&gt;technical sessions&lt;/a&gt; from 10 amazing &lt;a href="http://www.vconferenceonline.com/business-intelligence/speakers.asp"&gt;speakers&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The ability to watch the sessions either during their &lt;a href="http://www.vconferenceonline.com/business-intelligence/sessions.asp?offset=4"&gt;multiple scheduled timeslots&lt;/a&gt;, or on demand for up to 14 days after the conference is over.&lt;/li&gt;    &lt;li&gt;Online chat and Q&amp;amp;A with the speakers during the scheduled sessions.&lt;/li&gt;    &lt;li&gt;Downloadable slides, transcripts and demo files so you can continue the learning once the session is done.&lt;/li&gt;    &lt;li&gt;And here's the one that blows my mind - a $150 discount on the &lt;a href="http://www.sqlconnections.com/shows/FALL2008SQL/default.asp?s=122"&gt;Fall SQL Connections conference in Las Vegas&lt;/a&gt;. So if you're planning to attend the SQL Connections conference, the &lt;a href="http://www.vconferenceonline.com/Business-Intelligence/"&gt;SSWUG Business Intelligence vConference&lt;/a&gt; more than pays for itself.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So what are you waiting for? This vConference is going to be amazing, and we'd love to see you there!&lt;/p&gt;  &lt;p&gt;[1] For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://bi-polar23.blogspot.com/2008/06/bi-for-virtual-guy.html"&gt;BI for the Virtual Guy&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://bi-polar23.blogspot.com/2008/07/check-out-this-lineup.html"&gt;Check Out This Lineup!&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;And also a mention in &lt;a href="http://bi-polar23.blogspot.com/2008/07/what-happens-in-bids-stays-in-bids.html"&gt;What Happens in BIDS, Stays in BIDS&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2050975389897126527?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2050975389897126527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2050975389897126527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2050975389897126527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2050975389897126527'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/one-more-reason-to-attend.html' title='One More Reason to Attend'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-828072294706301703</id><published>2008-08-26T12:19:00.001-07:00</published><updated>2008-08-26T12:19:00.575-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SQL Server Sample Install Epiphany</title><content type='html'>&lt;p&gt;(Warning - this post has turned into a long drawn-out rant. If you want to skip to just the useful stuff, scroll down to the third and final bulleted list way down there at the bottom. I won't mind, I promise.)&lt;/p&gt;  &lt;p&gt;One &amp;quot;new feature&amp;quot; of SQL Server 2008 that has always seemed of dubious value (at best) to me is the way that the product samples have been removed from the actual SQL Server installer. If my memory serves me correctly[1] the history of SQL Server samples (namely the sample databases) has gone something like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;SQL Server 2000&lt;/strong&gt; and earlier: Sample databases automatically installed with the RDBMS. Users must manually delete them post-install if they're not wanted.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SQL Server 2005&lt;/strong&gt;: Sample databases part of RDBMS install, but are not installed by default - they must be manually selected by the user.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;SQL Server 2008&lt;/strong&gt;: Sample databases not included with the RDBMS installer at all. Users must wade through dozens of poorly-documented downloads on the CodePlex web site, hope they get the installers that include the databases that they need, install them, then struggle to find out what files the installers put where.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ok, so perhaps that last bullet isn't particularly fair[2] but it does sum up my personal experiences with getting samples working with SQL Server 2008. If you go to the &lt;a href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040"&gt;Releases page for the SQL Server 2008 samples project on CodePlex&lt;/a&gt; you'll see 28 (twenty eight!!) different MSI installers that you can download. And when you install any one of them, it's pretty much a mystery what files are installed and where you can find them. In my book this is quite a big step backward.&lt;/p&gt;  &lt;p&gt;To be completely open, I realize and admit that I'm not the typical SQL Server user. I do a lot of training, presenting and writing on SQL Server topics, and the samples are a big part of these activities - because without them I'd have to build samples of my own. And of course once the SQL Server samples are installed, they're great - it's hard to find anything bad to say about the content itself.&lt;/p&gt;  &lt;p&gt;Anyway, today I've been spending some time preparing for a few presentations that I have on my schedule in the next month or so, and have needed to go back out to the CodePlex web site to download (again) the SQL Server 2008 samples. When I was faced (again) with the 28 (twenty eight!) different installers, I groaned and hung my head. &amp;quot;Why?&amp;quot; I moaned, &amp;quot;Why can't they just give us the expletive expletive SQL scripts and source code instead of these accursed MSI files?!?!?&amp;quot;&lt;/p&gt;  &lt;p&gt;Oh.&lt;/p&gt;  &lt;p&gt;Oh yeah.&lt;/p&gt;  &lt;p&gt;Oh yeah, one of the installers is named &amp;quot;SQL2008.AdventureWorks_All_DB_Scripts.x86.msi&amp;quot; - that sounds useful. How could I have missed this?&lt;/p&gt;  &lt;p&gt;In fact, I've found that to get to where I need to be, there are really only two things I need from CodePlex:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;That SQL2008.AdventureWorks_All_DB_Scripts.x86.msi file, which you can get &lt;a href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040"&gt;here&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;The &amp;quot;All Microsoft Product Samples in a Box&amp;quot; download, which includes &amp;quot;all Microsoft SQL Server product samples (except for the sample databases, due to size constraints) and does NOT include any community projects&amp;quot; and which you can get &lt;a href="http://www.codeplex.com/SqlServerSamples/Release/ProjectReleases.aspx?ReleaseId=16037"&gt;here&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The nice thing about this second download is that you can choose to download it as a zip file, which means you can extract it to wherever you want to put it. And that, for me, is key.&lt;/p&gt;  &lt;p&gt;The DB installer MSI is another matter entirely. When you install it, there is no indication of where it's putting the DB scripts, nor does it give you the option to choose a destination directory. I looked in the C:\Program Files\Microsoft SQL Server\100\Samples folder - that makes sense, right? Wrong. There's nothing there but a license, a readme file which references the C:\Program Files\Microsoft SQL Server\100\Samples folder &lt;em&gt;&lt;strong&gt;where the samples aren't located&lt;/strong&gt;&lt;/em&gt;, and a shortcut to the CodePlex project.[3] Ugh.&lt;/p&gt;  &lt;p&gt;Instead, the samples are installed in the C:\Program Files\Microsoft SQL Server\100\&lt;em&gt;&lt;strong&gt;Tools&lt;/strong&gt;&lt;/em&gt;\Samples folder (note the inclusion of Tools in the folder path) where, if you're like me, you'll never think to look.&lt;/p&gt;  &lt;p&gt;Ok, this post has turned into a rant, which was really not my intent. Please let me summarize:&lt;/p&gt;  &lt;p&gt;To get the complete samples for SQL Server 2008, perform the following steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download SQL2008.AdventureWorks_All_DB_Scripts.x86.msi from &lt;a title="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040" href="http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040"&gt;http://www.codeplex.com/MSFTDBProdSamples/Release/ProjectReleases.aspx?ReleaseId=16040&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Download SQL2008.All_Product_Samples_Without_DBs.zip from &lt;a title="http://www.codeplex.com/SqlServerSamples/Release/ProjectReleases.aspx?ReleaseId=16037" href="http://www.codeplex.com/SqlServerSamples/Release/ProjectReleases.aspx?ReleaseId=16037"&gt;http://www.codeplex.com/SqlServerSamples/Release/ProjectReleases.aspx?ReleaseId=16037&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Run the MSI installer and then look in the C:\Program Files\Microsoft SQL Server\100\Tools\Samples folder to find the database scripts. Run them as you wish.&lt;/li&gt;    &lt;li&gt;Extract the zip file into the directory of your choice.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hopefully this will help someone out there avoid the frustration I've felt from time to time when working with the &amp;quot;decoupled&amp;quot; samples...&lt;/p&gt;  &lt;p&gt;[1] If you say this in the voice of &lt;a href="http://en.wikipedia.org/wiki/Takeshi_Kaga"&gt;Chairman Kaga&lt;/a&gt; it sounds like a cool pop culture reference, instead of just an admission that I have trouble remembering things that happened before I started typing this blog post - try it out and you'll see!&lt;/p&gt;  &lt;p&gt;[2] Especially seeing the huge improvements that the samples owner &lt;a href="http://blogs.msdn.com/reedme/"&gt;David Reed&lt;/a&gt; has made over the last few months leading up to SQL 2008 RTM.&lt;/p&gt;  &lt;p&gt;[3] No, I have not yet filed a Connect item on this readme file. Typing up this rambling blog post took so long that I didn't have time to actually file a useful bug as well...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-828072294706301703?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/828072294706301703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=828072294706301703' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/828072294706301703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/828072294706301703'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/sql-server-sample-install-epiphany.html' title='SQL Server Sample Install Epiphany'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8040093422700484309</id><published>2008-08-22T10:09:00.001-07:00</published><updated>2008-08-22T10:09:49.862-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><title type='text'>Cake Wrecks</title><content type='html'>&lt;p&gt;This has nothing to do with SSIS or SQL Server or technology at all, but I need to post it anyway. My friend Karla just shared this link with me:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://cakewrecks.blogspot.com" href="http://cakewrecks.blogspot.com"&gt;http://cakewrecks.blogspot.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You probably know that I am an avid baker and a general wise-guy[1] but I never thought to bring the two of them together quite like this. The Cake Wrecks blog is dedicated to... let's just call them &amp;quot;unfortunate incidents&amp;quot; in the cake decorating world. Funny pictures, amusing commentary and fun - what's not to like?&lt;/p&gt;  &lt;p&gt;[1] And that most people who know me generally spell &amp;quot;guy&amp;quot; with an &amp;quot;a&amp;quot; and a repeating &amp;quot;s&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8040093422700484309?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8040093422700484309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8040093422700484309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8040093422700484309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8040093422700484309'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/cake-wrecks.html' title='Cake Wrecks'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8526797015353023524</id><published>2008-08-21T13:49:00.001-07:00</published><updated>2008-08-21T13:49:20.787-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><title type='text'>Waltham Code Camp 10: "Dev InTENsity!"</title><content type='html'>&lt;p&gt;I just got the announcement today, so I guess I'm behind the times as usual - the 10th Code Camp event is going to be held next month at the Microsoft offices in Waltham, MA on September 20 and 21. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SK3UypIRm0I/AAAAAAAAAfg/jhpGvGXNE8Q/s1600-h/CodeCamp10_thumb%5B3%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="CodeCamp10_thumb" align="right" src="http://lh4.ggpht.com/matthewmct/SK3UzbuFFcI/AAAAAAAAAfk/YEKXgEYmsww/CodeCamp10_thumb_thumb%5B1%5D.jpg?imgmax=800" width="182" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In case you missed Code Camp 9 in April, this is going to be a &lt;em&gt;free &lt;/em&gt;two-day technical conference focusing on Microsoft developer technologies. The last time around there were over six hundred attendees who came from as close as Boston and as from as far as hundreds of miles way, and (if my memory serves me correctly) there were six or seven different tracks going on throughout each day. People presented on topics ranging from .NET to Silverlight to SQL Server Integration Services. (Guess who did the SSIS sessions? ;-)&lt;/p&gt;  &lt;p&gt;Sadly, my travel schedule will not allow me to be in Waltham to speak at next month's event, but if you are in the northeast US, it's well worth the trip to come.&lt;/p&gt;  &lt;p&gt;For more information, check out &lt;a href="http://blogs.msdn.com/cbowen/archive/2008/08/08/code-camp-10-registration-and-call-for-speakers.aspx"&gt;Chris Bowen's blog&lt;/a&gt;. He's one of the event organizers and he has all of the details, whether you want to attend or present, or both.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8526797015353023524?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8526797015353023524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8526797015353023524' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8526797015353023524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8526797015353023524'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/waltham-code-camp-10-intensity.html' title='Waltham Code Camp 10: &amp;quot;Dev InTENsity!&amp;quot;'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/matthewmct/SK3UzbuFFcI/AAAAAAAAAfk/YEKXgEYmsww/s72-c/CodeCamp10_thumb_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-785741772586048906</id><published>2008-08-21T10:15:00.001-07:00</published><updated>2008-08-21T10:15:05.799-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='T-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Visual Developers of Upstate New York</title><content type='html'>&lt;p&gt;I apologize for the late notice (I've know for weeks, but have kept forgetting to post) but I will be speaking next Wednesday, August 27th, at the &lt;a href="http://www.vduny.org/"&gt;VDUNY user group in Rochester, New York&lt;/a&gt;. This user group meets on the 4th Wednesday of each month in the Rochester Microsoft offices, and generally has a great turnout of talented software development processionals.&lt;/p&gt;  &lt;p&gt;This month I'll be presenting on some of my favorite new developer-centric features in SQL Server 2008. I realize that this is awfully vague, but that is intentional. I'm planning on going in with a loose agenda and lots of demos, and seeing where the session goes.&lt;/p&gt;  &lt;p&gt;And to sweeten the pot a little, I will also be giving away a complete set of nine DVDs with all of the content from the TechEd Developers and IT Professionals conferences in Orlando this June. If you're in the Rochester area, you should plan on attending - it will be a lot of fun.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-785741772586048906?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/785741772586048906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=785741772586048906' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/785741772586048906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/785741772586048906'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/visual-developers-of-upstate-new-york.html' title='Visual Developers of Upstate New York'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1336039040422623490</id><published>2008-08-20T08:21:00.001-07:00</published><updated>2008-08-20T08:21:11.201-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SSIS in Stockholm 2.0</title><content type='html'>&lt;p&gt;Last autumn I visited the beautiful country of Sweden for the first time. I delivered a two-day SQL Server Integration Services &amp;quot;advanced topics&amp;quot; seminar in Stockholm and presented at the &lt;a href="http://www.sqlug.se"&gt;Swedish SQL Server User Group&lt;/a&gt; one evening as well.[1] I had a great time and based on their evaluations the seminar attendees did too.&lt;/p&gt;  &lt;p&gt;So we're doing it again.&lt;/p&gt;  &lt;p&gt;On October 1 and 2, I will be back in Stockholm for another SSIS seminar. The outline looks like this:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SSIS development best practices &lt;/li&gt;    &lt;li&gt;SSIS deployment best practices&lt;/li&gt;    &lt;li&gt;Extending SSIS packages through custom .NET code using the Script Task and Script Component&lt;/li&gt;    &lt;li&gt;Using open source tools to enhance the SSIS development lifecycle&lt;/li&gt;    &lt;li&gt;Building a custom configuration solution to move beyond the built-in configuration features&lt;/li&gt;    &lt;li&gt;&amp;quot;Elegant solutions for common problems&amp;quot; utilizing SSIS expressions to build real-world packages&lt;/li&gt;    &lt;li&gt;Adding data mining to your SSIS packages&lt;/li&gt;    &lt;li&gt;Performance tuning the SSIS data flow &lt;/li&gt;    &lt;li&gt;New SSIS features in SQL Server 2008&lt;/li&gt;    &lt;li&gt;Lots of opportunities for Q&amp;amp;A and real-world SSIS discussion&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It's always a real joy for me to speak on my favorite topic (SSIS) and this seminar is going to be doubly exciting. Not only do I get to return to Stockholm, I also get two full days to present on some of my favorite subjects, do lots of hands-on demos, share some cool code, and above all share my passion and excitement for the SSIS platform with everyone involved.&lt;/p&gt;  &lt;p&gt;So if you're going to be in Stockholm at the beginning of October, you should definitely plan on attending this event. And if you're not going to be in Stockholm, you should plan on coming anyway. The city is beautiful this time of year, the food is amazing, and the seminar content will be even better. &lt;/p&gt;  &lt;p&gt;[1] I also had some of the best food I've ever eaten, got to explore a truly beautiful city, and meet some really nice people.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1336039040422623490?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1336039040422623490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1336039040422623490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1336039040422623490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1336039040422623490'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/ssis-in-stockholm-20.html' title='SSIS in Stockholm 2.0'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3852412180246503987</id><published>2008-08-20T08:00:00.001-07:00</published><updated>2008-08-20T08:00:02.604-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Webcasts'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS Deployment at TechEd Online</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;The third and final &amp;quot;Tech*Talk&amp;quot; video interview I recorded during Microsoft's TechEd conference this June in Orlando is now online. I talked with &lt;a href="http://www.ineta.org/BoardMember.aspx"&gt;INETA board member Mark Rosenberg&lt;/a&gt; about SQL Server Integration Services deployment. You can check it out on the &lt;a href="http://technet.microsoft.com/en-us/events/teched/cc561184.aspx"&gt;TechEd Online video library&lt;/a&gt; site in various formats:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_techtalk_46_low.wmv"&gt;WMV low quality video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_techtalk_46_high.wmv"&gt;WMV high quality video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_techtalk_46_high.mp4"&gt;MP4 high quality video&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_Dev_techtalk_46_audio.MP3"&gt;MP3 audio only&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3852412180246503987?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3852412180246503987/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3852412180246503987' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3852412180246503987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3852412180246503987'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/ssis-deployment-at-teched-online.html' title='SSIS Deployment at TechEd Online'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7336261865052221623</id><published>2008-08-20T07:46:00.001-07:00</published><updated>2008-08-20T07:46:46.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Building Packages Programmatically...</title><content type='html'>&lt;p&gt;...just got easier.&lt;/p&gt;  &lt;p&gt;One of the most common SSIS questions that most consistently gets the most consistently frustrating answers is &amp;quot;how do I build a package that can load data from an Excel spreadsheet into a database table when I don't know the layout of the spreadsheet until run time?&amp;quot;&lt;/p&gt;  &lt;p&gt;No, the question is never phrased quite this succinctly, but there are dozens of variations that all boil down to this core. The source may be a text file or a database table and not an Excel spreadsheet, but the &amp;quot;I don't know the schema until I run the package&amp;quot; or &amp;quot;the source columns map directly to the destination columns, but I don't know exactly what they are&amp;quot; aspects of the question remain the same.&lt;/p&gt;  &lt;p&gt;And the answer remains the same too: &amp;quot;SSIS doesn't do 'dynamic' data flow. You can work around this limitation by using the SSIS .NET API to dynamically build and execute a package, reading in the metadata about your source and destination columns to construct the data flow.&amp;quot;&lt;/p&gt;  &lt;p&gt;The problem with this answer is threefold:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The API for working with the SSIS data flow is a bit complex.&lt;/li&gt;    &lt;li&gt;The documentation on the SSIS data flow API is a bit sparse.&lt;/li&gt;    &lt;li&gt;The samples available that demonstrate this technique are a bit nonexistent.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;This triumvirate of frustration has been a pet peeve of mine for quite some time. In fact, I've been known to say that such a frustrating answer to such a common question is a major barrier to the adoption of SSIS.&lt;/p&gt;  &lt;p&gt;But this week the story just got better. The SSIS team has released additional functionality (see &lt;a href="http://blogs.msdn.com/mattm/archive/2008/08/19/new-ssis-community-samples.aspx"&gt;Matt Masson's blog post&lt;/a&gt; for more details on the new functionality, including SharePoint List Adapters!) as part of their &lt;a href="http://www.codeplex.com/SQLSrvIntegrationSrv/"&gt;SSIS Community Samples project&lt;/a&gt; on CodePlex. As part of the new release, the samples now include a package generation application that demonstrates how to solve this archetypal problem. Here's the intro blurb from the readme file for this sample:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;This sample demonstrates package generation and execution using the Integration Services object model. The sample can be used to transfer data between a pair of source and destination components at the command line. &lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;The sample supports three types of source and destination components: SQL Server, Excel and flat file. You can choose to create a new destination based on the source component metadata. Alternatively, this sample supports mapping source and existing destination columns by using the same column names or manually, by using the command line.       &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;You can modify the code in this sample to fit your own application.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This may not sound exciting when you read it, but it almost takes my breath away. Digging into this sample is high on my to-do list in the weeks ahead (July and August have been crazy months for me, as the lack of activity on my blog demonstrates) and if you have ever been faced with this &amp;quot;dynamic data flow&amp;quot; conundrum, you should check it out as well.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7336261865052221623?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7336261865052221623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7336261865052221623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7336261865052221623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7336261865052221623'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/building-packages-programmatically.html' title='Building Packages Programmatically...'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1244604701812676803</id><published>2008-08-16T06:15:00.001-07:00</published><updated>2008-08-16T06:15:00.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>BIDS Helper 1.3 Release</title><content type='html'>&lt;p&gt;Just a quick update on this hectic weekend day: The long-awaited 1.3 release of the best and most important add-in for Microsoft BI developers - &lt;a href="http://www.codeplex.com/bidshelper"&gt;BIDS Helper&lt;/a&gt; - has been released. It has a plethora of new features and supports both SQL Server 2005 and SQL Server 2008.&lt;/p&gt;  &lt;p&gt;Download it here: &lt;a title="http://www.codeplex.com/bidshelper/Release/ProjectReleases.aspx?ReleaseId=9557" href="http://www.codeplex.com/bidshelper/Release/ProjectReleases.aspx?ReleaseId=9557"&gt;http://www.codeplex.com/bidshelper/Release/ProjectReleases.aspx?ReleaseId=9557&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1244604701812676803?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1244604701812676803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1244604701812676803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1244604701812676803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1244604701812676803'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/bids-helper-13-release.html' title='BIDS Helper 1.3 Release'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3004961503800029054</id><published>2008-08-06T12:01:00.001-07:00</published><updated>2008-08-06T12:01:45.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SQL Server 2008 is Released to Manufacturing!</title><content type='html'>&lt;p&gt;SQL Server 2008 went RTM this morning and is currently available from the MSDN and TechNet Subscriber download centers. I'm downloading now - are you?&lt;/p&gt;  &lt;p&gt;I assume you're not, since I'm getting a sustained download rate of over 2100 KB/sec. Maybe I should wait until my download is complete to hit &amp;quot;Publish.&amp;quot; ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3004961503800029054?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3004961503800029054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3004961503800029054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3004961503800029054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3004961503800029054'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/08/sql-server-2008-is-released-to.html' title='SQL Server 2008 is Released to Manufacturing!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6639518709702003027</id><published>2008-07-28T09:06:00.001-07:00</published><updated>2008-07-28T09:06:06.679-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Webcasts'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS for IT Professionals</title><content type='html'>&lt;p&gt;One of the &amp;quot;Tech*Talk&amp;quot; video interviews I recorded during Microsoft's TechEd conference last month in Orlando is now online. I talked with &lt;a href="http://blogs.technet.com/jsnow/"&gt;Joey Snow&lt;/a&gt; of the &lt;a href="http://edge.technet.com/"&gt;TechNet Edge&lt;/a&gt; web site about SQL Server Integration Services for IT Pros. You can check it out on the &lt;a href="http://technet.microsoft.com/en-us/events/teched/cc561184.aspx"&gt;TechEd Online video library&lt;/a&gt; site in various formats:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_ITP_techtalk_111_low.wmv"&gt;WMV low quality video&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_ITP_techtalk_111_high.wmv"&gt;WMV high quality video&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_ITP_techtalk_111_high.mp4"&gt;MP4 high quality video&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://microsofttech.fr.edgesuite.net/TechEdOnline/Videos/08_NA_ITP_techtalk_111_audio.MP3"&gt;MP3 audio only&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6639518709702003027?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6639518709702003027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6639518709702003027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6639518709702003027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6639518709702003027'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/ssis-for-it-professionals.html' title='SSIS for IT Professionals'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7121617709637406403</id><published>2008-07-23T13:07:00.001-07:00</published><updated>2008-07-23T13:07:33.607-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SSIS Community Samples on CodePlex</title><content type='html'>&lt;p&gt;The SSIS team has just published the first two of a set of community samples to the CodePlex site. Take a look here: &lt;a title="http://www.codeplex.com/SQLSrvIntegrationSrv" href="http://www.codeplex.com/SQLSrvIntegrationSrv"&gt;http://www.codeplex.com/SQLSrvIntegrationSrv&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The exciting thing is that these samples include both a binary redistributable and source code, so you can use them as-is if they serve your needs, and customize them if they only get you part way to your destination. The first two samples are an XML Destination component (this is an oft-requested data flow destination, so this is probably going to be the big crowd pleaser) and a Regular Expression Flat File Source component that provides many capabilities above and beyond the built-in Flat File Source.&lt;/p&gt;  &lt;p&gt;You can check out the features on the release page here: &lt;a title="http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=15424" href="http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=15424"&gt;http://www.codeplex.com/SQLSrvIntegrationSrv/Release/ProjectReleases.aspx?ReleaseId=15424&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7121617709637406403?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7121617709637406403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7121617709637406403' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7121617709637406403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7121617709637406403'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/ssis-community-samples-on-codeplex.html' title='SSIS Community Samples on CodePlex'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3360830010314422554</id><published>2008-07-05T10:37:00.001-07:00</published><updated>2008-07-05T10:37:13.349-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Mining'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Check Out This Lineup!</title><content type='html'>&lt;p&gt;I've &lt;a href="http://bi-polar23.blogspot.com/2008/06/bi-for-virtual-guy.html"&gt;posted before&lt;/a&gt; about the &lt;a href="http://www.vconferenceonline.com/business-intelligence"&gt;Business Intelligence Virtual Conference&lt;/a&gt; I'm helping to organize. Even though I have not had much to say about this exciting event in the last few weeks, this doesn't mean that I haven't been feverishly busy making sure that the conference will be great. We're still finalizing the session schedule, but we have the &lt;a href="http://www.vconferenceonline.com/business-intelligence/speakers.asp"&gt;speaker list&lt;/a&gt; nailed down[1]. Check this out:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Donald Farmer&lt;/strong&gt;: Donald is the Principal Program Manager for SQL Server Data Mining at Microsoft and was the Program Manager for SQL Server Integration Services for the SQL Server 2005 RTM release. Donald is always a much sought-after and highly rated speaker, especially when he's talking about his favorite topics like data mining and fish farming.[2]&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Brian Knight&lt;/strong&gt;: Brian is a SQL Server MVP and the author of multiple books on SQL Server Integration Services. He's presented regularly at major conferences like TechEd and PASS, and is a great speaker all around.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Ted Malone&lt;/strong&gt;: Ted is a Visual Studio Team System MVP, but knows more about the Microsoft BI stack than most SQL Server MVPs I know. Ted is also a great speaker who has presented at various conferences on lots of SQL Server related topics.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Matt Masson&lt;/strong&gt;: Matt is a developer on the SQL Server Integration Services team at Microsoft, and worked at Cognos before joining Microsoft. As an SSIS insider, Matt has great insight into the inner workings of the product, and will be sharing them during his sessions.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Sonya McNeal&lt;/strong&gt;: Sonya is a Microsoft Certified Trainer and consultant who specializes in the Microsoft BI stack. She presented some of the highest rated instructor led labs at the TechEd conference in Orlando this June, and will be bringing her many years of training and presenting experience into play for the virtual conference.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Scot Reagin&lt;/strong&gt;: Scot is a SQL Server MVP and a mentor with &lt;a href="http://www.solidq.com/na/Default.aspx"&gt;Solid Quality Mentors&lt;/a&gt; with more than 20 years experience in the database and BI field. Scot has presented at many major conferences including TechEd, PASS and SQL Connections.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Matthew Roche&lt;/strong&gt;: If you're reading my blog hopefully you have some idea who I am, but just in case, I'm a SQL Server MVP, MCT and experienced BI speaker and consultant. I'm honored to be the conference chair for this conference, and will be doing everything in my power[3] to ensure that this conference sets the bar for BI conferences to come.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Craig Utley&lt;/strong&gt;: Craig is a mentor with &lt;a href="http://www.solidq.com/na/Default.aspx"&gt;Solid Quality Mentors&lt;/a&gt;, and used to be a Program Manager on the &lt;a href="http://sqlcat.com/"&gt;SQLCAT&lt;/a&gt; team at Microsoft and is the author of several books. These guys are the best of the best - they're the ones that get called in when no one else can solve the problems. Craig is also a regular presenter who can make even the most complex BI topics easy to understand.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Erik Veerman&lt;/strong&gt;: Erik is a SQL Server MVP and a mentor with &lt;a href="http://www.solidq.com/na/Default.aspx"&gt;Solid Quality Mentors&lt;/a&gt; who has co-authored several books on SQL Server Integration Services and is responsible for the SSIS ETL best practices in Microsoft's &lt;a href="http://www.microsoft.com/sql/solutions/bi/projectreal.mspx"&gt;Project REAL&lt;/a&gt;. Erik is a regular author and presenter on all facets of the Microsoft BI stack.&lt;/li&gt;    &lt;li&gt;&lt;strong&gt;John Welch&lt;/strong&gt;: John is a SQL Server MVP and is the Chief Architect at Mariner, where he is responsible for the full end-to-end Microsoft BI stack. John is an experienced presenter with deep insight into all of Microsoft's BI products.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;What an amazing lineup - I can't adequately express how excited I am to be working with this team. Each speaker will be presenting three sessions (and I'm just as excited about the session list as I am about the speaker list - I can't wait to share it with you) for a total of 30 sessions plus three keynote presentations - one for each day of the conference.&lt;/p&gt;  &lt;p&gt;And remember - the entire virtual conference is just $100 for the full three days, and as I &lt;a href="http://bi-polar23.blogspot.com/2008/07/what-happens-in-bids-stays-in-bids.html"&gt;mentioned in an earlier post&lt;/a&gt;, if you attend the virtual conference you also get a $150 discount off the &lt;a href="http://www.devconnections.com/"&gt;Dev Connections Fall 2008 Conferences this November in Las Vegas&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;How could it get any better than this?&lt;/p&gt;  &lt;p&gt;[1] As of this writing, the &lt;a href="http://www.vconferenceonline.com/business-intelligence/speakers.asp"&gt;speaker list on the conference web site&lt;/a&gt; isn't complete - we're still waiting on a photo from Matt Masson, but everything else is there.&lt;/p&gt;  &lt;p&gt;[2] Don't ask. Trust me. ;-)&lt;/p&gt;  &lt;p&gt;[3] And of course, because I listen to Manowar, my power is pretty much limitless.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3360830010314422554?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3360830010314422554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3360830010314422554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3360830010314422554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3360830010314422554'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/check-out-this-lineup.html' title='Check Out This Lineup!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-927403662869722764</id><published>2008-07-05T09:58:00.001-07:00</published><updated>2008-07-05T09:58:03.084-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Connections, Revisited</title><content type='html'>&lt;p&gt;I just posted about the two breakout sessions I'll be presenting at the &lt;a href="http://www.devconnections.com/shows/FALL2008SQL/default.asp?s=122"&gt;Fall SQL Server Connections Conference&lt;/a&gt; in Las Vegas. Just in case you're wondering if it's worth it, I want to share with you some attendee comments from my session on SSIS deployment at the Spring SQL Server Connections Conference in Orlando:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Good presentation skills.&lt;/li&gt;    &lt;li&gt;Great ideas on guidance I can apply immediately.&lt;/li&gt;    &lt;li&gt;Too crowded! Tables?&lt;/li&gt;    &lt;li&gt;Room was way too small.&lt;/li&gt;    &lt;li&gt;Without question, the best session of the conference. If I had learned nothing else, it would have been worth the trip for his alone.&lt;/li&gt;    &lt;li&gt;Great speaker.&lt;/li&gt;    &lt;li&gt;Really tested me on program terms. Presenter was fabulous!&lt;/li&gt;    &lt;li&gt;Good jokes.[1]&lt;/li&gt;    &lt;li&gt;Outstanding!&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;As you can see, we had an excellent time in Orlando. We were a little crowded - it was standing room only room - but we didn't let that slow us down, and now that the conference organizers understand just what a big draw SSIS can be, we should not run into the same problem in Vegas.&lt;/p&gt;  &lt;p&gt;Do you notice anything else about these comments? Everyone had fun. SSIS is such an exciting and interesting topic[2] that people had no choice but to learn a lot. And of course the fall sessions are only going to be better, so plan on being there!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] I'm not honestly sure what this guy was smoking - this is a comment I've never seen before. ;-)   &lt;br /&gt;[2] Well, I think so anyway, and since I'm the one on stage for these sessions my passion will be contagious - if you're there you'll catch it too.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-927403662869722764?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/927403662869722764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=927403662869722764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/927403662869722764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/927403662869722764'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/sql-connections-revisited.html' title='SQL Connections, Revisited'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5034118501074555872</id><published>2008-07-05T09:48:00.001-07:00</published><updated>2008-07-05T09:48:34.973-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Training'/><category scheme='http://www.blogger.com/atom/ns#' term='Presentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>What Happens in BIDS, Stays in BIDS</title><content type='html'>&lt;p&gt;That's right - it's time to start planning for the &lt;a href="http://www.devconnections.com/shows/FALL2008SQL/default.asp?s=122"&gt;Fall 2008 SQL Server Connections Conference in Las Vegas&lt;/a&gt;. It's going to be held at the Manadalay Bay Resort and Casino from November 10th through November 13th, and there are &lt;a href="http://www.devconnections.com/shows/FALL2008SQL/default.asp?c=1&amp;amp;s=122"&gt;lots of excellent sessions&lt;/a&gt; scheduled. In fact, I will be delivering two SQL Server Integration Services sessions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;SQL Server Integration Services Development Best Practices       &lt;br /&gt;&lt;/strong&gt;Are you tired of feeling like you&amp;#8217;re making the same mistakes over and over again? Would you like to have a roadmap that outlines the pitfalls you&amp;#8217;re likely to encounter when building ETL solutions with SSIS? Then this session is for you! You&amp;#8217;ll learn how to get the most from the SSIS tools and platform through a set of SSIS development best practices from a battle-scarred database and BI consultant who has survived the rough projects and lived to tell the tale. &lt;/p&gt;    &lt;p&gt;&lt;strong&gt;SQL Server Integration Services Performance Tuning and Optimization&lt;/strong&gt;      &lt;br /&gt;SSIS packages have many capabilities, from control flow to event handlers to scripting. But the SSIS data flow is where the decisions you make will have the greatest impact on the performance of your packages. In this session, you&amp;#8217;ll learn what&amp;#8217;s going on under the hood in the SSIS data flow pipeline, and how to take advantage of that knowledge to make your packages perform better. You&amp;#8217;ll also learn general tips and tricks to improve SSIS package performance and how to get the most out of your packages. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Sound like fun? Well, it gets even better! &lt;/p&gt;  &lt;p&gt;Do you remember the &lt;a href="http://www.vconferenceonline.com/business-intelligence"&gt;Business Intelligence Virtual Conference&lt;/a&gt; I mentioned a &lt;a href="http://bi-polar23.blogspot.com/2008/06/bi-for-virtual-guy.html"&gt;few weeks back&lt;/a&gt;? I'll post more information about the virtual conference once we get the session schedule finalized, but for now you should know that if you attend the Business Intelligence Virtual Conference - $100 for three days worth of amazing content - you will get a $150 discount for the Fall SQL Server Connections conference.&lt;/p&gt;  &lt;p&gt;How cool is that? If you're planning on attending the SQL Server Connections conference (or &lt;a href="http://www.devconnections.com/"&gt;any of the Dev Connections conferences&lt;/a&gt; being held at the same time, because a ticket to one gets you admission to all of them) then we're essentially paying you $50 to attend the Business Intelligence Virtual Conference. That's like $50 better than free, which in my book is pretty darned cool.&lt;/p&gt;  &lt;p&gt;So start planning now, and I'll look for you in Las Vegas!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5034118501074555872?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5034118501074555872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5034118501074555872' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5034118501074555872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5034118501074555872'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/what-happens-in-bids-stays-in-bids.html' title='What Happens in BIDS, Stays in BIDS'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-5956657880438362444</id><published>2008-07-03T16:21:00.001-07:00</published><updated>2008-07-03T16:21:44.547-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Data Visualization Gone Wrong</title><content type='html'>&lt;p&gt;Or perhaps gone horribly, horribly right.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://graphjam.com" href="http://graphjam.com"&gt;http://graphjam.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I must say &amp;quot;thank you&amp;quot; to Ken for sharing this URL. We all knew that &lt;a href="http://bi-polar23.blogspot.com/2007/08/swearing-lot-today.html"&gt;charts and graphs could be staggeringly funny&lt;/a&gt;, but we never knew just how funny they could be. Until now.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-5956657880438362444?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/5956657880438362444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=5956657880438362444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5956657880438362444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/5956657880438362444'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/data-visualization-gone-wrong.html' title='Data Visualization Gone Wrong'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3003311119352262177</id><published>2008-07-01T12:25:00.001-07:00</published><updated>2008-07-01T12:25:48.540-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Outlook and Time Zones</title><content type='html'>&lt;p&gt;I travel quite a bit for work (and occasionally for pleasure) and I like to track my itineraries in Outlook so I don't lose track of things and miss my flights. This also allows me to have everything at my fingertips on my Windows Mobile phone, which makes my life so much simpler.&lt;/p&gt;  &lt;p&gt;The problem with this is that most of my travel crosses multiple time zones - I will be departing from New York, but I may be landing in Seattle or Denver or Frankfurt. And that means that I need to &amp;quot;do the math&amp;quot; to ensure that the times I'm entering into my Outlook appointments are appropriately adjusted for the differences between my local time zone and the time zone for wherever I will be landing.&lt;/p&gt;  &lt;p&gt;But not any more.&lt;/p&gt;  &lt;p&gt;I've just discovered[1] the &amp;quot;Time Zone&amp;quot; button in Outlook 2007:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGqEups8M7I/AAAAAAAAAfY/0DemNf-rkY0/s1600-h/7-1-2008%201-56-35%20PM%5B5%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="262" alt="You know where I&amp;#39;ll be!" src="http://lh5.ggpht.com/matthewmct/SGqEu2P_7dI/AAAAAAAAAfc/7ew6pXAQAoE/7-1-2008%201-56-35%20PM_thumb%5B3%5D.png?imgmax=800" width="374" border="0" /&gt;&lt;/a&gt; [2]&lt;/p&gt;  &lt;p&gt;When you click on the Time Zones button, two drop-down lists appear, one for the time zone of the appointment start time, and one for the time zone of the appointment end time. How cool is that? This is going to save me so much time (and aggravation, because there few things more annoying than suffering because of your own mistakes) in the weeks and months ahead. &lt;/p&gt;  &lt;p&gt;Now if I could just figure out how to make it so that these drop-down lists are always visible by default...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Yes, this is the appropriate time to let me know that this has been there since Outlook 2000 or the like - I am often the last to know.&lt;/p&gt;  &lt;p&gt;[2] I'm not going to show you one of my actual flight itineraries (you never know what stalkers are out there ;-) but I will show one of the highlights of the yeah - Manowar headlining the Magic Circle Festival next month in Germany. Will you be there too?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3003311119352262177?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3003311119352262177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3003311119352262177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3003311119352262177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3003311119352262177'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/outlook-and-time-zones.html' title='Outlook and Time Zones'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/matthewmct/SGqEu2P_7dI/AAAAAAAAAfc/7ew6pXAQAoE/s72-c/7-1-2008%201-56-35%20PM_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2916791415372007514</id><published>2008-07-01T09:07:00.001-07:00</published><updated>2008-07-01T09:07:44.550-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Work'/><title type='text'>Congratulations, Ted!</title><content type='html'>&lt;p&gt;Congratulations are in order - my friend and colleague &lt;a href="http://portal.sqltrainer.com/"&gt;Ted Malone&lt;/a&gt; has been awarded the Microsoft Most Valuable Professional award for Visual Studio Team System. So take a moment and send Ted a word of congratulations, and remember to ask him &amp;quot;What's a NUMA?&amp;quot; while you're at it.&lt;/p&gt;  &lt;p&gt;Keep up the great work, Ted!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2916791415372007514?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2916791415372007514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2916791415372007514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2916791415372007514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2916791415372007514'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/congratulations-ted.html' title='Congratulations, Ted!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2320867233875832297</id><published>2008-07-01T08:03:00.001-07:00</published><updated>2008-07-01T08:03:44.447-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS - Changing Variable Scope</title><content type='html'>&lt;p&gt;If you read my &lt;a href="http://bi-polar23.blogspot.com/2008/07/snagit.html"&gt;last blog post about SnagIt&lt;/a&gt;, you already know that when I was creating the package for my &amp;quot;&lt;a href="http://bi-polar23.blogspot.com/2008/06/looking-for-date-what-in-name.html"&gt;putting dates in file names&lt;/a&gt;&amp;quot; blog post, I inadvertently created the variables at the data flow scope, when I needed to create them at the package scope instead. And if you've spent much time working with SSIS, you know that this means I had to delete all of the variables and re-create them, setting all of their properties and expressions all over again.&lt;/p&gt;  &lt;p&gt;What a pain. The SSIS tools in Visual Studio will let you change just about any property of a variable, but not the variable scope. There should be some tool to do this, right?&lt;/p&gt;  &lt;p&gt;Right!&lt;/p&gt;  &lt;p&gt;Well, this is a new feature that is being added to the &lt;a href="http://www.codeplex.com/bidshelper/"&gt;BIDS Helper&lt;/a&gt; Visual Studio Add-In project on CodePlex. Check out the details here: &lt;a title="http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Variables%20Window%20Extensions&amp;amp;version=2" href="http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Variables%20Window%20Extensions&amp;amp;version=2"&gt;http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Variables%20Window%20Extensions&amp;amp;version=2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As with quite a few interesting recent additions to BIDS Helper, this feature is not yet part of a major release, so you'll need to download the source code and build it yourself, but this is relatively simple. Hopefully the project team will have version 1.3 locked down and ready for public release soon, but in the meantime you can get it if you want it. I just wish I'd had it when I was building that sample package...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2320867233875832297?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2320867233875832297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2320867233875832297' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2320867233875832297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2320867233875832297'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/ssis-changing-variable-scope.html' title='SSIS - Changing Variable Scope'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4943298719566504795</id><published>2008-07-01T07:51:00.001-07:00</published><updated>2008-07-01T07:51:29.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><title type='text'>SnagIt++</title><content type='html'>&lt;p&gt;I &lt;a href="http://bi-polar23.blogspot.com/2007/08/snag-better-bugs.html"&gt;blogged on TechSmith's delightful SnagIt application&lt;/a&gt; almost a year ago and have been using it daily ever since. &lt;a href="http://www.techsmith.com/screen-capture.asp"&gt;SnagIt&lt;/a&gt; is one of those applications that's kind of hard to describe (why would anyone spend money for something like this when you get Print Screen and Paint for free with Windows, right?) but once you start using it you wonder how you ever lived without it. Every blog post that you've seen here[1] that has screen shots has been written with the help of SnagIt.&lt;/p&gt;  &lt;p&gt;And now it's gotten a lot better.&lt;/p&gt;  &lt;p&gt;Last month TechSmith released SnagIt version 9, with a whole slew of new features and capabilities. There are too many to list here, so you can check out the &lt;a href="http://www.techsmith.com/snagit/whatsnew.asp"&gt;What's New&lt;/a&gt; page if you're interested - the thing that blows me away is the capture organizer - when you capture an image, it goes into a tray where you can save it, edit it, delete it or just plain ignore it if you're not ready to do anything else just yet. This provides an amazing degree of flexibility, and makes working with a large number of captures (such as documenting a I workflow through still images) a trivial task.&lt;/p&gt;  &lt;p&gt;As a case in point, &lt;a href="http://bi-polar23.blogspot.com/2008/06/looking-for-date-what-in-name.html"&gt;my last blog post&lt;/a&gt; has a total of 19 screen captures, some of which were taken out of order[2]. Think about how you would traditionally do that; if you're like me,this would involve saving the files with sequentially-numbered file names, and then re-naming them as necessary. With SnagIt 9 this was simply a matter of capturing all of the images I thought I might need, deleting the ones I didn't need, and then saving the ones I decided to use once all of the writing was done. I love it.&lt;/p&gt;  &lt;p&gt;And the best thing is that TechSmith offers a free trial version for download, and the full version is only $49.95. And no, they're not paying me anything for this recommendation - SnagIt is just one of those tools that I use every day that not enough people seem to know. Check it out and see for yourself!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Or forum posts, book chapters, or articles - anything!&lt;/p&gt;  &lt;p&gt;[2] I inadvertently created the variables I used for this post at the wrong scope, so I ended up going back and deleting and recreating them, and had to re-capture all of the images of the Variables window. What a pain.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4943298719566504795?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4943298719566504795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4943298719566504795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4943298719566504795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4943298719566504795'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/07/snagit.html' title='SnagIt++'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6085863365374827687</id><published>2008-06-27T09:31:00.001-07:00</published><updated>2008-06-27T09:31:43.361-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Looking for a Date - What's in a Name?</title><content type='html'>&lt;p&gt;I've blogged about &lt;a href="http://bi-polar23.blogspot.com/2008/02/dynamic-flat-file-destinations.html"&gt;using SSIS to create text files with dynamic file names&lt;/a&gt; before, but there's another scenario that keeps coming up time and again. It looks something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;I need to export data from a database into a text file. I have this working, but I need the text file to have a name that's based on the current date, like MyOutputFilePrefix_YYYY-MM-DD-HH-MM-SS.txt. How do I do this?&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It should come as no surprise that the short answer is &amp;quot;use expressions.&amp;quot; Expressions are (in my humble opinion, of course) the single most powerful feature in the SSIS developer's toolbox, and are the primary mechanism for adding dynamic functionality to SSIS packages.&lt;/p&gt;  &lt;p&gt;Bur of course &amp;quot;use expressions&amp;quot; doesn't give you all the information you need, so here is a quick walkthrough that shows all of the steps involved.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start off by creating or locating a flat file that has the format that you need. This will give you a head-start for configuring your Flat File Connection Manager later on. Since I'm working on a simple demo, my text file is appropriately simple:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SGUVu1vmmGI/AAAAAAAAAc8/tUCYGaNO6Uw/s1600-h/01%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="289" alt="01" src="http://lh5.ggpht.com/matthewmct/SGUVvfbCWoI/AAAAAAAAAdA/bBo9gXlID9I/01_thumb%5B1%5D.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next, add a Flat File Connection Manager to your SSIS package, and update its properties to reference the sample flat file you created above:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUVvrUWzAI/AAAAAAAAAdE/dYB3siTNwiE/s1600-h/02%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="374" alt="02" src="http://lh4.ggpht.com/matthewmct/SGUVwCFSJ9I/AAAAAAAAAdI/oWIqqRCMo2U/02_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Make sure that the columns you defined in the file are being parsed correctly:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUVwXi71pI/AAAAAAAAAdM/35Ugx0JYOI0/s1600-h/03%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="374" alt="03" src="http://lh5.ggpht.com/matthewmct/SGUVwqcxtFI/AAAAAAAAAdQ/Ku9pPhHIuo0/03_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt; &lt;/li&gt;    &lt;li&gt;And update the properties (generally the data type) of the columns as needed. In this scenario, we're setting the data type of the ID column to be a four-byte signed integer:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUVw-Ko_EI/AAAAAAAAAdU/kH-BNl3vI4Y/s1600-h/04%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="374" alt="04" src="http://lh5.ggpht.com/matthewmct/SGUVxGCff8I/AAAAAAAAAdY/_d-xh1ujD9k/04_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next, add an OLE DB Connection Manager (or whatever makes sense for your source database) to your package, configure it as necessary[1], and add a Data Flow task to the package as well:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUVxVy-0TI/AAAAAAAAAdc/VuPqGcdfcEA/s1600-h/05%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="289" alt="05" src="http://lh5.ggpht.com/matthewmct/SGUVx8WIscI/AAAAAAAAAdg/QvGIIJ5-4qI/05_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Inside the Data Flow task, add an OLE DB Source component (or whatever makes sense for your source database) and configure it with your source query:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUVyMNgGAI/AAAAAAAAAdk/HfNDYHdOGmM/s1600-h/06%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="358" alt="06" src="http://lh4.ggpht.com/matthewmct/SGUVyixg6VI/AAAAAAAAAdo/MXMppjqzk8A/06_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next, add a Flat File Destination component to the data flow and connect it to the source component:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SGUVy3JOfFI/AAAAAAAAAds/spr8jyZ0dHs/s1600-h/07%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="289" alt="07" src="http://lh3.ggpht.com/matthewmct/SGUVzAdFZMI/AAAAAAAAAdw/x-xSUXiQRzk/07_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Configure the Flat File Destination to use the Flat File Connection Manager and ensure that its column mappings are configured correctly:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUVzXjzotI/AAAAAAAAAd0/Hcvds0rIfvQ/s1600-h/08a%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="384" alt="08a" src="http://lh5.ggpht.com/matthewmct/SGUVzo1xk_I/AAAAAAAAAd4/ysQHrxrUcLg/08a_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUV0Mgoa7I/AAAAAAAAAd8/kU04EYXvGIM/s1600-h/08b%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="358" alt="08b" src="http://lh3.ggpht.com/matthewmct/SGUV0Rq0xwI/AAAAAAAAAeA/gQuh1O-5Utg/08b_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Run the package to make sure that it works:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/matthewmct/SGUV0ltE44I/AAAAAAAAAeE/zb_MbfMiyIQ/s1600-h/09%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="301" alt="09" src="http://lh4.ggpht.com/matthewmct/SGUV1FqasAI/AAAAAAAAAeI/2Tfy-00zpjc/09_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;And test it by checking the contents of the target text file:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUV1ZIDpEI/AAAAAAAAAeM/PIRlHWl_toE/s1600-h/10%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="289" alt="10" src="http://lh3.ggpht.com/matthewmct/SGUV1lD_1iI/AAAAAAAAAeQ/YAJPgUUYunc/10_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;And now we're ready to start. That's right, the last 10 steps were included to show how I got to the starting point for adding the dynamic functionality that is the whole point of the post. What we've done above is set up a simple package and data flow that exports data to a text file, which is (I assume) where the people who keep asking the question at the top of the post are getting stuck. And since we walked through it step-by-step together, everyone can see that there is no prestidigitation involved.     &lt;br /&gt;So let's start off by creating three different package variables, Foldername, FileName and FilePath:      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUV1gw-FwI/AAAAAAAAAeU/bR2GOgNDfTg/s1600-h/11%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="241" alt="11" src="http://lh4.ggpht.com/matthewmct/SGUV2SJtqeI/AAAAAAAAAeY/8XjszFQ8SUE/11_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Set the value property of the FolderName variable to the path of the folder where you want your files to be created:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUV2jUaGcI/AAAAAAAAAec/cc3UEkhPjxY/s1600-h/12%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="12" src="http://lh4.ggpht.com/matthewmct/SGUV3Obe7_I/AAAAAAAAAeg/0OrOMmiAQFs/12_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Set the EvaluateAsExpression property of the FileName variable to True and set the Expression property to this expression:     &lt;br /&gt;&lt;/li&gt;    &lt;p&gt;&amp;quot;MyOutputFilePrefix_&amp;quot; + (DT_WSTR,4)YEAR(@[System::StartTime]) + &amp;quot;-&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + RIGHT(&amp;quot;0&amp;quot; + (DT_WSTR,2)MONTH(@[System::StartTime]), 2) + &amp;quot;-&amp;quot;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + RIGHT(&amp;quot;0&amp;quot; + (DT_WSTR,2)DAY( @[System::StartTime]), 2) + &amp;quot;-&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + RIGHT(&amp;quot;0&amp;quot; + (DT_WSTR,2)DATEPART(&amp;quot;hh&amp;quot;, @[System::StartTime]), 2) + &amp;quot;-&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + RIGHT(&amp;quot;0&amp;quot; + (DT_WSTR,2)DATEPART(&amp;quot;mi&amp;quot;, @[System::StartTime]), 2) + &amp;quot;-&amp;quot;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; + RIGHT(&amp;quot;0&amp;quot; + (DT_WSTR,2)DATEPART(&amp;quot;ss&amp;quot;, @[System::StartTime]), 2) + &amp;quot;.txt&amp;quot;&lt;/p&gt;    &lt;p&gt;This will evaluate to a filename like MyOutputFilePrefix_YYYY-MM-DD-HH-MM-SS.txt, as requested above. [2]     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGUV3vdmNpI/AAAAAAAAAek/xyPDmPsmrvo/s1600-h/13a%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="350" alt="13a" src="http://lh3.ggpht.com/matthewmct/SGUV4J6RmgI/AAAAAAAAAeo/jwt9f2xiyPU/13a_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUV48-EAGI/AAAAAAAAAes/heKynOIyLvM/s1600-h/13b%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="13b" src="http://lh6.ggpht.com/matthewmct/SGUV5GZsKGI/AAAAAAAAAew/Itus4kWGyNM/13b_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;li&gt;Set the EvaluateAsExpression property of the FilePath variable to True and set the Expression property to this expression:     &lt;br /&gt;      &lt;br /&gt;@[User::FolderName] +&amp;#160; @[User::FileName]      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SGUV5U2ATcI/AAAAAAAAAe0/5Wbtejlmsgs/s1600-h/14%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="14" src="http://lh3.ggpht.com/matthewmct/SGUV5oED9jI/AAAAAAAAAe4/xD-nfKsZpr4/14_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/li&gt;    &lt;li&gt;At this point we have a variable, FilePath, that will always evaluate to a fully qualified file path that is dynamically updated to reflect the time the package started executing. This is exactly what we need, right? So the one thing that remains to be done is to use this value to create the files being exported by the data flow. And to do this we just need to update the Flat File Connection Manager to base its ConnectionString property on this expression:     &lt;br /&gt;      &lt;br /&gt;@[User::FilePath]      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUV5pllGDI/AAAAAAAAAe8/FOZg-nySMRE/s1600-h/15a%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="290" alt="15a" src="http://lh6.ggpht.com/matthewmct/SGUV50mpJTI/AAAAAAAAAfA/abi5AKGRr6s/15a_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUV6Fa7zGI/AAAAAAAAAfE/VASkmIJsmNU/s1600-h/15b%5B2%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="319" alt="15b" src="http://lh3.ggpht.com/matthewmct/SGUV6buIGzI/AAAAAAAAAfI/rVBciM_Q0uM/15b_thumb.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Then, run the package a few times, and take a look in the output folder:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGUV7NIbN3I/AAAAAAAAAfM/F_OB7NtPibU/s1600-h/16%5B5%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="174" alt="16" src="http://lh4.ggpht.com/matthewmct/SGUV7oLMJHI/AAAAAAAAAfU/F9c6mWAIesw/16_thumb%5B1%5D.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;&amp;#160; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Pretty simple, eh? Once we had the base package (the starting point for the whole exercise) set up, it was simply a matter of setting a few property expressions to make the whole thing work as needed. &lt;/p&gt;  &lt;p&gt;It's also worth noting that the technique where there are three variables to contain the file path is completely optional as well - you could just as easily build a single (although admittedly more complex) expression for the ConnectionString property, and skip the variables entirely. I personally prefer having the variables to contain the intermediate values that go into the file path because in most situations there are opportunities for reuse of these intermediate values, and having them stored in variables make that reuse very simple.&lt;/p&gt;  &lt;p&gt;And of course, you can easily update the FileName expression as needed to get the file name you require. The SQLIS.com wiki has a &lt;a href="http://wiki.sqlis.com/default.aspx/SQLISWiki/ExpressionDateFunctions.html"&gt;page dedicated to date expressions&lt;/a&gt;, and I will generally start there whenever I need to write a date expression myself. In fact, you'll probably notice that the expression I used for the FileName variable was blatantly stolen (and then modified just a little) from one of the examples on the SQLIS wiki site.&lt;/p&gt;  &lt;p&gt;So once again we've witnessed the power of expressions in SSIS. By setting just a few properties to evaluate as expressions, we've quickly and easily added dynamic functionality to a package. What could be better?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Since the purpose of this post is to focus on the dynamic file name, I'm being deliberately vague here. This is stuff that you should know already, so if you don't, check here: &lt;a title="New to SSIS- Start Here!" href="http://bi-polar23.blogspot.com/2008/03/new-to-ssis-start-here.html"&gt;New to SSIS- Start Here!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;[2] Although this example is using the @[System::StartTime] variable, you can use any date variable (or function, like GETDATE) for your expressions - use the one that makes the most sense for you. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6085863365374827687?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6085863365374827687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6085863365374827687' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6085863365374827687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6085863365374827687'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/looking-for-date-what-in-name.html' title='Looking for a Date - What&amp;#39;s in a Name?'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/matthewmct/SGUVvfbCWoI/AAAAAAAAAdA/bBo9gXlID9I/s72-c/01_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-884321569542118511</id><published>2008-06-25T12:16:00.001-07:00</published><updated>2008-06-25T12:16:31.275-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>BIDS Helper and SSIS Deployment</title><content type='html'>&lt;p&gt;Back in November I &lt;a href="http://bi-polar23.blogspot.com/2007/11/bids-helper-12-released.html"&gt;posted about the 1.2 release&lt;/a&gt; of the amazing &lt;a href="http://www.codeplex.com/bidshelper"&gt;BIDS Helper project on CodePlex&lt;/a&gt; and the new SSIS-related features it included. Well, the folks who contribute to the BIDS Helper project have been hard at work getting ready for their 1.3 release, and today they checked into TFS the first set of features designed to provide real-world deployment capabilities from within the Visual Studio (BIDS) development environment.&lt;/p&gt;  &lt;p&gt;Now, not only can you create the standard deployment manifest[1] you can also deploy automatically and (here's the exciting part!) have BIDS Helper automatically create a batch file that calls DTUTIL each time you build your project.&lt;/p&gt;  &lt;p&gt;How cool is that!&lt;/p&gt;  &lt;p&gt;The reason I'm so excited about low-tech batch files is that they are incredibly simple to integrate into any deployment process, and they're completely hands-free. They may not be sexy, but they're close to perfect nonetheless.&lt;/p&gt;  &lt;p&gt;Take a look here for more information: &lt;a href="http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Deploy SSIS Packages"&gt;http://www.codeplex.com/bidshelper/Wiki/View.aspx?title=Deploy SSIS Packages&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The bad news is that version 1.3 is not yet ready for release, so if you want to start taking advantage of this functionality you will need to download the BIDS Helper source code and compile it yourself. Which I am now about to do...&lt;/p&gt;  &lt;p&gt;[1] Which seems like a good start, but quickly becomes a dead-end, because it is dependent on a user clicking and typing every time it is used, which makes it very undesirable in a real-world deployment scenario.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-884321569542118511?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/884321569542118511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=884321569542118511' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/884321569542118511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/884321569542118511'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/bids-helper-and-ssis-deployment.html' title='BIDS Helper and SSIS Deployment'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-3982329821314861714</id><published>2008-06-25T05:27:00.001-07:00</published><updated>2008-06-25T05:27:20.261-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS and SQL Server Agent - Choosing the Right Job Step Type</title><content type='html'>&lt;p&gt;My &amp;quot;&lt;a href="http://bi-polar23.blogspot.com/2007/12/ssis-and-sql-server-agent.html"&gt;SSIS and SQL Server Agent&lt;/a&gt;&amp;quot; post is the most frequently accessed post on my blog, or at least it has been for the two months that I've actually been tracking site usage. But some &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3533795&amp;amp;SiteID=1"&gt;recent posts&lt;/a&gt; on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1"&gt;SSIS Forums on MSDN&lt;/a&gt; have made me realize that it was probably long overdue for a follow-up focused choosing the correct job step type.&lt;/p&gt;  &lt;p&gt;Microsoft has provided two different SQL Server Agent job step&amp;#160; types that you can use to execute SQL Server Integration Services Packages:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The &amp;quot;SQL Server Integration Services Package&amp;quot; job step type&lt;/li&gt;    &lt;li&gt;The &amp;quot;Operating system (CmdExec)&amp;quot; job step type.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now which one leaps out at you as being ideal for running SQL Server Integration Services packages?&lt;/p&gt;  &lt;p&gt;Unfortunately, despite the name and the oh-so-friendly GUI through which you can specify all sorts of options, the SQL Server Integration Services Package job step type is not the one you want to use. There are quite a few reasons I believe this (and it's worth pointing out that while there are people who agree with me, there are some very talented SSIS people out there who do not) including:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Consistency: You can create a batch file that calls DTEXEC, test that execution outside of SQL Server Agent, and then copy and paste the DTEXEC command line into the SQL Server Agent job. This minimizes the number of environmental variables[1] that change between testing package execution outside of SQL Server Agent and testing package execution within a SQL Server Agent job.&lt;/li&gt;    &lt;li&gt;Discoverability: I realize that this won't apply to everyone, but I personally find it much simpler to look at command line switches and options than to look at nine different tabs in a tabbed window. Looking at the command line I know that I'm seeing everything. Looking through the tabs, I'm pretty sure I'm going to miss something. &lt;/li&gt;    &lt;li&gt;Troubleshooting and Error Output: This is the big one. When you run a package through the SQL Server Integration Services Package job step type, you're limited to the error logging that is already configured within the package itself, and this isn't always sufficient to diagnose and resolve problems with the job. But when you execute a package through DTEXEX and the the CmdExec job step type, you have more options that make tracking down and resolving problems much simpler.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;So how do you do it? And do you really want to, if you're not one of those weird people who would rather have a command line than a GUI?&lt;/p&gt;  &lt;p&gt;Well, the answer to the second question here is yes. Yes you do. Because even though you're using the CmdExec job step type, you still have a GUI to use. And here's how.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Double-click on the package you want to run.[2] This will open up DTEXECUI, the Execute Package Utility.&lt;/li&gt;    &lt;li&gt;In DTEXECUI, specify all of the options that you need by using its nice friendly GUI.&lt;/li&gt;    &lt;li&gt;On the Command Line tab in DTEXECUI, highlight and copy the Command line text - these are the switches and options that need to be specified for DTEXEC to duplicate the options you selected in the GUI:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGI5oyfU7EI/AAAAAAAAAck/4YW0ITyIPTg/s1600-h/00%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="312" alt="Use DTEXECUI to build your command line" src="http://lh4.ggpht.com/matthewmct/SGI5pJV92FI/AAAAAAAAAco/VEWuATnRrrU/00_thumb%5B1%5D.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;In you SQL Server Agent job, add a new job step, and specify the job step type as CmdExec. In the Command text box, type DTEXEC and a space, and then paste the command line text that you copied from DTEXECUI earlier[3]:     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SGI5pUNqZCI/AAAAAAAAAcs/MtmA8g-USLs/s1600-h/01%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="326" alt="Paste the command line text into your job step" src="http://lh6.ggpht.com/matthewmct/SGI5pQeOW7I/AAAAAAAAAcw/MM03A8QPgjo/01_thumb%5B1%5D.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;On the advanced tab of the New Job Step dialog box, enter a file path and name in the Output File text box. (This is the big thing.) With this specified, the output from DTEXEC, which is exactly what you want when troubleshooting problems, will be written to a text file. You can also specify whether the file should be overwritten or appended to with each execution.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SGI5pkzY8xI/AAAAAAAAAc0/wurA-j7V3I4/s1600-h/02%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="326" alt="Specify an output file for the job step" src="http://lh3.ggpht.com/matthewmct/SGI5pyG1aAI/AAAAAAAAAc4/37oIMWrFQis/02_thumb%5B1%5D.png?imgmax=800" width="364" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Now, when you execute your SQL Server Agent job, all DTEXEC output will be written to this text file. And if something goes wrong, you now have a single, easy to use location for tracking down and resolving the problems. &lt;/p&gt;  &lt;p&gt;One of the most common things that the MVPs and other people who help out on the SSIS forums request is &amp;quot;the complete set of error messages and warnings from the package execution.&amp;quot;[4] The reason we ask for this is that it's pretty much impossible to remotely troubleshoot someone else's problems without complete and explicit output. And the greatest thing about using the CmdExec job step type is that all of this information is now in one place. Copy and paste the errors and warnings, and help is (hopefully) on your way.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Not Windows environment variables - I'm talking here about &amp;quot;things that are important to your deployment environment.&amp;quot;&lt;/p&gt;  &lt;p&gt;[2] If your package is stored in SQL Server and not on the file system, you can still use this basic technique, but you will have to browse to and select the package from within DTEXECUI, as opposed to double-clicking on the package on the file system.&lt;/p&gt;  &lt;p&gt;[3] You can also specify the fully qualified path to DTEXEC.EXE - this is helpful if DTEXEC is not on the path, or if you're on a 64-bit server and want to explicitly select the 32- or 64-bit version of DTEXEC for this package.&lt;/p&gt;  &lt;p&gt;[4] And we're not the only ones who ask for this. Your in-house support folks will probably ask for the same thing if you have a support team who works with SSIS.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-3982329821314861714?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/3982329821314861714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=3982329821314861714' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3982329821314861714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/3982329821314861714'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/ssis-and-sql-server-agent-choosing.html' title='SSIS and SQL Server Agent - Choosing the Right Job Step Type'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/matthewmct/SGI5pJV92FI/AAAAAAAAAco/VEWuATnRrrU/s72-c/00_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-461297578299523988</id><published>2008-06-23T12:45:00.001-07:00</published><updated>2008-06-23T12:45:32.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>File Name Expressions</title><content type='html'>&lt;p&gt;A &lt;a href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3516904&amp;amp;SiteID=1"&gt;recent post&lt;/a&gt; on the &lt;a href="http://forums.microsoft.com/msdn/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1"&gt;SSIS Forums on MSDN&lt;/a&gt; reminded me how anti-intuitive it can sometimes be to work with SSIS expressions. For example, it's quite common (such as when using the File enumerator for the Foreach Loop container) to have a package variable that contains the fully-qualified file name of a file. But what if you need only a portion of the file name?&lt;/p&gt;  &lt;p&gt;Well, the obvious answer (as I mentioned in &lt;a href="http://bi-polar23.blogspot.com/2008/03/express-yourself.html"&gt;an earlier post on expressions&lt;/a&gt;) is to look at the &lt;a href="http://wiki.sqlis.com/default.aspx/SQLISWiki/Expressions.html"&gt;SQLIS.com Wiki&lt;/a&gt; for expression examples, because there are some good examples up there, including &lt;a href="http://wiki.sqlis.com/default.aspx/SQLISWiki/ExpressionSamples.html"&gt;these first two&lt;/a&gt;. So here are a few more, each of which includes sample output for this sample input:&lt;/p&gt;  &lt;p&gt;C:\Projects2008\RC0_SSIS_Test\RC0_SSIS_Test\FileExpressions.dtsx&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Get the filename from a full file path:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;RIGHT( @[User::FileName], FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;\\&amp;quot;, 1 ) - 1 )&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Output: &lt;/strong&gt;FileExpressions.dtsx&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Get the directory from a full file path:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;SUBSTRING( @[User::FileName], 1, LEN( @[User::FileName] ) - FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;\\&amp;quot;, 1 ) )&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Output: &lt;/strong&gt;C:\Projects2008\RC0_SSIS_Test\RC0_SSIS_Test&lt;/p&gt;  &lt;p&gt;But what if your needs are covered there? Well, here are a few more examples:&lt;/p&gt;  &lt;p&gt;Get the file extension from a full file path or file name:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;RIGHT( @[User::FileName], FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;.&amp;quot;, 1 ) - 1 )&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Output: &lt;/strong&gt;dtsx&lt;/p&gt;  &lt;p&gt;Get the file name minus the extension from a full file path:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;SUBSTRING (@[User::FileName], LEN( @[User::FileName] ) - FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;\\&amp;quot;, 1) + 2,&amp;#160; LEN (RIGHT( @[User::FileName], FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;\\&amp;quot;, 1 ) - 1 ) ) - FINDSTRING( REVERSE( @[User::FileName] ), &amp;quot;.&amp;quot;, 1 )&amp;#160; )&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;Output: &lt;/strong&gt;FileExpressions&lt;/p&gt;  &lt;p&gt;Expressions are probably the single most powerful tool in the SSIS developer's toolset, so the more you use them the more you're likely to love them. But sometimes having a few good examples is the best way to get over the initial learning curve.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-461297578299523988?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/461297578299523988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=461297578299523988' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/461297578299523988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/461297578299523988'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/file-name-expressions.html' title='File Name Expressions'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6238022652122430864</id><published>2008-06-20T10:40:00.002-07:00</published><updated>2008-06-24T14:55:34.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>BI for the Virtual Guy</title><content type='html'>&lt;p&gt;Yeah, I know I'm stretching for the title of this post, but my allergies are killing me today and this is really the best I can do at the moment. &lt;/p&gt;&lt;p&gt;So what's this "Virtual" bit all about. It's about the first-ever &lt;a href="http://www.sswug.org/"&gt;SSWUG&lt;/a&gt; Virtual Business Intelligence Conference, coming this September to a computer near you. I'm in the process of helping to organize the conference and I've been having a blast. We have quite a few great BI speakers lined up and are in the process of finalizing the lists of speakers and sessions.[1]&lt;/p&gt;&lt;p&gt;But why do I mention this today? &lt;/p&gt;&lt;p&gt;SSWUG is about to kick off its second &lt;a href="http://www.vconferenceonline.com/sswug/"&gt;SQL Server Virtual Conference&lt;/a&gt; next week - it's being held from June 24 to June 26. And I'm excited that I get to attend. The reason I'm excited about attending is the very cool format of the conference - check this out:&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.vconferenceonline.com/sswug/demo.asp" href="http://www.vconferenceonline.com/sswug/demo.asp"&gt;http://www.vconferenceonline.com/sswug/demo.asp&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The virtual conference format pulls together the best of "real" in-person conferences, along with the best of an online learning experience. The video on the page above shows footage from the first SQL Server Virtual Conference[2] and although the video has catchier music than you're likely to get during the actual sessions, it gives you a great taste of what the virtual conference format has to offer, such as :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;High-definition video&lt;/li&gt;&lt;li&gt;High-quality audio&lt;/li&gt;&lt;li&gt;Real-life views of the speaker, the slides and the demos&lt;/li&gt;&lt;li&gt;Everything delivered online - no need to leave your desk&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And there are some things that don't come through in the sample video, but you also get:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Interactive online chats and Q&amp;amp;A with the speakers &lt;/li&gt;&lt;li&gt;Downloadable PowerPoint slide decks&lt;/li&gt;&lt;li&gt;Downloadable demo files&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;But what is most exciting to me is that on top of all of these things, the virtual conference is &lt;em&gt;flexible&lt;/em&gt;. The conference is three days long, and there are three sessions going on at any given time. At a traditional conference you would need to decide which session to attend, and the other two would be unavailable. Here, each day's content is repeated three times throughout the day, so if you don't catch a session the first time around, you can go back and view it later, so you have the flexibility you normally only get with online content and the interactivity (remember the Q&amp;amp;A with the speakers?) that you normally only get with an in-person conference. And to make things even better, if none of the primary times work for you (or if you get called into emergency meetings, as is often the case in IT) you also have the option to view any of the conference sessions on demand for the two weeks following the conference.&lt;/p&gt;&lt;p&gt;When I was first contacted about participating in the Virtual Business Intelligence Conference, I was more than a little skeptical. I pictured something like a ReadyTalk or Go To Meeting, with poor quality audio and video, and few options for interacting with the speakers and with other attendees. Instead, I found a platform that really seems to bring together the best of the physical and virtual formats, and I was delighted to get involved.&lt;/p&gt;&lt;p&gt;If this sounds interesting to you too, please stay tuned. I'll post more information over the weeks ahead, as we move closer to the conference dates from September 24 to September 26. So if you have any questions, please let me know, and please spread the word as well. There are a lot of people out there who can benefit from this content, and not everyone can make the trip to Orlando for TechEd or to Seattle for the Microsoft BI conference, so please help let them know that there is another option out there.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;UPDATE 24 June, 2008: &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;It always weirds me out when I learn that people actually read my blog. I get enough information from Google Analytics to know that I get a decent number of hits each day, but that's not the same as getting an email from a real person about a post. &lt;/p&gt;&lt;p&gt;Like the email that I got today.&lt;/p&gt;&lt;p&gt;This morning I received an email from the account manager responsible for the conferencing solution that I use for work, wanting to know how she could work with me to resolve those problems. (How's that for great customer service? ;-) Reading back through this post I can see how it could be interpreted as "these conferencing systems are bad" as opposed to the "these conferencing systems are not ideal for the virtual conference format" message that I had intended. Here is the relevant part of my response to her, hopefully to eliminate the negativity that slipped into the post.&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;I didn’t mean to imply that I had any issues with ReadyTalk, LiveMeeting or GoTo Meeting for their stated purposes; simply that I don’t believe that they are ideal for the virtual conference format. The issues that I see are:&lt;br /&gt;&lt;br /&gt;·         Attendee join/leave – Most conferencing systems will announce each attendee by name and/or with a beep when the attendee joins or leaves the conference. For a conference call this functionality makes sense, but for a virtual conference this would be very disruptive.&lt;br /&gt;·         Audio Quality – The quality of the presenter audio in a conference call is dependent on the quality of the presenter’s phone line and the background noise in the presenter’s location, usually a home or office. Obviously this isn’t a problem with the conferencing system, but for a virtual conference it would negatively impact the attendee experience when compared to audio recorded with a professional microphone in a studio and then tweaked as needed before broadcast.&lt;br /&gt;·         Time-bound interaction – In a conference call, the only time that attendees can chat is during the session itself, and because the presenter is running the slides and/or demos, the attendees are limited to asking questions to (and getting answers from) helpers other than the presenter. Although the video may be recorded and made available for on-demand viewing, this is a unidirectional viewing; there are no options available for participants to interact. Again, this makes sense for a conference call, but for a virtual conference, it would be ideal to have the core presentation (slides, demos and presenter) and the attendee interaction/chat available independently, enabling the speaker to answer questions while the recorded session is being viewed.&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;I hope this helps clear up any confusion I may have caused!&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;[1] I know that quite a few strong BI speakers read this blog - if you're interested in being considered as a speaker, feel free to post a comment or send me an email over the next few days.&lt;/p&gt;&lt;p&gt;[2] Which was a huge success, which is why SSWUG is organizing another one and branching out to cover BI, SharePoint and .NET as well.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6238022652122430864?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6238022652122430864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6238022652122430864' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6238022652122430864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6238022652122430864'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/bi-for-virtual-guy.html' title='BI for the Virtual Guy'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-439462588730848236</id><published>2008-06-20T04:48:00.001-07:00</published><updated>2008-06-20T04:48:39.790-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Splitting a Delimited Column in SSIS</title><content type='html'>&lt;p&gt;A &lt;a href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3513804&amp;amp;SiteID=1&amp;amp;mode=1"&gt;recent post&lt;/a&gt; on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1"&gt;MSDN SSIS Forums&lt;/a&gt; has reminded me that I've been meaning to post on this technique for quite a few months now. The basic problem looks like this: The input rows in a data flow contain a key field and a &amp;quot;list field&amp;quot; whose contents are made up of a delimited list of values. Like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;KeyField&amp;#160;&amp;#160;&amp;#160; ListField     &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a,b,c       &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b,c       &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b,d,e       &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c,f,h      &lt;br /&gt;5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a,b&lt;/font&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;And the output needs to look like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;KeyField&amp;#160;&amp;#160; ListItem     &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a      &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;1&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c      &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;2&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c      &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b      &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; d      &lt;br /&gt;3&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e      &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; c      &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; f      &lt;br /&gt;4&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; h      &lt;br /&gt;5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a      &lt;br /&gt;5&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;The bad news is that there isn't any magical &amp;quot;Split Transformation&amp;quot; in SSIS. There are enough variations on data types and delimiters that it would probably be difficult to implement this as a transformation component. The good news is that it is trivial to implement this as a Script Component within the package. Here's how:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start by adding a data flow task to your package, and adding an OLE DB Source component (that returns the input data above) to the data flow. Then add a Script Component to the data flow as well.&lt;/li&gt;    &lt;li&gt;When prompted to select the type of component you want to create with the Script Component, select Transformation - it's the default, so this should be super easy.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SFuZBPuVLrI/AAAAAAAAAbk/VMK4OgSl0rc/s1600-h/01-SelectType%5B5%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="310" alt="01-SelectType" src="http://lh5.ggpht.com/matthewmct/SFuZBrS7uXI/AAAAAAAAAbo/jQPeyXO1VlA/01-SelectType_thumb%5B3%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next, connect the data flow path arrow from the Source component to the new Script transformation. Because the SSIS data flow is so heavily dependent on metadata, we can't really do anything meaningful with the Script Component until it knows what input data it will receive.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SFuZB7KWkPI/AAAAAAAAAbs/yj-qwNLrxAw/s1600-h/02-HookUpPath%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="156" alt="02-HookUpPath" src="http://lh6.ggpht.com/matthewmct/SFuZCNF6wjI/AAAAAAAAAbw/eKb11LTy0ek/02-HookUpPath_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next, right-click on the Script Component and select Edit. In the Script Transformation Editor dialog box, select both columns to make them available as input columns so they are available in the Script code.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SFuZCRJsW9I/AAAAAAAAAb0/Uo92-AHHmhk/s1600-h/03-Inputs%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="338" alt="03-Inputs" src="http://lh5.ggpht.com/matthewmct/SFuZCqjbdpI/AAAAAAAAAb4/uJK0vblWaT0/03-Inputs_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Next comes the one &amp;quot;tricky&amp;quot; part: marking the transformation as asynchronous. Because the transformation will be producing more output rows than it receives input rows, this is a vital step that is sometimes missed by inexperienced SSIS developers. Mark the transformation as asynchronous by setting the SynchronousInputID property of the output to None.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SFuZC7dCx4I/AAAAAAAAAb8/8mla1OxkNfY/s1600-h/04-MakeAsynch%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="338" alt="04-MakeAsynch" src="http://lh5.ggpht.com/matthewmct/SFuZDB_R8MI/AAAAAAAAAcA/74GLYYtBi8w/04-MakeAsynch_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Now, because we are building our own output buffer (one of the characteristics of an asynchronous data flow component) we need to add the columns that the output buffer will contain. Select the transformation's output, click Add Column and set the properties (mainly the name and data type) appropriately.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SFuZDlEdYeI/AAAAAAAAAcE/D_ZMWSqlfWo/s1600-h/05-BuildOutput%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="338" alt="05-BuildOutput" src="http://lh6.ggpht.com/matthewmct/SFuZD6DP1eI/AAAAAAAAAcI/nnvTrbwkZSI/05-BuildOutput_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Finally, what we've all been waiting for: the code. Click on the Design Script button and add the code to perform the actual split.     &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SFuZEbwKIHI/AAAAAAAAAcM/taTLcK1fZ9E/s1600-h/06-DesignScript%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="338" alt="06-DesignScript" src="http://lh4.ggpht.com/matthewmct/SFuZErPGyHI/AAAAAAAAAcQ/XzVrzdgBMXQ/06-DesignScript_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;p&gt;Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; Dim keyField As Integer = Row.KeyField     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim itemList As String = Row.ListField      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Dim delimiter As String = &amp;quot;,&amp;quot; &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; If Not (String.IsNullOrEmpty(itemList)) Then &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dim inputListArray() As String = _     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; itemList.Split(New String() {delimiter}, _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StringSplitOptions.RemoveEmptyEntries) &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For Each item As String In inputListArray     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; With Output0Buffer      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .AddRow()      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .KeyField = keyField      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; .ListItem = item      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End With      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next &lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; End If &lt;/p&gt;    &lt;p&gt;End Sub     &lt;br /&gt;&lt;/p&gt;    &lt;li&gt;Once the code is in place, the last thing we need to do is to add a Row Sampling transformation (this one is handy because if it has no output data paths, it doesn't really do anything, and it doesn't require any configuration) and connect the output from the Script Component to it, with a &lt;a href="http://msdn.microsoft.com/en-us/library/ms140318.aspx"&gt;Data Viewer&lt;/a&gt; attached. This will let us easily examine the output records from the script.      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SFuZEjvwavI/AAAAAAAAAcU/Va15Q8cqxz4/s1600-h/07-FinalDataFlow%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="340" alt="07-FinalDataFlow" src="http://lh3.ggpht.com/matthewmct/SFuZFRr2dmI/AAAAAAAAAcY/NKGeuPHAMfs/07-FinalDataFlow_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Now, when you execute the package, you can see the split output data as desired.      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SFuZFfQxn5I/AAAAAAAAAcc/k12FziZbMqs/s1600-h/08-DataViewerOutput%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="275" alt="08-DataViewerOutput" src="http://lh4.ggpht.com/matthewmct/SFuZFsu2jmI/AAAAAAAAAcg/yM6WlXkG9a0/08-DataViewerOutput_thumb%5B1%5D.png?imgmax=800" width="344" border="0" /&gt;&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Well, that ended up having more steps (and more pretty pictures) than I expected it to, but I stand by my initial assessment of this as being a trivial task, once you've seen how the Script Transformation works. And if this still seems complicated to you, make sure you check out &lt;a href="http://www.amazon.com/Rational-Guide-Extending-Script-Guides/dp/1932577254"&gt;The Rational Guide to Extending SSIS 2005 with Script&lt;/a&gt; by Donald Farmer. It's an excellent book that anyone who expects to spend time writing script in SSIS should read.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-439462588730848236?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/439462588730848236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=439462588730848236' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/439462588730848236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/439462588730848236'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/splitting-delimited-column-in-ssis.html' title='Splitting a Delimited Column in SSIS'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/matthewmct/SFuZBrS7uXI/AAAAAAAAAbo/jQPeyXO1VlA/s72-c/01-SelectType_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1437636477106086539</id><published>2008-06-19T07:10:00.001-07:00</published><updated>2008-06-19T09:06:00.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>New SSIS Project Templates in RC0</title><content type='html'>&lt;p&gt;I've finally found the time to install SQL Server 2008 RC0 (although my SSIS/BIDS install is corrupted so I have not been able to run SSIS in RC0 through its paces) and noticed something interesting. I was creating a new C# project and noticed this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SFqD4D7U6pI/AAAAAAAAAbc/MScgVZ8jUUU/s1600-h/NewProjectTemplates3.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="259" alt="NewProjectTemplates" src="http://lh3.ggpht.com/matthewmct/SFqD4t5yb6I/AAAAAAAAAbg/RCLtu3iuzSw/NewProjectTemplates_thumb1.png?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Do you notice the two new project templates in the tree view on the left? That's right - Microsoft has added new class library (DLL) templates for creating custom Control Flow tasks and Data Flow components in C# and VB.NET. It's pretty unlikely that SSIS component development will ever approach the ease of use of the Script Task and Script Component, but having a Visual Studio project template that sets up much of the component plumbing is a nice step forward.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;Upon further reflection (and a very helpful email) it turns out that these project templates are not designed for SSIS component developers. They are instead (as the project names should have clued me in, were I not so excited over my discovery) the templates that are used by Visual Studio Tools for Applications (VSTA) in the Script Task and Script Component inside a package. When you add a new Script Task or Script Component to your package, VSTA creates a new instance of one of these templates.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1437636477106086539?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1437636477106086539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1437636477106086539' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1437636477106086539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1437636477106086539'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/new-ssis-project-templates-in-rc0.html' title='New SSIS Project Templates in RC0'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/matthewmct/SFqD4t5yb6I/AAAAAAAAAbg/RCLtu3iuzSw/s72-c/NewProjectTemplates_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1851539089662145785</id><published>2008-06-18T12:12:00.001-07:00</published><updated>2008-06-21T13:46:07.219-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>SSIS Excels - But Not at Excel</title><content type='html'>&lt;p&gt;In the two months since I began using Google Analytics to track visitors to this blog, I've noticed a few things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Two of the top three articles on the blog are related to working with Excel. &lt;/li&gt;    &lt;li&gt;26 of the top 100 searches that referred users to the blog had to do with Excel in one way or another. &lt;/li&gt;    &lt;li&gt;SSIS doesn't deal with Excel data particularly well. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ok, I'd actually noticed that last one long before I started using Google Analytics. And you've probably noticed it too.&lt;/p&gt;  &lt;p&gt;I've long considered posting more about using SSIS and Excel, but I haven't, primarily because it's not something I deal with regularly in the real world, and because it's too annoying an exercise for me to go wading into it when I don't really have to.&lt;/p&gt;  &lt;p&gt;And yes, I suppose that's another way of saying that I don't really love you enough to do the work.&lt;/p&gt;  &lt;p&gt;But fortunately, &lt;a href="http://dougbert.com/blogs/dougbert/"&gt;Douglas Laudenschlager&lt;/a&gt;[1] does love you - he loves you more than you know. How do I know this? Because he is writing a three-part series of blog posts about how to work with Excel data in SSIS. Check this out:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/16/excel-in-integration-services-part-1-of-3-connections-and-components.aspx"&gt;Connections and components&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/18/excel-in-integration-services-part-2-of-3-tables-and-data-types.aspx"&gt;Tables and data types&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/21/excel-in-integration-services-part-3-of-3-issues-and-alternatives.aspx"&gt;Issues and alternatives&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;These articles present great information about how Excel manages data, what connectivity options are available and how to effectively use those options from within SSIS. I honestly don't know if there is anything in them that is not available elsewhere, but I can say with certainty that there is no other single location that covers all of the information that Douglas has gathered into these posts.&lt;/p&gt;  &lt;p&gt;Please do yourself a favor and read Douglas' posts. If you deal with Excel data in your SSIS packages, you owe it to yourself. I know that the next time I need to wrestle with Excel in SSIS, I'm going to re-read all three posts before I spin up Visual Studio...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;UPDATE: &lt;/strong&gt;As of 21 June 2008, Douglas has posted the third and final installment in this series, and the link has been added above. I love the fact that he starts off with &amp;quot;The Root of All Evil.&amp;quot; That's Excel in a nutshell...&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] In case you haven't been paying attention, Douglas is a technical writer on the SSIS documentation team. He started blogging back in late April 2008, but has been consistently posting such excellent technical content that his blog has been on my &amp;quot;must read&amp;quot; list ever since.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1851539089662145785?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1851539089662145785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1851539089662145785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1851539089662145785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1851539089662145785'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/ssis-excels-but-not-at-excel.html' title='SSIS Excels - But Not at Excel'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7267473081670605369</id><published>2008-06-18T09:54:00.001-07:00</published><updated>2008-06-18T09:54:16.017-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>It's Not Easy Being BI</title><content type='html'>&lt;p&gt;I've been known to sometimes say that &amp;quot;being BI effectively doubles your chances of getting a consulting engagement on a Friday night.&amp;quot; Yeah, it's kind of cheesy, but if you can't have fun with wordplays, what can you do, right?[1]&lt;/p&gt;  &lt;p&gt;Well, the joke is sounding a little less funny today.&lt;/p&gt;  &lt;p&gt;I'm currently involved in organizing a business intelligence conference[2] and have been sending emails to colleagues and potential speakers and have not been having the best of luck. In fact, when sending one email to an employee of a certain software company located in the Pacific Northwest, I got this explanation for why the email was rejected:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;Your e-mail was rejected by an anti-spam content filter on gateway (1.2.3.4). Reasons for rejection may be: obscene language, graphics, or spam-like characteristics. Removing these may let the e-mail through the filter.&amp;gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Yeah, no kidding.&lt;/p&gt;  &lt;p&gt;I then went through the email and replaced all instances of &amp;quot;BI&amp;quot; with &amp;quot;Business Intelligence&amp;quot; and the email went through without error. But today I've been fighting with a few more similar problems - what a way to waste a few hours I didn't have to spare.&lt;/p&gt;  &lt;p&gt;Has anyone else seen this issue?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] There are many other humorous stories that revolve around this particular play on words, like the well-known Microsoft speaker who wore his &amp;quot;BI Power Hour&amp;quot; t-shirt to the hotel bar at TechEd last year (not knowing that there was a gay pride event going on at the same time) and ended up having lots of nice men buy him drinks.&lt;/p&gt;  &lt;p&gt;[2] More details on this in the days and weeks ahead - stay tuned!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7267473081670605369?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7267473081670605369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7267473081670605369' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7267473081670605369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7267473081670605369'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/it-not-easy-being-bi.html' title='It&amp;#39;s Not Easy Being BI'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7663969783477146155</id><published>2008-06-18T04:35:00.001-07:00</published><updated>2008-06-18T04:35:18.036-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><title type='text'>Let the Blog Times Roll</title><content type='html'>&lt;p&gt;Just as a quick note, if you read my blog at &lt;a title="http://bi-polar23.blogspot.com/" href="http://bi-polar23.blogspot.com/"&gt;http://bi-polar23.blogspot.com/&lt;/a&gt; and not through an RSS reader, you'll notice something new today. I've added a blog roll with links to those SSIS-related (or vaguely SSIS-related) blogs to which I subscribe myself, and the most recent post on each blog. If you're looking for more SSIS goodness, check them out.&lt;/p&gt;  &lt;p&gt;And while I'm blogging about blogging[1] anyway, let me share a pet peeve with you. What is it with people who configure their blogs' RSS feeds to only include the first few lines of each post? This drives me crazy - I like being able to go into Outlook (my RSS reader of choice) and actually read the new posts. Instead, I have to go into Outlook, read what little text is actually there, and then click to open up the rest of the article in a web browser. What's up with that? I know it's not a big deal, but it's a little annoyance that takes much of the joy out of there being a new post on an interesting blog. You guys know who you are - are you doing this on purpose?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Or metablogging, because I never metablog I didn't like...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7663969783477146155?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7663969783477146155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7663969783477146155' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7663969783477146155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7663969783477146155'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/let-blog-times-roll.html' title='Let the Blog Times Roll'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6067433805313887434</id><published>2008-06-17T13:49:00.001-07:00</published><updated>2008-06-17T13:49:43.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='dev'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Did you Miss PacMan?</title><content type='html'>&lt;p&gt;At the &lt;a href="http://www.microsoft.com/events/TechEd2008/default.mspx"&gt;Microsoft TechEd conference&lt;/a&gt; in Orlando earlier this month I mentioned my &lt;a href="http://www.codeplex.com/pacman/"&gt;PacMan project on CodePlex&lt;/a&gt; to several different audiences, including during each of my breakout sessions. PacMan is my &amp;quot;SSIS Package Manager&amp;quot; utility that I've built in C# to make my own life easier, but enough people expressed interest in it that I shared the utility online with hopes that it would make their lives less painful as well.&lt;/p&gt;  &lt;p&gt;Well, although I may have succeeded to some extent, the very nature of PacMan probably limits its analgesic potential. This is because PacMan is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;A &amp;quot;rough and dirty&amp;quot; development utility. This is code that I, as a developer, wrote for myself, as a developer, to use. This means that I was focused on solving short-term tactical goals, and not on building a general-purpose reusable framework for solving longer-term strategic goals. To put this another way, I expected to have to go in to PacMan and write a little code any time I wanted it to do something; I didn't have the time, energy or inclination to write all of that code up front.&lt;/li&gt;    &lt;li&gt;Largely undocumented. Other than the source code itself, there is little help for developers who want to start using PacMan for their own purposes.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Sadly, my schedule is highly unlikely to allow me to address the first point at any time in the foreseeable future. PacMan will likely always remain a &amp;quot;rough and dirty&amp;quot; utility, because the same work that keeps it valuable to me also keeps me too busy to refactor and refine it into something better.&lt;/p&gt;  &lt;p&gt;But the second bullet is something I am likely able to do something about sooner rather than later. In fact, I plan on doing a little something about it today. Right now. Right Here:&lt;/p&gt;  &lt;h4&gt;PacMan Overview:&lt;/h4&gt;  &lt;p&gt;The whole point of PacMan is to perform batch operations on groups of SSIS packages. That's it. Because SSIS does not provide any built-in features for working with multiple packages at one time, this was something that I felt was sorely needed. Specifically, I needed a way to add a new variable to close to 100 packages. Obviously manually updating the packages wasn't an option, so PacMan was born.&lt;/p&gt;  &lt;p&gt;The PacMan utility is implemented in a Visual Studio solution with two projects: a Class Library (DLL) Components project and a Windows Forms UI project:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SFgjXX0rUuI/AAAAAAAAAbE/-Lf3cYhdaBw/s1600-h/Figure%2011%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="Figure 11" src="http://lh6.ggpht.com/matthewmct/SFgjYMldvyI/AAAAAAAAAbI/AxPEGOd_d0c/Figure%2011_thumb%5B1%5D.png?imgmax=800" width="363" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The Components project implements a small set of classes that encapsulate access to objects in the SSIS .NET object model. The PackageUtil and PackageCollectionUtil classes are the two most significant ones, as we'll see later on.&lt;/p&gt;  &lt;h4&gt;PacMan UI:&lt;/h4&gt;  &lt;p&gt;The PacMan UI is exceptionally simple.[1] At the top of the form there are four options for selecting the scope of operations for whatever work is going to be performed - a single package, a single Visual Studio project, a Visual Studio solution containing one or more projects, or a file system folder containing multiple subfolders and packages. At the bottom of the form there is a set of tabs; each tab contains data entry controls for initiating a specific operation that will be performed on the packages that are in scope.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/matthewmct/SFgjY4yQyYI/AAAAAAAAAbM/4lO_M_Ko5ac/s1600-h/Figure%2010%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="323" alt="Figure 10" src="http://lh6.ggpht.com/matthewmct/SFgjZR10gsI/AAAAAAAAAbQ/6tK6d8N9e3k/Figure%2010_thumb%5B1%5D.png?imgmax=800" width="363" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;PacMan Components:&lt;/h4&gt;  &lt;p&gt;As mentioned above, the two main classes in the Components project are the PackageUtil and PackageCollectionUtil classes.&lt;/p&gt;  &lt;p&gt;The PackageUtil class is essentially a thin wrapper around a Microsoft.SqlServer.Dts.Runtime.Package object. The PackageUtil class exposes a Package object through its SsisPackage property, and also exposes a set of properties and methods that make manipulating the package more straightforward.&lt;/p&gt;  &lt;p&gt;The PackageCollectionUtil class is a List of PackageUtil objects, along with a set of properties and methods for manipulating the packages in the List. &lt;/p&gt;  &lt;p&gt;When an operation scope is selected through the PacMan UI, an instance of the PackageCollectionUtil class is created and stored in the class-level &lt;font face="cou"&gt;&lt;strong&gt;packages&lt;/strong&gt;&lt;/font&gt; variable which is in scope and available anywhere within the PacMan UI.&lt;/p&gt;  &lt;p&gt;Most interesting scenarios in PacMan revolve around enumerating the &lt;strong&gt;packages &lt;/strong&gt;collection and doing something[2] with each of the packages it contains.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;Using PacMan:&lt;/h4&gt;  &lt;p&gt;The basic pattern of using PacMan goes something like this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Get the &lt;a href="http://www.codeplex.com/pacman/SourceControl/ListDownloadableCommits.aspx"&gt;PacMan code from CodePlex&lt;/a&gt; and open it in Visual Studio.&lt;/li&gt;    &lt;li&gt;Add your own code to PacMan. You can do this either by adding a new tab to the UI or reusing an existing tab. There is an existing &amp;quot;Dev Workspace&amp;quot; tab that I use for experimenting or for one-off efforts when I don't want to be bothered building a UI for what I'm working on.&lt;/li&gt;    &lt;li&gt;Feel good about accomplishing so much with so little effort.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Ok, so it may not be quite that simple all the time, but that's all I can think of right now. The nice thing is that the &lt;strong&gt;packages &lt;/strong&gt;collection takes care of most of the hard work - all you need to do is worry about working on a single package at a time and PacMan does the rest of the work. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;PacMan Use Case Example 1:&lt;/h4&gt;  &lt;p&gt;A typical example of using PacMan may look like this. The code below is used to rename a connection manager in all selected packages:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;private void buttonSample_Click(object sender, EventArgs e)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string oldName = &amp;quot;LocalHost.AdventureWorksDW&amp;quot;;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string newName = &amp;quot;AWDW&amp;quot;; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; foreach (PackageUtil p in packages)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (p.SsisPackage.Connections.Contains(oldName))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; p.SsisPackage.Connections[oldName].Name = newName;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; packages.Save();      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;It doesn't get much simpler than that, does it? Imagine trying to reliably rename objects across a project or solution that contained dozens or hundreds of packages.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h4&gt;PacMan Use Case Example 2:&lt;/h4&gt;  &lt;p&gt;Some operations may require more code that what was shown above. For example, I recently needed to review a set of several hundred packages to ensure that there were no duplicate package IDs. To do this I updated the PackageCollectionUtil class to add a GetPackageIDs method that returns a SortedDictionary collection of the package IDs and the names of the packages that use them. The code looks like this:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;public SortedDictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt; GetPackageIDs()     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SortedDictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt; ids =       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; new SortedDictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt;(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; foreach (PackageUtil package in this)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string id = package.SsisPackage.ID;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!ids.ContainsKey(id))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // New key - add a new dictionary       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ids.Add(id, new List&amp;lt;string&amp;gt;());      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // either way, add the package path      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ids[id].Add(package.PackageFilePath); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return ids;      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Then, in the UI code, I could simply call this method and update a TreeView to display the results to the user:&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;private void buttonEnumerateIDs_Click(object sender, EventArgs e)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (packages != null)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SortedDictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt; ids =       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; packages.GetPackageIDs();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; BuildPackageIdTreeView(ids);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;private void BuildPackageIdTreeView(SortedDictionary&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt; packageIDs)     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; treeViewPackageIDs.Nodes.Clear();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; foreach (KeyValuePair&amp;lt;string, List&amp;lt;string&amp;gt;&amp;gt; id in packageIDs)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!checkBoxShowOnlyDuplicates.Checked || id.Value.Count &amp;gt; 1)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // add a node for the ID      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; TreeNode newNode = treeViewPackageIDs.Nodes.Add(id.Key);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // add a child node for each package      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (string packagePath in id.Value)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newNode.Nodes.Add(packagePath);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newNode.Expand();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;h4&gt;Summary:&lt;/h4&gt;  &lt;p&gt;As you can see, PacMan provides a framework for developers to more easily perform operations on groups of packages. Those developers will still need to write code, but the scope and complexity of the code should be significantly reduced.&lt;/p&gt;  &lt;p&gt;Please expect to see a few more PacMan-focused posts in the days and weeks ahead. There are some features I showed off at TechEd that can probably use some additional explanation, so now that I've laid the framework for further discussion, I can start work on those posts.&lt;/p&gt;  &lt;p&gt;In the meantime, if you have any questions, comments or suggestions on PacMan, please feel free to post them here or to the &lt;a href="http://www.codeplex.com/pacman/Thread/List.aspx"&gt;discussion forum on the PacMan site on CodePlex&lt;/a&gt;. I can't guarantee that I'll respond to each one in a timely manner, but I'll do my best. Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] I was going to write &amp;quot;ugly&amp;quot; here, because I know what it looks like. A UI designer I'm not. &lt;/p&gt;  &lt;p&gt;[2] Yes, I suppose this goes without saying, as doing nothing is not a particularly interesting scenario, but the &amp;quot;something&amp;quot; in question up to the developer.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6067433805313887434?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6067433805313887434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6067433805313887434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6067433805313887434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6067433805313887434'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/did-you-miss-pacman.html' title='Did you Miss PacMan?'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/matthewmct/SFgjYMldvyI/AAAAAAAAAbI/AxPEGOd_d0c/s72-c/Figure%2011_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1853957963110934904</id><published>2008-06-14T17:06:00.001-07:00</published><updated>2008-06-14T17:06:07.340-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SSIS on 64-Bit Windows</title><content type='html'>&lt;p&gt;I've just returned home from the TechEd 2008 conference in Orlando - what an amazing two weeks this was. Even though the conference ended only yesterday, it already seems vaguely unreal, as if it were too much fun to have been real.[1]&lt;/p&gt;  &lt;p&gt;But while I was having fun at TechEd, members of the SSIS team were hard at work[2] writing about one of my favorite topics: SSIS deployment. And since 64-bit deployments was such a large portion of my second breakout session, it seems like synchronicity[4] that both &lt;a href="http://dougbert.com/default.aspx"&gt;Douglas Laudenschlager&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mattm/"&gt;Matt Masson&lt;/a&gt; both blogged on the topic as well in the last few days. Check &lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/10/64-bit-considerations-for-sql-server-integration-services-final.aspx"&gt;here&lt;/a&gt; to see Douglas' excellent post about considerations when using SSIS on 64-bit machines, and &lt;a href="http://blogs.msdn.com/mattm/archive/2008/06/12/use-32bit-runtime-option-for-sql-agent.aspx"&gt;here&lt;/a&gt; to see Matt's follow-up about how the SQL Server Integration Services job step type in SQL Server Agent (just introduced in SQL Server 2008 RCO!) now provides the option to use the 32-bit SSIS runtime. That's pretty cool. I doubt I'll be using this and giving up DTEXEC any time soon, but it's a good step forward for 64-bit deployments.&lt;/p&gt;  &lt;p&gt;Side note: Expect another post or two about SSIS deployment in the next few days. I realized on the flight home that I neglected to mention a few important considerations during that breakout session, so once I've had the time to remind my family who I am, I'll fill in the gaps here. Stay tuned!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Although I am pretty sure it really was real. Otherwise I'll need to come up with an alternate theory about where all these t-shirts came from.&lt;/p&gt;  &lt;p&gt;[2] Now I know why I didn't see these guys at the show...&lt;/p&gt;  &lt;p&gt;[3] BIN-450: SQL Server Integration Services Deployment Best Practices&lt;/p&gt;  &lt;p&gt;[4] Or perhaps some other Police song&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1853957963110934904?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1853957963110934904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1853957963110934904' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1853957963110934904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1853957963110934904'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/ssis-on-64-bit-windows.html' title='SSIS on 64-Bit Windows'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2321252871017913407</id><published>2008-06-11T14:58:00.001-07:00</published><updated>2008-06-11T14:58:17.512-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS, SQL Server Agent and WMI</title><content type='html'>&lt;p&gt;I need to hang out with Donald Farmer more often. He knows more about SSIS than I will ever forget - or something like that.&lt;/p&gt;  &lt;p&gt;Earlier today I co-presented another interactive theater session (largely a repeat of the session we did last week during the developer conference, but with some new content and a different vibe) with Donald and (as before) I learned a few things about using SSIS that I had never seen before. One of them has to do with one of the most popular[1] SSIS topics: SSIS and SQL Server Agent.&lt;/p&gt;  &lt;p&gt;This lesson doesn't actually have much to do with SSIS - it has to do with how you trigger the execution of a SQL Server Agent Job. Normally SQL Server Agent Jobs are executed on a schedule, so that the same packages run at the same time every day. To be honest, this is the only way I have ever used SQL Server Agent. But (as I learned today) you can also configure your SQL Server Agent Jobs to be triggered by Windows Management Instrumentation (WMI) events as well.&lt;/p&gt;  &lt;p&gt;What does this mean?&lt;/p&gt;  &lt;p&gt;It means that any events that are raised by the operating system (or other software that uses WMI) can be used to trigger the execution of your job and your packages. Think about having packages that automatically run when your processor utilization drops below a specific threshold as an example. The possibilities are endless[2] and the setup is documented in SQL Server Books Online here: &lt;a title="http://technet.microsoft.com/en-us/library/ms366332.aspx" href="http://technet.microsoft.com/en-us/library/ms366332.aspx"&gt;http://technet.microsoft.com/en-us/library/ms366332.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] At least if the web traffic reports for my blog are to be believed.&lt;/p&gt;  &lt;p&gt;[2] This is a nice way of saying that I don't know enough about WMI to come up with more examples without making a fool of myself.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2321252871017913407?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2321252871017913407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2321252871017913407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2321252871017913407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2321252871017913407'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/ssis-sql-server-agent-and-wmi.html' title='SSIS, SQL Server Agent and WMI'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1308071826971248983</id><published>2008-06-11T08:30:00.001-07:00</published><updated>2008-06-11T08:30:14.483-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>Script Tasks as Execution Placeholders</title><content type='html'>&lt;p&gt;I've &lt;a href="http://bi-polar23.blogspot.com/2007/05/conditional-task-execution.html"&gt;blogged previously&lt;/a&gt;[1] about a technique that involves using the Script Task in SSIS as an &amp;quot;execution placeholder&amp;quot; - essentially just an &amp;quot;empty&amp;quot; task that doesn't do any work, but which gives you something from which to connect a precedence constraint with an expression, enabling dynamic execution logic downstream. All in all it works pretty well, since the Script Task in its default state returns Success and doesn't actually do anything. It's simple, and it works.&lt;/p&gt;  &lt;p&gt;Or so I thought.&lt;/p&gt;  &lt;p&gt;If you take a look at the comments for the post referenced above, you'll see that Bart Duncan asked if there was an advantage to using the Script Task as opposed to an empty Sequence container. My response was basically that either one should work fine. Well, this is the case for SSIS in either SQL Server 2005 or SQL Server 2008, but apparently this is &lt;em&gt;&lt;strong&gt;not &lt;/strong&gt;&lt;/em&gt;the case for upgrading packages from 2005 &lt;em&gt;&lt;strong&gt;to &lt;/strong&gt;&lt;/em&gt;2008. I have one package in particular (it's a &amp;quot;master controller&amp;quot; package that is responsible for orchestrating the execution of lots of other packages, so it has a lot more control flow logic than I would usually put in one package) and when I recently did a test upgrade[2], I got a bunch of errors. In essence, they all say this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Error at Script Task Name [Script Task Name]: No entry point was found during the migration of &amp;quot;ScriptTask_91682d2bfda94fdcb87f72f4c97cd852&amp;quot;. Add an entry point to ensure that the script runs.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Apparently (please note that this is an educated guess, not something that I have researched and validated in depth) when you add a Script Task to the SSIS 2005 control flow design surface, the designer does not call out to Visual Studio for Applications (VSA) to precompile the code. This is OK in 2005, because the VSA runtime knows how to handle these &amp;quot;uninitialized&amp;quot; Script tasks, but when upgrading to SSIS 2008, which uses Visual Studio Tools for Applications (VSTA) instead of VSA, the package upgrade wizard and/or VSTA don't know how to handle this previously-valid scenario. &lt;/p&gt;  &lt;p&gt;So I guess I owe Bart an apology, eh?&lt;/p&gt;  &lt;p&gt;In any event, there are two simple workarounds that you can perform with your SQL Server 2005 SSIS packages that use this technique:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Replace each &amp;quot;empty&amp;quot; Script Task with an empty Sequence Container. This will eliminate the problem altogether as it eliminates the use of Script tasks entirely.     &lt;br /&gt;or&lt;/li&gt;    &lt;li&gt;Open each &amp;quot;empty&amp;quot; Script Task in the VSA editor and then close it back out again, clicking OK to save changes. This will eliminate the problem because it gets the Script tasks into a state that the upgrade wizard knows how to handle.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;At first glance, option 1 probably looks more attractive, but it is a little more complicated than that. Remember: the whole reason we're having this discussion in the first place is because we needed a Control Flow component from which we could drag a precedence constraint &lt;em&gt;&lt;strong&gt;with an expression&lt;/strong&gt;&lt;/em&gt;. The problem that this introduces is that if we delete a Script Task in order to replace it with a Sequence Container, the precedence constraint will be deleted as well. Recreating the precedence constraint is simple enough, but then you would need to manually edit each affected constraint to recreate the expression as well. In my &amp;quot;master controller&amp;quot; package I had dozens of these constraints, so manually rebuilding everything didn't have much appeal - I went for option 2.&lt;/p&gt;  &lt;p&gt;[1] Well, I guess I've been busy. When I looked up that previous post so I could link to it, I was surprised to discover that it was from May of 2007. I didn't realize that I'd reached my one year blogging anniversary already. How time flies when you're having fun...&lt;/p&gt;  &lt;p&gt;[2] It's worth noting that this upgrade was performed using the February CTP of SQL Server 2008; I have yet to make the time to get RC0 installed, as I am somewhat tied up at TechEd and do not have a machine to sacrifice this week.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1308071826971248983?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1308071826971248983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1308071826971248983' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1308071826971248983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1308071826971248983'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/script-tasks-as-execution-placeholders.html' title='Script Tasks as Execution Placeholders'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-1186217012465389971</id><published>2008-06-10T13:14:00.001-07:00</published><updated>2008-06-10T13:14:35.426-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><title type='text'>Master Data Management</title><content type='html'>&lt;p&gt;I attended this morning an Interactive Theater session with Rajesh Patel (Program Manager) and John McAllister (Principal Program Manager) from the &lt;a href="http://msdn.microsoft.com/en-us/library/bb190163.aspx"&gt;Master Data Management&lt;/a&gt; (MDM) team at Microsoft. I've been following MDM on and off for the last year or so, after I got to see Roger Wolter present on MDM at TechEd 2007, but there hasn't been a lot of news to follow. So when I saw this session on the schedule I knew I had to attend.&lt;/p&gt;  &lt;p&gt;The session itself was great - John and Rajesh came in with a slide deck and an agenda, but when they learned (following a show of hands from the audience) that the people in attendance wanted something different, they basically threw away the slides and gave us exactly what we asked for, and it was lots of fun.&lt;/p&gt;  &lt;p&gt;Unfortunately, there wasn't a lot of new information that I hadn't heard before (although it was great to hear it again from the people who are building the software), but there were a few gems that I picked up:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft MDM will ship as part of Microsoft Office SharePoint Server (MOSS) in the next release of Office - Office 14. It will be a shared service in MOSS and the admin and data steward UI will be presented through the MOSS portal.&lt;/li&gt;    &lt;li&gt;The MDM team is definitely thinking about the synergy between MDM and BI. I didn't come away from the session with a really clear story in my mind about how (for example) an SSAS dimension would relate to an MDM hierarchy, but I attribute that vagueness to the poor acoustics rather than to a vague vision on the part of the presenters.&lt;/li&gt;    &lt;li&gt;There is a technology preview version of MDM that is available today. You can email &lt;a href="mailto:mdmvibe@microsoft.com"&gt;mdmvibe@microsoft.com&lt;/a&gt; and request access to the software. The bits you will get will be the same &lt;a href="http://www.stratature.com/"&gt;Stratature&lt;/a&gt; software that Microsoft acquired a year or so ago, but if you want to start working to see how MDM will fit into your BI solution or into your enterprise, it's a great opportunity to get a head start.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Now I wonder what other tidbits I'll pick up this week...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-1186217012465389971?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/1186217012465389971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=1186217012465389971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1186217012465389971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/1186217012465389971'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/master-data-management.html' title='Master Data Management'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6710035820216345529</id><published>2008-06-10T12:48:00.001-07:00</published><updated>2008-06-10T12:48:10.257-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Auto Connect: Another SSIS Lesson Learned</title><content type='html'>&lt;p&gt;As I mentioned in a &lt;a href="http://bi-polar23.blogspot.com/2008/06/sharing-lookup-cache.html"&gt;recent post&lt;/a&gt;, I had the pleasure to present with Donald Farmer at the TechEd Developers conference last week. It was a lot of fun, and I learned a few things during the 75 minute session. One of them you've already seen, but here's another one - SSIS Designer Options in Visual Studio. This isn't quite as interesting as the ability to &lt;a href="http://bi-polar23.blogspot.com/2008/06/sharing-lookup-cache.html"&gt;share a lookup cache&lt;/a&gt;, but it's still always nice to learn something new about a familiar tool. Here's the deal:&lt;/p&gt;  &lt;p&gt;In Visual Studio, select Options from the Tools menu. In the Options Dialog, expand out the Business intelligence Designer node and then the Integration Services Designers tabs to get to the interesting stuff. &lt;/p&gt;  &lt;p&gt;The General tab has a few options - the two that are most interesting for me are the &amp;quot;Show precedence constraint labels&amp;quot; option and the &amp;quot;Script Language&amp;quot; option:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/matthewmct/SE7aXhXRJZI/AAAAAAAAAaU/zjHzLvJIito/s1600-h/01-General%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="187" alt="01-General" src="http://lh3.ggpht.com/matthewmct/SE7aYSw_c1I/AAAAAAAAAaY/RCuknWFLUTQ/01-General_thumb%5B1%5D.png?imgmax=800" width="324" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The &amp;quot;Show precedence constraint labels&amp;quot; option will, when turned on, automatically display the constraint option (Success, Completion or Failure) on the control flow design surface for each constraint. I personally think that this is a good idea, but it would be a &lt;em&gt;&lt;strong&gt;great &lt;/strong&gt;&lt;/em&gt;idea if it displayed the constraint option and the constraint expression (as if the ShowAnnotation property were set to ConstraintOptions) since this is something that cannot be conveyed through the color of the constraint arrow.&lt;/p&gt;  &lt;p&gt;But (oddly enough, given the setup at the top of this post) this isn't what I learned during the TechEd session last week. This is just something that I stumbled across while trying to get screen shots for the other two options below. The really cool stuff I learned is on the Control Flow Auto Connect and Data Flow Auto Connect tabs:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/matthewmct/SE7aY0yaOUI/AAAAAAAAAac/Sq_rOXm8PU8/s1600-h/02-ControlFlow%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="187" alt="02-ControlFlow" src="http://lh6.ggpht.com/matthewmct/SE7acibRlsI/AAAAAAAAAag/w9TXqIrmRD4/02-ControlFlow_thumb%5B1%5D.png?imgmax=800" width="324" border="0" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SE7advWsI5I/AAAAAAAAAak/9EPO63tUtW4/s1600-h/03-DataFlow%5B3%5D.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="187" alt="03-DataFlow" src="http://lh5.ggpht.com/matthewmct/SE7aeQBN6gI/AAAAAAAAAao/-F3E1tjkF9g/03-DataFlow_thumb%5B1%5D.png?imgmax=800" width="324" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Basically what these options (click on the images to see more detail) give you is the ability to have your control flow tasks or data flow components automatically connected without your needing to drag the arrows to connect them. You can simply enable the auto-connect feature, specify the direction (right, left, above or below) in which the new component should be added (and for control flow, the type of precedence constraint to add) and then when you double-click on a toolbox item, it will be automatically added to your design surface and hooked up (based on the settings you specify here) to the component you have selected.&lt;/p&gt;  &lt;p&gt;Pretty cool, eh?&lt;/p&gt;  &lt;p&gt;And there's even better news! Based on the wonderful feedback we received following our session last week (well, I'm sure the fact that I asked nicely helped too) the repeat session at the TechEd IT Pro conference this week will feature both Donald Farmer and myself. I'll be sure to let him do all of the hard work like he did last week, but everyone had a great time last week and I'm sure this week will be even better. Please be sure to meet us at 2:45 tomorrow afternoon in Green Interactive Theater 2 in the &amp;quot;big room&amp;quot; at the Orange County Convention Center. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6710035820216345529?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6710035820216345529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6710035820216345529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6710035820216345529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6710035820216345529'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/auto-connect-another-ssis-lesson.html' title='Auto Connect: Another SSIS Lesson Learned'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/matthewmct/SE7aYSw_c1I/AAAAAAAAAaY/RCuknWFLUTQ/s72-c/01-General_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-4317172537087244518</id><published>2008-06-10T10:19:00.001-07:00</published><updated>2008-06-10T10:19:36.803-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SSIS and EBCDIC</title><content type='html'>&lt;p&gt;First and foremost, thanks to &lt;a href="http://dougbert.com/blogs/dougbert/archive/2008/06/08/new-product-ebcdic-source-component-from-amino-software.aspx"&gt;Douglas Laudenschlager&lt;/a&gt; for bringing this to my attention. &lt;/p&gt;  &lt;p&gt;So with that out of the way, I'd like to point out that Amino Software have finally released their Lysine product, a custom SSIS component that enables the use of EBCDIC data in the SSIS data flow. Here's the blurb:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Lysine is an SSIS (SQL Server Integration Services) custom component that enables the inline conversion from EBCDIC (including redefines and packed decimal fields) into an ASCII byte stream to use within the pipeline in your SSIS package.&lt;/p&gt;    &lt;p&gt;The major benefits of Lysine are two-fold: &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;It saves you from having to write a pre-processor to unpack and convert the binary data. &lt;/li&gt;      &lt;li&gt;It prevents you from having to pre-process the data saving an extra, and many times costly, trip through the data.&lt;/li&gt;   &lt;/ol&gt;    &lt;h4&gt;Features&lt;/h4&gt;    &lt;ul&gt;     &lt;li&gt;Conversion of EBCDIC Field Types        &lt;ul&gt;         &lt;li&gt;Comp3 &lt;/li&gt;          &lt;li&gt;Zoned &lt;/li&gt;          &lt;li&gt;Redefines &lt;/li&gt;          &lt;li&gt;Occurs &lt;/li&gt;          &lt;li&gt;Occurs Depending On&lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;      &lt;li&gt;Realtime preview of data as file definition is setup in an intuitive UI &lt;/li&gt;      &lt;li&gt;Inline processing of data -- a single pass through the data.&lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;Now normally I would not simply copy and paste a software vendor's marketing blurb into my blog - not without getting some sort of kickback anyway - but since so far as I know there is no other software on the market that solves this problem, and since this problem seems to come up pretty often, I thought that this was a good time to make an exception. It's not free (and for $1,499 some might argue that it's not cheap either) but if you need to convert EBCDIC data to ASCII data, odd are it will pay for itself pretty quickly. I haven't had the time to run it through its paces (and with a little luck I won't see any EBCDIC in the near future) but if you're struggling with this pain today you might want to check it out. Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-4317172537087244518?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/4317172537087244518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=4317172537087244518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4317172537087244518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/4317172537087244518'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/ssis-and-ebcdic.html' title='SSIS and EBCDIC'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-189341294122277296</id><published>2008-06-10T07:52:00.001-07:00</published><updated>2008-06-10T07:52:19.622-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Luncheon, Redux</title><content type='html'>&lt;p&gt;Even though TechEd has now moved on into its second week, and I am hard at work preparing for my two breakout sessions on Thursday and Friday (I've actually been &amp;quot;ready&amp;quot; for weeks, but when I have a big presentation coming up, I can't help but obsess about it) I wanted to share one more post about one of the many highlights from the first week of the conference. The folks at Microsoft who organized the delightful &lt;a href="http://bi-polar23.blogspot.com/2008/06/what-day.html"&gt;Influencers Roundtable Luncheon&lt;/a&gt; last week have sent out the group photos that were taken at the beginning of the event. Take a look:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SE6VF19djhI/AAAAAAAAAaE/KTCjJoTp6d4/s1600-h/gateslunch1_small%5B4%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="185" alt="gateslunch1_small" src="http://lh6.ggpht.com/matthewmct/SE6VHc1WJCI/AAAAAAAAAaI/k42IKydq_Iw/gateslunch1_small_thumb%5B2%5D.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/matthewmct/SE6VIHRUP7I/AAAAAAAAAaM/Ta4dSFkd9Dg/s1600-h/gateslunch2_small%5B2%5D.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="170" alt="gateslunch2_small" src="http://lh4.ggpht.com/matthewmct/SE6VIq9rZAI/AAAAAAAAAaQ/-dNJ9S5Fz2c/gateslunch2_small_thumb.jpg?imgmax=800" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And to sort of round out this whole event, S. Somasegar has also &lt;a href="http://blogs.msdn.com/somasegar/archive/2008/06/06/inspirational-session-with-bill-and-community-leaders.aspx"&gt;blogged about his impressions of the luncheon&lt;/a&gt;. It is fascinating to me that he came away with the same impression from the luncheon that I did:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;I left feeling somewhat overwhelmed by the passion that people in the room had for a single topic that took up the majority of the conversation.&amp;#160; The conversation centered around how we can better marry IT skills and expertise to non-profit work in the areas of healthcare and education.&amp;#160; All of the conversations and comments focused on how each of the people in that room could step up and bring their expertise in technology and IT to help people that are less fortunate&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I've &lt;a href="http://bi-polar23.blogspot.com/2007/08/good-deed.html"&gt;blogged on this in the past&lt;/a&gt;, although not recently, but this luncheon and Soma's blog post have both reminded me how vital it is that each of us take advantage of his or her own unique strengths to help others. Whether its something as simple as helping out at your local school or community center, or as involved as volunteering for &lt;a href="http://www.microsoft.com/presspass/features/2007/jul07/07-06reliefworkers.mspx"&gt;the NetHope&lt;/a&gt; project, there is something that each of us can do to improve the lives of those around us. It's so easy to make a big difference with a small effort. And it's delightful to know that I'm not the only one who feels this way...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-189341294122277296?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/189341294122277296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=189341294122277296' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/189341294122277296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/189341294122277296'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/luncheon-redux.html' title='Luncheon, Redux'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/matthewmct/SE6VHc1WJCI/AAAAAAAAAaI/k42IKydq_Iw/s72-c/gateslunch1_small_thumb%5B2%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-8971536939192350408</id><published>2008-06-09T14:44:00.001-07:00</published><updated>2008-06-09T14:44:10.628-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='Katmai'/><title type='text'>SQL Server 2008 RC0 Available</title><content type='html'>&lt;p&gt;The first release candidate build of SQL Server 2008 is now available for download on the MSDN and TechNet subscriber download sites. Unfortunately, this comes a little too late for me to rebuild my demo VMs for my breakout sessions here at TechEd later this week, but it's exciting news nonetheless. It's not surprising that a big interim release like this would take place during TechEd, but it is exciting even if it is not unexpected.&lt;/p&gt;  &lt;p&gt;One of the interesting (and to me, unexpected) tidbits available with RC0 is information about new editions of SQL Server. Take a look here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://technet.microsoft.com/en-us/library/cc645993(SQL.100).aspx" href="http://technet.microsoft.com/en-us/library/cc645993(SQL.100).aspx"&gt;http://technet.microsoft.com/en-us/library/cc645993(SQL.100).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In addition to the existing editions (Enterprise, Standard, Workgroup, Developer and Express) there are now also Web and Small Business editions coming in SQL Server 2008. The Small Business edition doesn't show up in the online version of BOL referenced above, but it does show up in the docs installed with RC0. I guess they're still finalizing things...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-8971536939192350408?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/8971536939192350408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=8971536939192350408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8971536939192350408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/8971536939192350408'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/sql-server-2008-rc0-available.html' title='SQL Server 2008 RC0 Available'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-2301832250938158248</id><published>2008-06-07T17:33:00.001-07:00</published><updated>2008-06-07T17:33:34.500-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SSIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><category scheme='http://www.blogger.com/atom/ns#' term='BI'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Sharing The Lookup Cache</title><content type='html'>&lt;p&gt;Sometimes I'm the last person to know. I like to think that I know at least a little about SQL Server Integration Services, but it still seems that I'm always discovering some technique or tidbit of knowledge that had previously escaped my notice. I learned one such lesson this week during the TechEd Developers conference in Orlando. I was co-presenting with Donald Farmer[1] during his &amp;quot;Microsoft SQL Server 2008 Integration Services: From D'oh to Wow&amp;quot; session Friday morning. Here's the deal:&lt;/p&gt;  &lt;p&gt;in the SSIS data flow (both 2005 and 2008) the in-memory cache for a fully-cached Lookup Transformation can be shared between multiple Lookup Transformations, so long as they all use identical queries to populate their cache. This means that if two Lookups can be implemented with the same query (not a particularly common scenario, but it does happen from time to time) the performance of the package can be improved by only loading the lookup data into memory once. &lt;/p&gt;  &lt;p&gt;There are opportunities here to refactor the lookup queries in existing data flows - consider a scenario where a data flow contains two Lookup Transformations, one to add a Department Name field to the data flow an done to and one to add a Department Contact field, both looking up based on the Department Key. A natural approach to solve this problem would be to have each Lookup use just the two columns it needs, thus making the lookup data as narrow as possible. (This is a best practice after all, right?) But by having both Lookups use the same three-column lookup query you can reduce the volume of data being read and cached, and potentially improve package performance. What's not to like?&lt;/p&gt;  &lt;p&gt;Funny you should ask.&lt;/p&gt;  &lt;p&gt;After the session was over, I went to visit my friend and colleague &lt;a href="http://agilebi.com/cs/blogs/default.aspx"&gt;John Welch&lt;/a&gt;, who was staffing one of the SQL Server Business Intelligence booths at the conference. I explained to him what I'd just learned (I was all excited in being able to share this with someone who loves SSIS as much as I do) and asked him if he had every heard of such a feature. I'll paraphrase here, but his response was basically &amp;quot;uh, yeah.&amp;quot; And John filled me in on the dark side of this cool little feature. &lt;/p&gt;  &lt;p&gt;Take a look here: &lt;a title="http://support.microsoft.com/kb/924016" href="http://support.microsoft.com/kb/924016"&gt;http://support.microsoft.com/kb/924016&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;That's right, there is a known bug in SSIS related to this behavior. Basically if there are multiple data flows in the same package, or in multiple packages that run in the same process, it is possible for the cache to be cleared before all of the Lookup transformations are done using it. There are some good workarounds (and some not-so-good ones too - I would probably not want to disable caching for my Lookups to work around this bug) included in the KB article above that can make this feature usable, but you need to be careful using it. And of course if you're using SQL Server 2008 SSIS, you can explicitly cache your data and share it in many more interesting and complex scenarios thanks to the new Cache Connection Manager options added to the Lookup transformation.&lt;/p&gt;  &lt;p&gt;And of course this wasn't the only thing I learned yesterday, but it's the only one for which I have blogging time today. I've got the others filed away so once TechEd is done (maybe before, but as I have two breakout sessions for which to prepare this week I would not hope for too much) I'll have more SSIS goodies to blog.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;[1] Donald was the Program Manager for SSIS during the SQL Server 2005 release, and is now the Principal Program Manager for SQL Server Data Mining. It was a great honor (and a &lt;em&gt;ton of fun&lt;/em&gt;!) to share the spotlight with such an engaging, knowledgeable and funny speaker. And to make things even cooler, we're going to team up again for a repeat performance on Wednesday during the TechEd IT Professionals conference.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-2301832250938158248?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/2301832250938158248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=2301832250938158248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2301832250938158248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/2301832250938158248'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/sharing-lookup-cache.html' title='Sharing The Lookup Cache'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-6998617693406105398</id><published>2008-06-04T13:44:00.002-07:00</published><updated>2008-06-06T18:41:03.133-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Personal Life'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>What A Day!</title><content type='html'>&lt;p&gt;I had the most incredible day yesterday. It was the first day of the big TechEd Developers 2008 conference in Orlando, but that wasn't the thing that had me the most excited. I was (and still am) excited because of my lunch date. So what was I so excited about?&lt;/p&gt;&lt;p&gt;My lunch date was Bill Gates.&lt;/p&gt;&lt;p&gt;No, I'm not kidding. Yes, it was really that cool.&lt;/p&gt;&lt;p&gt;So how did this come about? As you probably know, Microsoft has a wide variety of communities with which they interact, such as the &lt;a href="http://www.microsoft.com/learning/mcp/mct/"&gt;MCT&lt;/a&gt; and &lt;a href="http://mvp.support.microsoft.com/"&gt;MVP&lt;/a&gt; programs. Members of these programs, in one way or another, work with users of Microsoft software around the world, and Microsoft values and appreciates the work that members of these communities perform. Well, to make a long story short, I was nominated as a community "influencer' by some kind folks at Microsoft, and in the end was selected as part of a small group (around 15 people) to meet for lunch with Bill Gates and S. Somasegar (who owns the Developer Division at Microsoft) for an "Influencer Roundtable Luncheon."&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/matthewmct/SEb-oKDmOFI/AAAAAAAAAZ8/KRUhvZTdGUs/s1600-h/award%5B3%5D.jpg"&gt;&lt;img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="484" alt="award" src="http://lh4.ggpht.com/matthewmct/SEb-oxSmsOI/AAAAAAAAAaA/yJY1h2_B9CM/award_thumb%5B1%5D.jpg?imgmax=800" width="299" border="0" /&gt;&lt;/a&gt;[1]&lt;/p&gt;&lt;p&gt;The food was ok (I was hoping that there would be lots of foie gras and black truffles, but the chicken and veggies weren't too disappointing) but the conversation was great. Mr. Gates was totally relaxed and casual, and pretty funny too. For the most part the conversation revolved around ways that people (and companies) can make a difference in the world, which should be no surprise based on the makeup of the group. &lt;/p&gt;&lt;p&gt;And there were some very impressive people on the invitee list. One was Charles Hughes, a past president of the British Computer Society. He is working on a global organization to bring standards for professionalism and ethics to the IT world - something that is obviously very much needed. I had a chance to talk with him earlier in the morning, and he made a very strong impression. All of the things that he is doing are things that are dear to my heard, things that I do on a personal level and try to do locally, but he is working on a global scope, which is somewhat awe-inspiring. I don't know quite how I fit in with this august company, but I am delighted and honored to have been involved.&lt;/p&gt;&lt;p&gt;[1] Can you see the Manowar-shirt reflected in the photo above?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-6998617693406105398?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/6998617693406105398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=6998617693406105398' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6998617693406105398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/6998617693406105398'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/what-day.html' title='What A Day!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/matthewmct/SEb-oxSmsOI/AAAAAAAAAaA/yJY1h2_B9CM/s72-c/award_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8600927897234142120.post-7412553426239287588</id><published>2008-06-01T18:48:00.001-07:00</published><updated>2008-06-01T18:48:44.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tangents'/><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>Stopping the Breakout!</title><content type='html'>&lt;p&gt;When people go to technical conferences, they tend to think along lines something like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;At 9:00 I'm going to go to this breakout session, and then at 10:30 I'm going to go to this other breakout session and then at 12:00 I'm going to go to that breakout session...&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Conference attendees seem to spend all of their time running from one room to another, just to see some &amp;quot;expert&amp;quot; talk about technologies that interest them. How crazy is that?&lt;/p&gt;  &lt;p&gt;Wait a minute, you say! That's not crazy - that's the whole point of going to a technical conference, right?&lt;/p&gt;  &lt;p&gt;Wrong!&lt;/p&gt;  &lt;p&gt;The point of going to a technical conference is to have access to knowledge and resources that you can't get anywhere else. And if you're planning to attend &lt;a href="http://www.microsoft.com/events/TechEd2008/default.mspx"&gt;Microsoft's flagship TechEd conference&lt;/a&gt; this week or next week (or both!) then the breakout sessions will all be included on your post-conference DVDs. That's right - Microsoft will mail you a set of DVDs with all of the sessions on them so you can watch them whenever you want to.&lt;/p&gt;  &lt;p&gt;So what should you do while you're in Orlando? How about visiting the Technical Learning Center. The TLC is the place to be, if you ask me. This is where the experts will be hanging out, just waiting for people like you to come up and say hi and ask a question or two. These experts include Microsoft Certified Trainers, Microsoft Most Valuable Professionals, and quite a few members of the product groups that build the Microsoft tools we all love so much. And not only are there experts, but there are also whiteboards, tables and comfy couches and chairs, so you can relax in delightful comfort while you're basking in the inside knowledge that only the people who build the products can have.&lt;/p&gt;  &lt;p&gt;Oh yeah, they give away the occasional t-shirt as well.&lt;/p&gt;  &lt;p&gt;In any event, it's not too late to fine-tune your conference plans. It would probably be silly to not go to &lt;em&gt;any&lt;/em&gt; breakout sessions at all (because you can always go up and talk to the speakers once the session is over) but make sure you take the time to visit the TLC. I promise you won't regret it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8600927897234142120-7412553426239287588?l=bi-polar23.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bi-polar23.blogspot.com/feeds/7412553426239287588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8600927897234142120&amp;postID=7412553426239287588' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7412553426239287588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8600927897234142120/posts/default/7412553426239287588'/><link rel='alternate' type='text/html' href='http://bi-polar23.blogspot.com/2008/06/stopping-breakout.html' title='Stopping the Breakout!'/><author><name>Matthew Roche</name><uri>http://www.blogger.com/profile/17230399970488763978</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
