<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.conchango.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">SSIS Junkie</title><subtitle type="html">Shifting data in a northern accent&lt;p&gt;
&lt;b&gt;&lt;i&gt;Interested in working at Conchango? &lt;a href=http://blogs.conchango.com/jamiethomson/contact.aspx&gt;Email me&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;&lt;p&gt;

IM me &lt;a target="_blank" href="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=550f681dad532637%40apps.messenger.live.com&amp;mkt=en-GB"&gt;&lt;img style="border-style:none;" src="http://messenger.services.live.com/users/550f681dad532637%40apps.messenger.live.com/presenceimage?mkt=en-GB" width="16" height="16" /&gt;&lt;/a&gt;

Get alerted when a new blog entry is posted   &lt;a href="http://signup.alerts.live.com/alerts/login.do?PINID=39869905&amp;returnURL=http://blogs.conchango.com/jamiethomson/"&gt;&lt;img src="http://images.alerts.live.com/mcwebsite/graphics/blog/alert_signup_eng.gif" alt="Windows Live Alerts" border="0"&gt;&lt;/a&gt;

Translate this page  &lt;script type="text/javascript" src="http://translator.live.com/TranslatePageLink.aspx?pl=en"&gt;&lt;/script&gt;</subtitle><id>http://blogs.conchango.com/jamiethomson/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.conchango.com/jamiethomson/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.20423.1">Community Server</generator><updated>2008-03-12T04:15:55Z</updated><entry><title>WinFS lives!</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/05/16/winfs-lives.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/05/16/winfs-lives.aspx</id><published>2008-05-16T11:16:00Z</published><updated>2008-05-16T11:16:00Z</updated><content type="html">&lt;P&gt;I listen to a lot of podcast series these days (a great way of filling up &lt;A class="" href="http://maps.live.com/?v=2&amp;amp;encType=1&amp;amp;cid=550F681DAD532637!4724" target=_blank&gt;my one hour train commute&lt;/A&gt;) and I've recently subscribed to &lt;A class="" href="http://perspectives.on10.ne/" target=_blank&gt;Perspectives&lt;/A&gt; with &lt;A class="" href="http://perspectives.on10.net/blogs/jonudell/" target=_blank&gt;Jon Udell&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;This morning I listened to his latest one &lt;A class="" href="http://perspectives.on10.net/blogs/jonudell/Where-is-WinFS-now/" target=_blank&gt;Where is WinFS now?&lt;/A&gt; which featured an interview with Quentin Clark from the SQL Server team. Quentin was prominent on the supposedly ill-fated WinFS project but in actual fact he explains how a lot of the technologies developed as part of WinFS have manifested themselves in released technologies today. Entity Framework, HierarchyID data type &amp;amp; Filestream are all set to be released in the next three or four months and all were incubated in WinFS.&lt;/P&gt;
&lt;P&gt;Well worth a listen if you like understanding how and where technologies originate.&lt;/P&gt;
&lt;P&gt;-Jamie&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11118" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server/default.aspx" /><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /></entry><entry><title>We are (still) hiring!</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/05/14/we-are-still-hiring.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/05/14/we-are-still-hiring.aspx</id><published>2008-05-14T17:01:00Z</published><updated>2008-05-14T17:01:00Z</updated><content type="html">&lt;P&gt;Periodically I put a call out on this blog asking for people to send&amp;nbsp;&lt;A class="" href="http://www.conchango.com/"&gt;us&lt;/A&gt; their CVs and in the past its proved to be a good avenue for getting talented people through the doors so I'm doing it again here.&lt;/P&gt;
&lt;P&gt;You may have heard about&amp;nbsp;Conchango's &lt;A class="" href="http://www.conchango.co.uk/news/?article=20080403b" target=_blank&gt;recent purchase by EMC&lt;/A&gt; which has resulted in a number of new opportunities opening up for us and hence we're really in need of new blood to join &lt;A class="" href="http://www.conchango.co.uk/we-are/colleagues/hannah/" target=_blank&gt;our great team&lt;/A&gt;. We're hiring across all of our verticals (finance, retail, energy) and across all technologies/disciplines (.Net, Java, business analysis, Oracle, SQL Server, agile professionals, project managers, CSS, Silverlight and countless others).&lt;/P&gt;
&lt;P&gt;We are based in London, UK by the way but that's not to say we don't need people both nationally and internationally&amp;nbsp;so if you are interested in joining us&amp;nbsp;&lt;A class="" href="http://blogs.conchango.com/jamiethomson/contact.aspx" target=_blank&gt;drop me a line&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Don't forget, we don't use external recruitment consultants for filling our permanent positions so getting in touch with us directly is the only way to go.&lt;/P&gt;
&lt;P&gt;-Jamie&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=11086" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="Conchango" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Conchango/default.aspx" /></entry><entry><title>MDX: Getting the current quarter</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/05/07/mdx-getting-the-current-quarter.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/05/07/mdx-getting-the-current-quarter.aspx</id><published>2008-05-07T12:55:00Z</published><updated>2008-05-07T12:55:00Z</updated><content type="html">&lt;P&gt;I've been wrestling with MDX in PerformancePoint today and was attempting to do something that I thought would be pretty simple. Work out what is the current quarter. No amount of googling turned anything up either.&lt;/P&gt;
&lt;P&gt;It took me a while to figure out so I thought I'd post it up here in case I need it again or if anyone else ever needs it. &lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;member&lt;/FONT&gt;&lt;FONT size=2&gt; [Time].[Calendar YQM View].[Current Quarter] &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;as&lt;/FONT&gt;&lt;FONT size=2&gt; 'StrToMember("[Time].[Calendar YQM View].[Month].[" + Format(Now(), "MMM") + " Year " + Format(Now(), "yyyy") + "].Parent")'&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;There doesn't seem to be a format string that, when used with&amp;nbsp;VBA's Format() function, will return the current quarter which seems, to me, to be a glaring omission. Hence I had to get the current month and ask for its parent.&lt;/P&gt;
&lt;P&gt;Obviously you'll need to mess about with some string manipulation to suit whatever format you are using. In my case the label for the current month looks like this: "May Year 2008" which (I think) is PerformancePoint's doing. It seems utterly ridiculous to me. Surely "May 08", "May 2008" or even "200805" would be better? Still, who am I to complain.&lt;/P&gt;
&lt;P&gt;Hope this helps. if anyone knows a better way feel free to let me know.&lt;/P&gt;
&lt;P&gt;-Jamie&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10984" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="MDX" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/MDX/default.aspx" /><category term="PerformancePoint" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/PerformancePoint/default.aspx" /></entry><entry><title>SSIS: Absolute and relative paths</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/05/04/ssis-absolute-and-relative-paths.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/05/04/ssis-absolute-and-relative-paths.aspx</id><published>2008-05-04T19:19:13Z</published><updated>2008-05-04T19:19:13Z</updated><content type="html">&lt;p&gt;SSIS uses absolute paths to point to objects on the file system. What does that mean? In short it means that in order to point to a file I would have to use the full absolute path, I couldn't give a path that is relative to where the packages resides.&lt;/p&gt; &lt;p&gt;A common complaint about SSIS is that it does not allow the use of relative paths. The most useful application of this feature would be the ability to execute packages (using the &lt;a href="http://msdn.microsoft.com/en-us/library/ms137609.aspx" target="_blank"&gt;Execute Package Task&lt;/a&gt;) where all the packages are (as is typical) stored in a single folder and there have been &lt;a href="http://forums.microsoft.com/MSDN/Search/Search.aspx?words=relative+paths&amp;amp;localechoice=9&amp;amp;SiteID=1&amp;amp;searchscope=forumscope&amp;amp;ForumID=80" target="_blank"&gt;many people complaining&lt;/a&gt; about the absence of this feature over on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1" target="_blank"&gt;SSIS forum&lt;/a&gt;. I do not know why relative paths are not supported in SSIS but I suspect that it is because packages do not always reside in the file system, sometimes they reside in SQL Server's msdb database and in this instance there is no location for a file path to be relative to.&lt;/p&gt; &lt;p&gt;Due to the reason just stated I have always agreed that stipulating the use of absolute paths within SSIS was the right thing to do (and indeed &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2076893&amp;amp;SiteID=1" target="_blank"&gt;I have championed it&lt;/a&gt;) however of late I have changed my mind. Support for relative paths would greatly simplify package deployment and package management and for this reason I have made the following submission to &lt;a href="https://connect.microsoft.com/sqlserver/feedback/?wa=wsignin1.0" target="_blank"&gt;Connect&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/em&gt; &lt;p&gt;&lt;em&gt;A common complaint about SSIS is that file references cannot be relative to wherever the package resides. Relative paths would greatly simplify package deployment and management, especially when using the Execute Package Task.&lt;/em&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Proposed Solution&lt;/strong&gt;&lt;/em&gt; &lt;p&gt;&lt;em&gt;Please introduce a new system variable called [System::PackageLocation] (or similar) that contains the location of the package on the file system. This variable could be used (in conjunction with BLOCKED EXPRESSION to provide support for relative paths.&lt;br&gt;A developer would be able to deploy all of his/her packages to the same location and be confident that through the use of [System::PackageLocation] the Execute Package Task could always easily find the packages that it was executing.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=341880" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=341880"&gt;&lt;em&gt;https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=341880&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;[This is in addition to a number of &lt;a href="https://connect.microsoft.com/SQLServer/feedback/SearchResults.aspx?SearchQuery=relative+paths" target="_blank"&gt;existing submissions&lt;/a&gt; for similar functionality.]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;If you require similar functionality today then you can ape the [System::PackageLocation] behaviour that I just described by telling the package where it is when it executes. I describe a strategy for doing this in my blog entry &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2006/01/05/SSIS_3A00_-Common-folder-structure.aspx" target="_blank"&gt;Common Folder Structure&lt;/a&gt; from January 2006.&lt;/p&gt; &lt;p&gt;What do you think? Should SSIS support relative paths? (That's probably a rhetorical question but I'll ask it anyway.)&lt;/p&gt; &lt;p&gt;-Jamie&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10947" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SQL Server" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /></entry><entry><title>SSDS and Mesh</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/05/01/ssds-and-mesh.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/05/01/ssds-and-mesh.aspx</id><published>2008-05-01T22:27:05Z</published><updated>2008-05-01T22:27:05Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.microsoft.com/sql/dataservices/default.mspx" target="_blank"&gt;SQL Server Data Services&lt;/a&gt; (SSDS) and &lt;a href="http://www.mesh.com" target="_blank"&gt;Live Mesh&lt;/a&gt; are the two technologies that are uppermost in my mind at the moment. [My thoughts on &lt;a href="http://blogs.conchango.com/jamiethomson/archive/tags/SSDS/default.aspx" target="_blank"&gt;SSDS&lt;/a&gt; are here and on Live Mesh &lt;a href="http://jamiethomson.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;amp;_c=BlogPart&amp;amp;partqs=cat%3dLive%2bMesh" target="_blank"&gt;here&lt;/a&gt;.] Hence then it didn't take me long to start wondering about the value of the two of them being integrated together. SSDS is a data &lt;em&gt;storage&lt;/em&gt; platform and Live Mesh is a data &lt;em&gt;synchronisation &lt;/em&gt;platform so put them together and you have the ability to synchronise data stored in SSDS to...well...anywhere that Live Mesh can run. Perhaps Mesh could even be used to synchronise data from one SSDS authority to another?&lt;/p&gt; &lt;p&gt;In order for this to happen an adapter would need to be written that exposes an SSDS data store as a "virtual" device. I sent a message to the SSDS team via their blog site &lt;a href="http://blogs.msdn.com/ssds/default.aspx" target="_blank"&gt;The Long Term Storecast&lt;/a&gt; and I got a reply basically saying they would consider it so here's hoping that this gets implemented. I suspect they have got plenty of time because I don't expect SSDS to get released out of beta until 2009.&lt;/p&gt; &lt;p&gt;What sort of applications do you envisage being built on an SSDS-Mesh tag team? I have a couple of embryonic ideas that need fleshing out a wee bit (euphemistically speaking) but in the meantime I have no doubt there's going to be some killer apps built on these platforms.&lt;/p&gt; &lt;p&gt;-Jamie&lt;/p&gt; &lt;p&gt;[crossposted &lt;a href="http://jamiethomson.spaces.live.com/blog/cns!550F681DAD532637!4655.entry" target="_blank"&gt;here&lt;/a&gt;]&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10921" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /><category term="SSDS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSDS/default.aspx" /><category term="SQL Server Data Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Data+Services/default.aspx" /><category term="Live Mesh" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Live+Mesh/default.aspx" /></entry><entry><title>Do you friendfeed?</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/04/22/do-you-friendfeed.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/04/22/do-you-friendfeed.aspx</id><published>2008-04-22T10:56:00Z</published><updated>2008-04-22T10:56:00Z</updated><content type="html">&lt;P&gt;Is anyone out there using &lt;A href="http://friendfeed.com/"&gt;friendfeed&lt;/A&gt;? I got switched onto it about a month ago and have been "using" it ever since to publish my various blog, photo and random paraphernalia. 
&lt;P&gt;&lt;A href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Doyoufriendfeed_9E4E/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=521 alt=image src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Doyoufriendfeed_9E4E/image_thumb.png" width=712 border=0&gt;&lt;/A&gt; 
&lt;P&gt;What I really like about it is that "using it" consists of setting up all your various feeds and then just leaving it. In fact, unless you want to go and find out what your friends are up to there's no need to visit the site at all - definitely a good thing. 
&lt;P&gt;I'm also a big fan of the &lt;A href="http://apps.facebook.com/friendfeed/"&gt;Facebook Friendfeed application&lt;/A&gt;. 
&lt;P&gt;Are you on friendfeed? If so, feel free to&amp;nbsp;&lt;A class="" href="http://friendfeed.com/jamiet"&gt;follow me&lt;/A&gt;! 
&lt;P&gt;-Jamie&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10752" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="Friendfeed" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Friendfeed/default.aspx" /></entry><entry><title>SSIS: Deleting a group of files</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/04/17/ssis-deleting-a-group-of-files.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/04/17/ssis-deleting-a-group-of-files.aspx</id><published>2008-04-17T21:38:35Z</published><updated>2008-04-17T21:38:35Z</updated><content type="html">&lt;p&gt;A question I quite often see on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1" target="_blank"&gt;SSIS forum&lt;/a&gt; is:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Is there a way to delete a group of files within a directory? ie: I want to delete all files in directorty c:\logs\*.txt &lt;p&gt;(&lt;a title="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3196521&amp;amp;SiteID=1" href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3196521&amp;amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3196521&amp;amp;SiteID=1&lt;/a&gt;)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Well its actually quite easy, you just need&amp;nbsp; ForEach Loop container and the FileSystem Task. Here's how you set up the ForEach Loop container: &lt;p&gt;In the 'Collection' tab you need to specify the enumerator, the folder from which to delete, and a fie mask to specify the files that you want to delete. &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="560" alt="image" src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_thumb.png" width="586" border="0"&gt;&lt;/a&gt;  &lt;p&gt;In the Variable Mappings tab you need to store the enumerated filename in a pre-created variable. The index will be 0 in this case because we are only interested in the file name which gets returned in the first column of the zero-based enumeration. &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_4.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="545" alt="image" src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_thumb_1.png" width="582" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;After that we have the simple task of wiring up the File System task that we do like so: &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_10.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="545" alt="image" src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDeletingagroupoffiles_13480/image_thumb_4.png" width="582" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Note that we have used the variable "[User::FileName] that we populated using the ForEach Lloop container. &lt;p&gt;&amp;nbsp; &lt;p&gt;And that is pretty much it. Very simple indeed when you know how. I have made a demo package available here: &lt;p&gt;&lt;iframe style="border-right:#dde5e9 1px solid;padding-right:0px;border-top:#dde5e9 1px solid;padding-left:0px;padding-bottom:0px;margin:3px;border-left:#dde5e9 1px solid;width:240px;padding-top:0px;border-bottom:#dde5e9 1px solid;height:66px;background-color:#ffffff;" src="http://cid-550f681dad532637.skydrive.live.com/embedrowdetail.aspx/Public/BlogShare/20080417/DeleteFilesInAFolder.zip" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt; &lt;p&gt;-Jamie &lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10696" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /></entry><entry><title>SSIS: Data Profiling Task: Part 10 - Parsing the output</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/04/16/ssis-data-profiling-task-part-10-parsing-the-output.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/04/16/ssis-data-profiling-task-part-10-parsing-the-output.aspx</id><published>2008-04-16T06:42:22Z</published><updated>2008-04-16T06:42:22Z</updated><content type="html">&lt;p&gt;Back in February and March I wrote &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2008/03/02/ssis-data-profiling-task-part-1-introduction.aspx" target="_blank"&gt;a series of blog entries&lt;/a&gt; explaining how to use the various profile requests in the new Data Profiling Task that is coming in SSIS 2008. All of those blog entries explained how to profile some data and analyse it offline using the Data Profile Viewer which is all well and good but quite often you need to use the results of the data profile later in the package, perhaps in a conditional precedence constraint. That is what this blog entry is intended to address.&lt;/p&gt; &lt;p&gt;Fundamentally you need to to extract some information from the data profiling output and given that that output is an XML Document we are going to require the use of the XML Task. Here is the profile output after running &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2008/03/02/ssis-data-profiling-task-part-3-column-null-ratio.aspx" target="_blank"&gt;the Column Null Ratio profile request&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;xml&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;version&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;"&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataProfile&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/sqlserver/2008/DataDebugger/&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataSources&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;ID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;LocalHost.AdventureWorks&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;LocalHost.AdventureWorks&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;LocalHost.AdventureWorks&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;ID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;LocalHost.AdventureWorks1&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;LocalHost.AdventureWorks1&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;LocalHost.AdventureWorks1&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;ID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;profile_output.xml&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;profile_output.xml&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;profile_output.xml&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DtsConnectionManagerID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DtsDataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataSources&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataProfileInput&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;ProfileMode&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;Exact&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;ProfileMode&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Timeout&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;0&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Timeout&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Requests&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;ColumnNullRatioProfileRequest&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;ID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;NullRatioReq&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataSourceID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;LocalHost.AdventureWorks1&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Table&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;Schema&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;Person&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Table&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;Contact&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Column&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;IsWildCard&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;false&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;ColumnName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;MiddleName&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;ColumnNullRatioProfileRequest&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Requests&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataProfileInput&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataProfileOutput&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Profiles&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;ColumnNullRatioProfile&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;ProfileRequestID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;NullRatioReq&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;IsExact&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataSourceID&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;LocalHost.AdventureWorks1&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;DataSourceID&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Table&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;DataSource&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;.&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Database&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;AdventureWorks&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Schema&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;Person&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Table&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;Contact&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;RowCount&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;19972&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Column&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt; &lt;/span&gt;&lt;span style="font-size:10pt;color:red;font-family:'Courier New';"&gt;Name&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;=&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;"&lt;span style="color:blue;"&gt;MiddleName&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;SqlDbType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;NVarChar&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;MaxLength&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;50&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Precision&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;255&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;Scale&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;255&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;LCID&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1033&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;CodePage&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;IsNullable&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;true&lt;/span&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;StringCompareOptions&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;"&lt;span style="color:blue;"&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;NullCount&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;8499&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;NullCount&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;ColumnNullRatioProfile&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;Profiles&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;DataProfileOutput&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New';"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;line-height:115%;font-family:'Courier New';"&gt;DataProfile&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;line-height:115%;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;  &lt;p&gt;The important information here is this bit:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;lt;&lt;/span&gt;&lt;span style="font-size:10pt;color:#a31515;font-family:'Courier New';"&gt;NullCount&lt;/span&gt;&lt;span style="font-size:10pt;color:blue;font-family:'Courier New';"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:'Courier New';"&gt;8499&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;NullCount&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That is the value that we need to extract out of the package and store in a variable within our package so that we can use it in an expression. So, how do we do it? As I said earlier, we need to use the XML Task which can use an &lt;a href="http://en.wikipedia.org/wiki/XPath" target="_blank"&gt;XPath&lt;/a&gt; expression to extract the data that we require. It would be nice if the following XPath expression worked:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;/DataProfile/DataProfileOutput/Profiles[1]/ColumnNullRatioProfile/NullCount&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;But unfortunately it does not. The reason is that the XML above contains a namespace (&lt;span style="color:blue;"&gt;&lt;a href="http://schemas.microsoft.com/sqlserver/2008/DataDebugger/"&gt;http://schemas.microsoft.com/sqlserver/2008/DataDebugger/&lt;/a&gt;&lt;/span&gt;) that cannot be declared in the XML Task - this is a limitation of the XML Task. The workaround is to edit the XPath expression like so:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;/*[local-name()='DataProfile']/*[local-name()='DataProfileOutput']/*[local-name()='Profiles' and position()=1]/*[local-name()='ColumnNullRatioProfile']/*[local-name()='NullCount']&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Here we use the &lt;a href="http://support.microsoft.com/kb/307941" target="_blank"&gt;local-name() XSD extension function&lt;/a&gt; to return the non-qualified element that we are interested in. Take a moment to look at our new XPath expression and notice the similarities and differences between it and our original XPath expression.&amp;nbsp; [Thanks to Matt Masson and David Noor from the SSIS product team for helping me out with this bit]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So now we have the following tasks:  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDataProfilingTaskPart10ConditionalEx_59A0/image_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="170" alt="image" src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDataProfilingTaskPart10ConditionalEx_59A0/image_thumb.png" width="187" border="0"&gt;&lt;/a&gt;  &lt;p&gt;More importantly, let's try and understand how we have configured the XML Task:  &lt;p&gt;&lt;a href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDataProfilingTaskPart10ConditionalEx_59A0/image_6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="564" alt="image" src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDataProfilingTaskPart10ConditionalEx_59A0/image_thumb_2.png" width="825" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;That's really all there is to it. It is important to point out the pertinent property settings:  &lt;ul&gt; &lt;li&gt;OperationType = 'XPATH'  &lt;li&gt;SaveOperationResult = 'TRUE'  &lt;li&gt;SecondOperandtype = 'Direct input'  &lt;li&gt;SecondOperand = &amp;lt;XPath expression from above&amp;gt;  &lt;li&gt;PutResultInOneNode = 'False'  &lt;li&gt;XPathExpression = 'Values'&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Also notice that we are storing the result in a variable called @[User::Result]&lt;/p&gt; &lt;p&gt;Here's a very short video of my running this (I have used a script task to output the parsed value):  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:7c9c6be2-582f-456a-b8a9-5646119936e9" style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;"&gt;&lt;div id="bc14278b-e033-45c4-adb4-33640feafeb1" style="margin:0px;padding:0px;display:inline;"&gt;&lt;div&gt;&lt;a href="http://video.msn.com/video.aspx?vid=b91ee3a8-b805-4303-8290-6a0b77a455b4&amp;amp;from=writer" target="_new"&gt;&lt;img src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/SSISDataProfilingTaskPart10ConditionalEx_59A0/videob630a7f743d2.jpg" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;Pretty easy really. if you have any questions let me know in the comments below.  &lt;p&gt;&amp;nbsp; &lt;p&gt;This concludes my brief summary of parsing the output of the Data Profiling Task that is being introduced with SQL Server Integration Services 2008. For more posts in this series please refer to &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2008/03/02/ssis-data-profiling-task-part-1-introduction.aspx"&gt;SSIS: Data Profiling Task: Part 1 - Introduction&lt;/a&gt;  &lt;p&gt;-Jamie  &lt;p&gt;Disclaimer: The information in this blog post is correct at the time of publication. It may have changed before SQL Server 2008 is released.&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10636" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /><category term="Data Profiling" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Data+Profiling/default.aspx" /></entry><entry><title>SSIS: Package parts</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/04/15/ssis-package-parts.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/04/15/ssis-package-parts.aspx</id><published>2008-04-15T21:39:00Z</published><updated>2008-04-15T21:39:00Z</updated><content type="html">&lt;P&gt;As SQL Server 2008 is practically now a done deal my thoughts have turned to what will come in future versions. One feature I would like is something I'm notionally calling "package parts". Let me explain.&lt;/P&gt;
&lt;P&gt;Today in SSIS we build, distribute and execute these things called packages. Packages are fairly large, verbose, non-descript BLOBs and that has some rather negative implications such as:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Changing anything in the package, even something as small as moving a container one pixel to the left, causes the package to get checked out (assuming you have your packages under source code control)&lt;/LI&gt;
&lt;LI&gt;Support for multiple-developer teams is limited. If you have two people building dataflows then they have to be working on separate packages.&lt;/LI&gt;
&lt;LI&gt;The only method of reusing tasks is copy-and-paste&lt;/LI&gt;
&lt;LI&gt;Comparing two packages to check for differences and hence merging them together is not possible&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;I'd really like these problems to be alleviated in a future version of SSIS and this could be done by breaking the package into separate parts. In other words, containers (and remember, &lt;A href="http://blogs.conchango.com/jamiethomson/archive/2004/12/13/445.aspx" target=_blank&gt;tasks are a type of container&lt;/A&gt;) exist as separate files in solution explorer. This would allow:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Check in/out of containers rather than a whole package&lt;/LI&gt;
&lt;LI&gt;A developer could be building a dataflow without preventing another developer from working on another dataflow&lt;/LI&gt;
&lt;LI&gt;Containers could be instantiated in different places. Define once, use many times - isn't that the premise of code reuse?&lt;/LI&gt;
&lt;LI&gt;Compare tools could be built that understand how a container gets defined once it is serialised as XML without having to worry about extraneous matter such as workflow and designer formatting&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;BR&gt;Does that sound like a good idea? Let me know in the comments and if there is enough interest then I'll submit this to &lt;A href="http://connect.microsoft.com/sqlserver/feedback"&gt;Connect&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;-Jamie&amp;nbsp;&lt;/P&gt;
&lt;P&gt;UPDATE: OK, 2 days on and there have been 18 comments saying "yes" and none saying "no". Hence, I've submitted this &lt;A class="" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=338609" target=_blank&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10626" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /></entry><entry><title>SSIS: MVP Summit 2008</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/04/10/ssis-mvp-summit-2008.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/04/10/ssis-mvp-summit-2008.aspx</id><published>2008-04-10T11:13:21Z</published><updated>2008-04-10T11:13:21Z</updated><content type="html">&lt;p&gt;Next Monday (14th April) brings with it the start of the Microsoft MVP Summit 2008. This is an opportunity for all of the (give or take a few) 4000 MVPs from around the world to travel to Seattle and engage with Microsoft product teams with a view to helping them improve their products. Someone somewhere has deigned that I have the honour of being an MVP bestowed upon me for 2008 and therefore I too shall be boarding a Seattle-bound plane in a couple of days time where I will be spending a lot of time with various folks from the SQL Server Integration Services product team.&lt;/p&gt; &lt;p&gt;As I see it one of the assumed responsibilities of an MVP is to represent the views of the community as well as provide one's own opinions and with that in mind I'd like to invite readers of this blog to leave a comment here answering the questions "What should the SSIS product team be concentrating on for future versions?".&lt;/p&gt; &lt;p&gt;I realise that I'm opening this blog up to swathes of abuse and derision so I would ask that if you have any opinions to proffer then they be constructive, well explained and concentrate on alleviating a particular problem that you have with the product today. For example, my big wish for future versions of SSIS is:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"Other than modularising functionality over multiple packages SSIS doesn't have a very good story around reuse. I would like to see this improved in future versions by giving us the ability to instantiate pre-configured tasks/components in multiple packages."&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That's a lot better than saying:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;"Please allow more reuse in SSIS"&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;You get the idea I'm sure. Be realistic as well, "Make it run on LINUX" isn't ever going to happen no matter how much you might want it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So, let me know what irks you about SSIS today. Logging? Reuse? Design-time experience? Deployment? Multi-developer support? Platform architecture? Metadata support? Better support for beginners? Community engagement? Those are all worthy areas for improvements along with many others - let me know what you think and hopefully there will be a common consensus.&lt;/p&gt; &lt;p&gt;I am obligated to point out that all summit attendees are bound by a non-disclosure agreement so I'm afraid I won't be able to report back on what gets discussed next week. Sorry.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;-Jamie&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10552" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /></entry><entry><title>SSDS: Amazon SimpleDB's "Eventual consistency" model will not be inherent in SSDS</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/03/21/ssds-quot-eventual-consistency-quot-will-not-be-inherent-in-ssds.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/03/21/ssds-quot-eventual-consistency-quot-will-not-be-inherent-in-ssds.aspx</id><published>2008-03-21T15:50:00Z</published><updated>2008-03-21T15:50:00Z</updated><content type="html">&lt;P&gt;From &lt;A class="" href="http://docs.amazonwebservices.com/AmazonSimpleDB/2007-11-07/DeveloperGuide/EventualConsistencySummary.html" target=_blank&gt;Amazon&amp;nbsp;SimpleDB documentation&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;DIV class=titlepage&gt;
&lt;DIV&gt;
&lt;DIV&gt;
&lt;H1 class=topictitle&gt;&lt;EM&gt;Eventual Consistency&lt;/EM&gt;&lt;/H1&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;A class=indexterm id=d0e852&gt;&lt;A class=indexterm id=d0e855&gt;
&lt;P&gt;&lt;EM&gt;Amazon SimpleDB keeps multiple copies of each domain. When data is written or updated [...]&amp;nbsp;and &lt;CODE class=code&gt;Success&lt;/CODE&gt; is returned, all copies of the data are updated. However, it takes time for the update to propagate to all storage locations. The data will eventually be consistent, but an immediate read might not show the change.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Consistency is usually reached within seconds, but a high system load or network partition might increase this time. Repeating a read after a short time should return the updated data. &lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;From the blog of &lt;A href="http://blogs.msdn.com/jcurrier/archive/2008/03/20/what-questions-do-you-have-about-sql-server-data-services.aspx"&gt;Jeff Currier&lt;/A&gt;: (SSDS developer):&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;"We do not use a eventual consistency model. &amp;nbsp;The inserts you do are visible to your on your next query."&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/A&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10331" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /><category term="SSDS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSDS/default.aspx" /><category term="SQL Server Data Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Data+Services/default.aspx" /><category term="Amazon" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Amazon/default.aspx" /></entry><entry><title>SSIS: Some new small features for katmai</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/03/20/ssis-some-new-small-features-for-katmai.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/03/20/ssis-some-new-small-features-for-katmai.aspx</id><published>2008-03-20T20:32:00Z</published><updated>2008-03-20T20:32:00Z</updated><content type="html">&lt;P&gt;In the past few days I have twice received some good news about small enhancements that are making it into katmai.&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&amp;nbsp;Here's the first one:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A class="" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=332344&amp;amp;wa=wsignin1.0" target=_blank&gt;&lt;EM&gt;Output config info to the output window&lt;/EM&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Request: I have recently inherited some packages from someone else. In trying to figure out what they actually do I was getting foxed because configurations were being applied when I opened the package up in BIDS.&lt;BR&gt;I could make changes to a ConnectionString, close the package, open it up again, and my changes would have disappeared. The ConnectionString would revert back to what it was before I changed it.&lt;BR&gt;&lt;BR&gt;This was obviously because configurations were being applied but it wasn't obvious in the UI and I would worry about any inexperienced SSIS developers coming along and being completely confused about what was going on.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Reply: We've incorporated this and added a message to the "Messages" group in the task list when a configuration is being applied in the designer. (We chose not to place it i the output window, since that's more often used for build and execution time messages).&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;That's great news. Small enhancements like this can sometimes make a world of difference, especially to inexperienced SSIS users. Just make sure you keep that&amp;nbsp;task list panel open in Visual Studio or else you'll never see these messages. (N.B. I don't see a messages group in the VS task list so perhaps this should be the Error List panel. We'll see when it ships.)&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;And the second:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A class="" href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=332201" target=_blank&gt;&lt;EM&gt;New @[System::ParentContainer] variable please&lt;/EM&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Request: I want to be able to see WHY a task executes. What is the context in which that task executes? This is particularly valuable when a sub-package is executed multiple times within an ETL job - currently its very difficult -nay, imposible- to understand the order in which thigns execute, especially when things are executing in parallel.&lt;BR&gt;&lt;BR&gt;The current flat list of events that the log providers return is useful but not useful enough. Its not CONTEXTUAL. I would like to (for example) build a log provider that indented the name in the logging tabble X number of times where X is the number of ancestral containers that that container has. For example, something like this:&lt;BR&gt;&lt;BR&gt;\Package1 Starts&lt;BR&gt;\Package1\SequenceContainer1 Starts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\DataFlowTask1 Starts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\SequenceContainer2 Starts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\SequenceContainer2DataFlowTask2 Starts&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\DataFlowTask1 Ends&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\SequenceContainer2DataFlowTask2 Ends&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \Package1\SequenceContainer1\SequenceContainer2 Ends&lt;BR&gt;\Package1\SequenceContainer1 Ends&lt;BR&gt;\Package1 Ends&lt;BR&gt;&lt;BR&gt;Maybe this isn't exactly how I'd present the information but hopefully you get the idea. This is MUCH more useful, much more contextual, than a flat list&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;I would like a new system variable, scoped to every container, called @[System::ParentContainerGUID]. It would contain, obviously, the GUID of the parent container (except in the case of the package container itself where this property would probably be NULL).&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;EM&gt;Reply: We are going to add a new system variable "ParentContainerGUID" for each task, sequence container, For loop, Foreach loop, and Package in SQL Server 2008.&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;SPAN&gt;Knowing&amp;nbsp;a&amp;nbsp;container's&amp;nbsp;parent container (and thus ancestral containers)&amp;nbsp;is really valuable information for anyone&amp;nbsp;that is implementing their own custom logging solution so I'm delighted to see this put into the product.&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;&lt;SPAN&gt;The turnaround time&amp;nbsp;on these connect submissions has been less than 2 weeks (for the first one it was 3 days). See, &lt;A class="" href="http://blogs.conchango.com/jamiethomson/archive/2006/06/13/4073.aspx" target=_blank&gt;using Connect &lt;/A&gt;really does work.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Expect to see both of these features in an upcoming CTP.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;-Jamie&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10323" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /><category term="Microsoft" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Microsoft/default.aspx" /></entry><entry><title>Conchango blogging on the upturn</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/03/15/conchango-blogging-on-the-upturn.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/03/15/conchango-blogging-on-the-upturn.aspx</id><published>2008-03-15T04:04:00Z</published><updated>2008-03-15T04:04:00Z</updated><content type="html">&lt;P&gt;An email from &lt;A href="http://blogs.conchango.com/pauldawson/" target=_blank&gt;Paul Dawson&lt;/A&gt; went around one of Conchango's internal distribution lists a few weeks ago with a call to action for people to contribute more to our blog site. Apparently our tag cloud wasn't fully representative of the things that we are good at:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/clip_image001_2.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height=459 alt=clip_image001 src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/clip_image001_thumb.jpg" width=209 border=0&gt;&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I would agree with that. Whilst it is gratifying for me personally that the blogging I do features so heavily I know that I don't represent &lt;A href="http://www.conchango.com/we-do-this/" target=_blank&gt;the work that we do&lt;/A&gt; and have always been keen for more people in the company to &lt;EM&gt;pick up the blogging baton&lt;/EM&gt;. Of late that has been happening as &lt;A href="http://blogs.conchango.com/pauldawson/" target=_blank&gt;Paul&lt;/A&gt; himself, &lt;A href="http://blogs.conchango.com/michelleflynn/" target=_blank&gt;Michelle Flynn&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/richardwand/" target=_blank&gt;Richard Wand&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/jamessaull/" target=_blank&gt;James Saull&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/anthonysteele/default.aspx" target=_blank&gt;Anthony Steele&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/paulgalvin/default.aspx" target=_blank&gt;Paul Galvin&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/taylercresswell/default.aspx" target=_blank&gt;Tayler Cresswell&lt;/A&gt;, &lt;A href="http://blogs.conchango.com/jamesrowlandjones/default.aspx" target=_blank&gt;JRJ&lt;/A&gt; (that's what everyone calls him), &lt;A href="http://blogs.conchango.com/derekdunlop/default.aspx" target=_blank&gt;Derek Dunlop&lt;/A&gt; and others (sorry to those I haven't mentioned) have all visibly increased their output. Most notable is the rise of our &lt;A href="http://blogs.conchango.com/default.aspx?GroupID=8" target=_blank&gt;interactive media team&lt;/A&gt; in this friendly rivalry between the different teams within Conchango which is great to see because that is probably the area in which differentiate ourselves the most. Is it having an effect? Let's take a look at the tag cloud as it appears today on the brand new &lt;A href="http://www.conchango.com/" target=_blank&gt;Conchango.com&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height=376 alt=image src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/image_thumb_1.png" width=193 border=0&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;At first glance it might not look too different but clearly &lt;A href="http://blogs.conchango.com/tags/web+2.0/default.aspx" target=_blank&gt;Web 2.0&lt;/A&gt; activity is increasing, as is &lt;A href="http://blogs.conchango.com/tags/recruitment/default.aspx" target=_blank&gt;recruitment&lt;/A&gt;. I would expect it to change more in the coming weeks - I hope it does.&lt;/P&gt;
&lt;P&gt;Of course, you won't want to subscribe to all of these blogs individually so in order that you don't miss the wit, knowledge and &lt;A href="http://blogs.conchango.com/tags/inane+waffle/default.aspx" target=_blank&gt;inane waffle&lt;/A&gt; of this highly-tuned machine make sure that you stick our blogs site's &lt;A href="http://blogs.conchango.com/MainFeed.aspx" target=_blank&gt;all-encompassing RSS feed&lt;/A&gt; onto your reader. Go on, you know you want to.&lt;/P&gt;
&lt;HR&gt;

&lt;P&gt;In other related news I've been asked by one of our retail dynamos, Howard Pull, to publicise an event that we've got coming up in the next few weeks.&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=5 width=963 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;
&lt;P&gt;&lt;A href="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/clip_image001%5B5%5D.jpg"&gt;&lt;IMG style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height=54 alt=clip_image001[5] src="http://blogs.conchango.com/blogs/jamiethomson/WindowsLiveWriter/Conchangobloggingontheupturn_13023/clip_image001%5B5%5D_thumb.jpg" width=104 border=0&gt;&lt;/A&gt; 
&lt;P&gt;Conchango is running a free invitation-only practical workshop for retailers to identify how to increase Customer value, Product profitability and business performance using Business Intelligence (BI). Many retailers have existing data assets that they are not using to full effect, and we will focus on how you can accelerate your ROI using investments you may already have made. 
&lt;P&gt;The half-day workshop will be run by Conchango Retail and BI Consultants, along with our guest speaker, Michael Azoff, a leading BI Analyst from Butler Group. We will focus on the areas you identify via a &lt;A href="http://www.conchango.com/retailbisurvey"&gt;7 question survey&lt;/A&gt; as your most important. 
&lt;P&gt;Conchango is working with many of the UK’s leading retail organisations such as Tesco, Comet and Marks and Spencer to help them realise the true benefits of BI. We work with them to identify how to exploit their data to support strategies for Supplier Management, Store Management, SKU rationalisation, Cost Optimisation, increased Customer Profitability or just business Performance Measurement. 
&lt;P&gt;Let us help you by joining us in this hands-on workshop, where we’ll expect you to walk away with some practical solutions to your data issues.&amp;nbsp; 
&lt;P&gt;&lt;B&gt;What:&lt;/B&gt; Business Intelligence in Retail - half-day workshop 
&lt;P&gt;&lt;B&gt;Where:&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Energy Clinic, 132 Commercial Street, London, E1 6NG 
&lt;P&gt;&lt;B&gt;When:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 09 April 2008, 8:30am – 12:30pm 
&lt;P&gt;&lt;B&gt;Register:&lt;/B&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To register for a FREE place please email &lt;A href="mailto:talktous@conchango.com"&gt;talktous@conchango.com&lt;/A&gt; 
&lt;P&gt;&lt;B&gt;Agenda:&lt;/B&gt; 
&lt;UL&gt;
&lt;LI&gt;A Welcome Breakfast 
&lt;LI&gt;Introduction – Iyas AlQasem, Technology Director and Head of BI Consulting, Conchango 
&lt;LI&gt;BI Market View – A market overview on the latest BI Trends from &lt;B&gt;Michael Azoff a leading BI analyst for Butler Group&lt;/B&gt; 
&lt;LI&gt;Workshop - Part 1 – Addressing your Top 3 BI concerns 
&lt;LI&gt;Performance Measurement &amp;amp; Management - David Ellis, Head of Performance Management at Conchango 
&lt;LI&gt;Workshop - Part 2 – Planning your BI strategy 
&lt;LI&gt;Range Planning Demonstration using Microsoft PerformancePoint 
&lt;LI&gt;Summary - Round up of the days findings &amp;amp; close &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;We would like to hear what your BI and data issues are by asking you to complete a 3 minute online survey, consisting of only 7 questions. By way of thank you we will share the survey results with you (excluding the company names of course) so you can see what your industry peers are thinking.&amp;nbsp;&amp;nbsp; 
&lt;P&gt;To complete the survey click here: &lt;U&gt;&lt;A href="http://www.conchango.com/retailbisurvey"&gt;http://www.conchango.com/retailbisurvey&lt;/A&gt;&lt;/U&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;It should be a great event. If nothing else you get to meet my boss, Iyas AlQasem, and ask him what a pain in the @rse I am to manage :) 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We also involve ourselves heavily in community events as well as corporate ones and &lt;A href="http://blogs.conchango.com/michelleflynn/" target=_blank&gt;Michelle&lt;/A&gt; is the main driver behind this. In addition to hosting the &lt;A href="http://blogs.conchango.com/michelleflynn/archive/2008/03/13/london-net-user-group.aspx" target=_blank&gt;London .Net user group&lt;/A&gt; earlier this week and the &lt;A href="http://blogs.conchango.com/jamesrowlandjones/archive/2007/04/29/Conchango-hosts-London-SQL-Server-User-Group-Meeting-and-London-SQL-Server-BI-User-Group-Meeting.aspx" target=_blank&gt;London SQL Server/BI user group meetings last April&lt;/A&gt; we are also going to be hosting the inaugural UK Silverlight User group meeting at &lt;A class="" href="http://maps.live.com/?v=2&amp;amp;cid=550F681DAD532637!3889&amp;amp;encType=1" target=_blank&gt;our office on the London southbank&lt;/A&gt;. Paul has &lt;A href="http://blogs.conchango.com/pauldawson/archive/2008/03/15/inaugural-uk-silverlight-user-group.aspx" target=_blank&gt;more info&lt;/A&gt;. 
&lt;P&gt;Finally we are, as ever, recruiting for more talented people to join our team so &lt;A class="" href="http://www.conchango.com/we-are/colleagues/hannah/" target=_blank&gt;if you want to see your name up here&lt;/A&gt;&amp;nbsp;&lt;A href="http://blogs.conchango.com/jamiethomson/contact.aspx" target=_blank&gt;let me know&lt;/A&gt;. Remember, all of our hiring is done through direct contact. We don't use recruitment consultants. 
&lt;P&gt;-Jamie &lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10200" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="Inane Waffle" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Inane+Waffle/default.aspx" /><category term="Conchango" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Conchango/default.aspx" /></entry><entry><title>SSIS: Connecting to Oracle just got a whole lot better</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/03/14/ssis-support-for-oracle-just-got-a-whole-lot-better.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/03/14/ssis-support-for-oracle-just-got-a-whole-lot-better.aspx</id><published>2008-03-14T19:41:00Z</published><updated>2008-03-14T19:41:00Z</updated><content type="html">&lt;P&gt;There was some great news this week for SSIS developers that are building solutions involving databases other than SQL Server; Microsoft will, later this year,&amp;nbsp;be releasing new connectors for Oracle, Teradata and SAP BW. Check out Darvey Lavender's announcement on the &lt;A class="" href="http://ssis.wik.is/FAQ" target=_blank&gt;SSIS connectivity wiki&lt;/A&gt; or read &lt;A class="" href="http://blogs.msdn.com/mattm/archive/2008/03/10/new-connectivity-options-in-2008.aspx" target=_blank&gt;Matt Masson's blog entry&lt;/A&gt; for more details. I should point out that you will need Enterprise Edition of SSIS in order to use them and&amp;nbsp;I also don't know whether the connectors will work on SQL Server 2005 or whether they will solely be for SQL Server 2008. Hopefully by the time you read this someone in the know will have left a comment here filling in the gaps.&lt;/P&gt;
&lt;P&gt;For Oracle you now get the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Oracle connection manager&lt;/LI&gt;
&lt;LI&gt;Bulk load destination&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;This signals a marked change in policy from Microsoft. Precisely three years and one day ago Darvey's predecessor Donald Farmer posted a blog entry entitled &lt;A class="" href="http://www.sqljunkies.com/WebLog/donald_farmer/archive/2005/03/13/8819.aspx"&gt;Oracle and SQL Server Integration Services&lt;/A&gt; where he stated:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;I do not expect that Microsoft will write an Oracle fast loader - currently it comes in around number 999 in my list of 1000 features for next version, just slightly ahead of recompiling for Linux.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Clearly this feature got raised up the priority list. I wonder if this was Darvey's influence that led to this change in direction? Or perhaps the &lt;A class="" href="http://www.guardian.co.uk/business/2007/oct/22/microsoft.microsoft" target=_blank&gt;european commission's&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For those who either can't wait until the connectors are&amp;nbsp;released or can't afford enterprise edition there are still options available to you. Rather than repeat myself you should head to my previous blog entry &lt;A class="" href="http://blogs.conchango.com/jamiethomson/archive/2006/04/07/SSIS_3A00_-Persistent-Oracle-Connector.aspx" target=_blank&gt;Persistent Oracle Connector&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;-Jamie&lt;/P&gt;
&lt;P&gt;P.S. For more information about Oracle and SSIS go here: &lt;A href="http://blogs.conchango.com/jamiethomson/archive/tags/Oracle/SSIS/default.aspx"&gt;http://blogs.conchango.com/jamiethomson/archive/tags/Oracle/SSIS/default.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10192" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /><category term="Oracle" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/Oracle/default.aspx" /></entry><entry><title>SSIS: Populate the Lookup component cache from a flat file</title><link rel="alternate" type="text/html" href="http://blogs.conchango.com/jamiethomson/archive/2008/03/12/ssis-populate-the-lookup-component-cache-from-a-flat-file.aspx" /><id>http://blogs.conchango.com/jamiethomson/archive/2008/03/12/ssis-populate-the-lookup-component-cache-from-a-flat-file.aspx</id><published>2008-03-12T04:15:55Z</published><updated>2008-03-12T04:15:55Z</updated><content type="html">&lt;p&gt;Its a commonly held belief that the Lookup component cache has to be populated from a relational source.&amp;nbsp; Well, that's true, but there is a pretty handy workaround. SQL Server 2005 introduced the OPENROWSET(BULK) command which can return the contents of a file as a recordset hence something like the following will successfully populate the Lookup cache:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font face="Courier New"&gt;SELECT a.* FROM OPENROWSET( BULK 'c:\test\values.txt', FORMATFILE = 'c:\test\values.fmt') AS a;&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Thanks to Grant Dickinson for letting me know about this little tip. I've actually been meaning to blog about this since he told me about it way back in February 2007 but I never got round to writing a substantial blog post around it. So instead this evening I just thought, to hell with it, just throw SOMETHING up there and have done with it. So here you go.&lt;/p&gt; &lt;p&gt;As I'm sure many of you aware by now, this workaround won't be necessary in SSIS2008 due to the &lt;a href="http://blogs.conchango.com/jamiethomson/archive/2007/11/16/Katmai_3A00_-SSIS_3A00_-Lookup-component-gets-a-makeover.aspx" target="_blank"&gt;enhanced Lookup functionality&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Hope that helps!&lt;/p&gt; &lt;p&gt;-Jamie&lt;/p&gt;&lt;img src="http://blogs.conchango.com/aggbug.aspx?PostID=10142" width="1" height="1"&gt;</content><author><name>jamie.thomson</name><uri>http://blogs.conchango.com/members/jamie.thomson.aspx</uri></author><category term="SQL Server Integration Services" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SQL+Server+Integration+Services/default.aspx" /><category term="SSIS" scheme="http://blogs.conchango.com/jamiethomson/archive/tags/SSIS/default.aspx" /></entry></feed>