<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ashvini Sharma</title><link>http://sqljunkies.com/WebLog/ashvinis/default.aspx</link><description>A SQL Server Integration Services Blog</description><dc:language>en-US</dc:language><generator>CommunityServer 1.0 (Build: 1.0.1.50214)</generator><item><title>DTS to SSIS functionality differences and mappings</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/07/05/15996.aspx</link><pubDate>Tue, 05 Jul 2005 18:24:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15996</guid><dc:creator>ashvinis</dc:creator><slash:comments>2</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15996.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15996</wfw:commentRss><description>&lt;P&gt;This came up at a webcast a couple of weeks back and I couldn't find this anywhere. Jim, our King of Migration/Upgrades/Pipeline components, is about to start blogging any minute now, and will have a lot more information on these. In the meantime, I had to get a high level version done for WWPC, so here's the detailed version as well.&lt;/P&gt;
&lt;P&gt;There's always harm in making comparisons between DTS and SSIS for folks that don't understand the magnitude of changes because this might imply a trivial renaming of features and tweaks to others... well, in the interest of helping those more familiar with the products make the mapping, here's a take on how folks did things in DTS and how to do the same in SSIS: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Design Time Debugging&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;DTS: Messageboxes in ActiveX scripts. &lt;/P&gt;
&lt;P&gt;SSIS: MessageBoxes in Script tasks (); Breakpoints in script task code thanks to VSA; visualizers in data flow; Better error messages; Error Flows&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Location independent package initialization&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: Dynamic Properties&amp;nbsp;+ ActiveX scripts.&lt;/P&gt;
&lt;P&gt;SSIS: Configurations + Property Expressions. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Loops&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: ActiveX scripts.&lt;/P&gt;
&lt;P&gt;SSIS: Built in Loop construct including predefined helper enumerations for looping over files, tables, roles, etc. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Restartability&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: ActiveX scripts&lt;/P&gt;
&lt;P&gt;SSIS: Control flow checkpoints support built into the product. Data Flow can be simulated by breaking data flow into separate control flow tasks that provide checkpoint functionality by writing state out to raw files, SQL tables, etc. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Deployment&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: Tips on SQLDTS.com&lt;/P&gt;
&lt;P&gt;SSIS: Deployment wizard; support in dtutil.exe for batch files. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Operational Security&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: Package Password, SQL Security, Agent Service Account. &lt;/P&gt;
&lt;P&gt;SSIS: Package Password, numerous other encryption options, SQL Security, additional Roles, proxies.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Extensibility Points&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: Tasks, Transforms (hard)&lt;/P&gt;
&lt;P&gt;SSIS: Tasks, Transforms, Source Adapters, Destination Adapters, Log Providers, Loop enumerators, Connection Managers. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Data Transformations and Cleansing &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: Limited set of transformations + ActiveX&lt;/P&gt;
&lt;P&gt;SSIS: Extensive list of transforms, High performance data flow engine, domain independent cleansing transforms from Microsoft Research, error flows. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;BI Functionality&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;DTS: AS/DM Tasks&lt;/P&gt;
&lt;P&gt;SSIS: AS/DM Tasks; ability to push data directly to AS and DM without landing; Reports based on packages; Shared metadata between AS/RS/IS projects.&lt;/P&gt;
&lt;P&gt;Any others that should be included? Anyone else done this mapping already?&lt;/P&gt;
&lt;P&gt;regards&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15996" width="1" height="1"&gt;</description></item><item><title>SSIS: How to do Upserts</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/06/15/15829.aspx</link><pubDate>Wed, 15 Jun 2005 19:34:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15829</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15829.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15829</wfw:commentRss><description>&lt;P&gt;This one came up earlier today. How would one do Upsert in the pipeline? &lt;/P&gt;
&lt;P&gt;Lets break down the Upsert (Insert if no row currently exist, Update if it does) into two parts: &lt;/P&gt;
&lt;P&gt;1. Find&amp;nbsp;out whether a row should be inserted or updated in the table. &lt;/P&gt;
&lt;P&gt;2. Perform the insert or update. &lt;/P&gt;
&lt;P&gt;For #1, various options are available. Perhaps the first thing to consider would be a lookup transform. The caching mode would depend on whether you can fit everything in memory (Full), the reference set is too big and there're repeated keys you need to lookup (Partial), or the reference set is too big and there are no repeated keys (None). The SCD transform logically uses the no cache lookup internally.&lt;/P&gt;
&lt;P&gt;Another way some folks have done this detection is to use an outer join and use 'Null' keys. &lt;/P&gt;
&lt;P&gt;For #2, the inserts are straightforward.. just push them out to a destination using either OLEDB or SQL depending on your destination type, and using fast load/table locking if appropriate. &lt;/P&gt;
&lt;P&gt;For Updating existing rows, you have several options. The most straight forward is to use an OLEDB Command destination that sends one SQL statement per row coming in. This is what the SCD configures. That might be okay if you've only got a small number of updates, however if you've got a large set, I prefer landing this set to a temporary table and then doing Set based updates in a following Execute SQL task. This was briefly described &lt;a href="http://www.sqljunkies.com/WebLog/ashvinis/archive/2005/02/03/7275.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Deletes can be handled the same way as Updates... land the keys to a separate table and blitz through the deletions using a set based SQL operation. &lt;/P&gt;
&lt;P&gt;Any other best practices you've found in your usage?&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15829" width="1" height="1"&gt;</description></item><item><title>WAITFOR</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/06/14/15818.aspx</link><pubDate>Tue, 14 Jun 2005 15:43:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15818</guid><dc:creator>ashvinis</dc:creator><slash:comments>1</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15818.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15818</wfw:commentRss><description>&lt;P&gt;A generally useful part of your toolkit, I just found out about the new version of the WAITFOR statement in SQL Server 2005. BOL says it &lt;/P&gt;
&lt;P&gt;"Blocks the execution of a batch, stored procedure, or transaction until a specified time or time interval is reached, or a specified statement modifies or returns at least one row."&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.juliankuiters.id.au/article.php/go-home-with-waitfor"&gt;http://www.juliankuiters.id.au/article.php/go-home-with-waitfor&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15818" width="1" height="1"&gt;</description></item><item><title>SSIS: Practical perf debugging - baselining</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/06/14/15816.aspx</link><pubDate>Tue, 14 Jun 2005 14:36:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15816</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15816.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15816</wfw:commentRss><description>&lt;P&gt;We had a lot of interest in SSIS at TechEd. One of our fervent users, Thomas from Denmark, asked how to further optimize his ~500K rows/second package. This is a commonly asked question and one of the first thing&amp;nbsp;we need to have a discussion around getting a baseline perf&amp;nbsp;for your environment. Steps: &lt;/P&gt;
&lt;P&gt;0. Make sure you have enough memory for package execution. No use worrying about perf if you're swapping buffers out to disk. &lt;/P&gt;
&lt;P&gt;1. Get the following baseline: &lt;/P&gt;
&lt;P&gt;a. Source-&amp;gt;RowCount throughput&lt;/P&gt;
&lt;P&gt;b. Source-&amp;gt;Destination throughput&lt;/P&gt;
&lt;P&gt;c. For existing packages, replace Destinations with RowCount. &lt;/P&gt;
&lt;P&gt;Once we have these 3 numbers, we have a good idea about some bounds&amp;nbsp;for the performance. Given these, &lt;/P&gt;
&lt;P&gt;2. Incrementally add group of components to see effect on wall clock. &lt;/P&gt;
&lt;P&gt;3. Optimize slow components for resources available. E.g. if you have more CPUs available, utilize them. &lt;/P&gt;
&lt;P&gt;If you find interesting performance characteristics, let us know! &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15816" width="1" height="1"&gt;</description></item><item><title>SSIS: Using InfoPath XML Files in SSIS XMLSource Adapter</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/05/25/15654.aspx</link><pubDate>Wed, 25 May 2005 21:54:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15654</guid><dc:creator>ashvinis</dc:creator><slash:comments>1</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15654.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15654</wfw:commentRss><description>&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;Thanks to Wenyang for writing all this up! Just posting it on her behalf. &lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;FONT&gt;Summary&lt;/FONT&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;InfoPath forms can be saved to XML, these XML Files can later be used in SSIS XMLSource adapter to pull out the data in tables and columns. However, there are some common problems you may meet in these scenarios. This article describes how to work around these potential problems. The issues mentioned in this article is not only specific to InfoPath files, it can also be referenced in other similar situations as well.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;SPAN&gt;1&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Stripping out multiple spaces&lt;o:p&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;P&gt;XMLSource does not support multiple namespaces. For example, for a XML saved from InfoPath, it will typically look like &lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xml version="1.0" encoding="UTF-8" &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;?&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN&gt;mso-infoPathSolution PIVersion="1.0.0.0" solutionVersion="1.0.0.1" name="urn:schemas-microsoft-com:office:infopath:oob:ExpenseReportDomestic:1033" productVersion="11.0.6357" &lt;/SPAN&gt;&lt;SPAN&gt;?&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN&gt;mso-application progid="InfoPath.Document"&lt;/SPAN&gt;&lt;SPAN&gt;?&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:expenseReport&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; xmlns:exp&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;http://schemas.microsoft.com/office/infopath/2003/sample/ExpenseReport&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; xmlns:my&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;http://schemas.microsoft.com/office/infopath/2003/myXSD&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; xmlns:xhtml&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;http://www.w3.org/1999/xhtml&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; xml:lang&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;en-us&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:employee&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:prefix&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:givenName&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:middleName&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:surname&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;exp:suffix&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;…&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;Note the multiple namespaces specified. When we use this file for XMLSource adapter, and ask the XMLSource to infer a schema for the xml file by pressing “Generate XSD…” button in the UI, an error will pop up saying&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;“Unable to infer the XSD from the XML file. The XML contains multiple namespaces.”&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Work around:&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Unless the multiple namespaces in the above xml make real differences in your scenario, you can always try to use only one single namespace to work around the problem. There are two options&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Manually remove the unnecessary namespaces specified on the XML file.&lt;/LI&gt;
&lt;LI&gt;Use a SSIS XMLTask XSLT to strip out namespaces.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;XMLTask supports an operation called XSLT, in which users can specify a XML Source, a XSL style sheet source, and then execute to apply the style sheet on the XML source to get a file in new format. We can use a style sheet to get rid of multiple namespaces from the XML file.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;I have a sample xsl style sheet which can be used to strip out all namespaces(use this only in case when multiple namespaces don’t make sense to your scenario)&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN&gt;xml version="1.0" encoding="utf-8" &lt;/SPAN&gt;&lt;SPAN&gt;?&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:stylesheet version&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;1.0&lt;/STRONG&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;xmlns:xsl&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;http://www.w3.org/1999/XSL/Transform&lt;/STRONG&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:output&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;&lt;SPAN&gt;method&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;xml&lt;/STRONG&gt;&lt;SPAN&gt;"&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt; indent&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;no&lt;/STRONG&gt;&lt;SPAN&gt;" /&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template match&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;/|comment()|processing-instruction()&lt;/STRONG&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;A href="file://wenhu3/c$/Bugs/XMLSrc/removeNS.xsl##"&gt;&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:copy&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:apply-templates&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:copy&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template match&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;*&lt;/STRONG&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:element name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;{local-name()}&lt;/STRONG&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:apply-templates&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;@*|node()&lt;/STRONG&gt;&lt;SPAN&gt;" /&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:element&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template match&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;@*&lt;/STRONG&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:attribute name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;{local-name()}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:value-of&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&lt;SPAN&gt;select&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;SPAN&gt;" /&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:attribute&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:template&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;xsl:stylesheet&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;The way to use this style sheet is: In SSIS designer, add a XMLTask, choose XSLT operation, then point “Source” to your XML source file and “SecondOperand” to your XSL file(“File Connection” as the Type can be used so as to conveniently pointing to files in both cases), set “SaveOperationResult” to true to obtain the XSLT operation result. Then use this result in XMLSource in the downstream dataflow task.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Note: &amp;lt;?mso-infoPath…&amp;gt; will be ignored by XMLSource, so it’s ok to leave it there.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;SPAN&gt;2&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Wrap up the fields in a single layer XML source&lt;o:p&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;P&gt;An extreme example of using InfoPath xml source is when the form has only one single level, no hierarchy. In other words, originally the XML file is something like&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;?mso-infoPathSolution solutionVersion="1.0.0.2" productVersion="11.0.6357" PIVersion="1.0.0.0" href="file:///c:\infofile.xsn" name="urn:schemas-microsoft-com:office:infopath:Info1:-myXSD-2005-04-27T19-26-55" ?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;?mso-application progid="InfoPath.Document"?&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;my:myFields xmlns:my="http://schemas.microsoft.com/office/infopath/2003/myXSD/2005-04-27T19:26:55" &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;my:FirstName&amp;gt;Wenyang&amp;lt;/my:FirstName&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;my:LastName&amp;gt;Hu&amp;lt;/my:LastName&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;my:PhoneNumber&amp;gt;425-123-4567&amp;lt;/my:PhoneNumber&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;lt;/my:myFields&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;XMLSource will think all fields under the root – “FirstName”/”LastName”/”PhoneNumber” as tables, instead of columns which belong to a same table. That’s not going to work. &lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Work Around&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;The way to work around this is, after removing the unnecessary namespaces, add a pair of tags to wrap the fields. So change the above to &lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;myTable&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;myFields&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;FirstName&amp;gt;Wenyang&amp;lt;/FirstName&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;LastName&amp;gt;Hu&amp;lt;/LastName&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;PhoneNumber&amp;gt;425-123-4567&amp;lt;/PhoneNumber&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/myFields&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;/myTable&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;Then the columns will be retrieved from XMLSource successfully - there will be an output called “myFields” and “FirstName”/”LastName”/”PhoneNumber” will be the output columns of that output, as expected.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;H2&gt;&lt;SPAN&gt;&lt;SPAN&gt;3&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Deal with the fields with missing values&lt;o:p&gt;&lt;/o:p&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;?&lt;/SPAN&gt;&lt;SPAN&gt;xml version="1.0" encoding="utf-8" &lt;/SPAN&gt;&lt;SPAN&gt;?&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;expenseReport lang&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;="&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;en-us&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;employee&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;prefix&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;givenName&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;middleName&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;surname&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;suffix&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;singleName&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;John&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;singleName&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;name&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;address&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;1234 56th AVE&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line2&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Unit B101&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line2&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line3&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;line4&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN&gt;/&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;city&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;Redmond&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;city&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;stateProvince&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;WA&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;stateProvince&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;postalCode&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;98034&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;postalCode&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;country&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;USA&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;country&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;address&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;…&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;identificationNumber&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;STRONG&gt;1336&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;identificationNumber&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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;&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;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;email&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;STRONG&gt;johns@hotmail.com&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;email&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&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; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;employee&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN&gt;expenseReport&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It’s common that the InfoPath users to leave certain fields in a form blank, like the “prefix” and “givenName” fields in “name” above. Then in XMLSource, if the users ask the XMLSource to infer a XSD, the inferred schema won’t set the data types for those fields, then a bug in XMLDataReader will cause all those fields be treated as tables. That’s very wrong. &lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Work Around&lt;o:p&gt;&lt;/o:p&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Before getting the fix for the bug, work arounds for this problem include&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;1)&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Give values for all fields.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;SPAN&gt;2)&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;1) sometime is not acceptable. In that case, ask the XMLSource to infer a XSD file first, then manually edit that XSD file, add “type="xs:string” to that element.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;For example, change&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;xs:element minOccurs="0" name="prefix"/&amp;gt; to&lt;/P&gt;
&lt;P&gt;&lt;SPAN&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;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;xs:element minOccurs="0" name="prefix" type="&lt;STRONG&gt;xs:string&lt;/STRONG&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;Will solve this problem.&lt;/P&gt;
&lt;P&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15654" width="1" height="1"&gt;</description></item><item><title>SSIS: Downloading a file over HTTP</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/05/25/15653.aspx</link><pubDate>Wed, 25 May 2005 21:46:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:15653</guid><dc:creator>ashvinis</dc:creator><slash:comments>3</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/15653.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=15653</wfw:commentRss><description>&lt;P&gt;A question came up on an internal alias about how can one download a file over HTTP. Here's a script that does that, should be trivial to wrap it inside a task if you forsee doing this over and over again. &lt;/P&gt;
&lt;P&gt;I can't get the colors to show up on the post, though.&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Imports&lt;/SPAN&gt;&lt;SPAN&gt; System.Net&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Public&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt;&lt;/FONT&gt; Main()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt;&lt;/FONT&gt; myWebClient &lt;FONT&gt;&lt;SPAN&gt;As&lt;/SPAN&gt;&lt;/FONT&gt; WebClient&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt;&lt;/FONT&gt; remoteUri &lt;FONT&gt;&lt;SPAN&gt;As&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt;&lt;/FONT&gt; localFileName &lt;FONT&gt;&lt;SPAN&gt;As&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Dim&lt;/SPAN&gt;&lt;/FONT&gt; fireAgain &lt;FONT&gt;&lt;SPAN&gt;As&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;Boolean&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Try&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myWebClient = &lt;FONT&gt;&lt;SPAN&gt;New&lt;/SPAN&gt;&lt;/FONT&gt; WebClient()&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;' get the context from variables&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; remoteUri = &lt;FONT&gt;&lt;SPAN&gt;CStr&lt;/SPAN&gt;&lt;/FONT&gt;(Dts.Variables(&lt;FONT&gt;&lt;SPAN&gt;"RemoteUri"&lt;/SPAN&gt;&lt;/FONT&gt;).Value)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; localFileName = &lt;FONT&gt;&lt;SPAN&gt;CStr&lt;/SPAN&gt;&lt;/FONT&gt;(Dts.Variables(&lt;FONT&gt;&lt;SPAN&gt;"LocalFileName"&lt;/SPAN&gt;&lt;/FONT&gt;).Value)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;' tell the user what we're downloading where&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.Events.FireInformation(0, &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;.Empty, &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;.Format(&lt;FONT&gt;&lt;SPAN&gt;"Downloading '{0}' from '{1}'"&lt;/SPAN&gt;&lt;/FONT&gt;, localFileName, remoteUri), &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;.Empty, 0, fireAgain)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;' do the actual download&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myWebClient.DownloadFile(remoteUri, localFileName)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.TaskResult = Dts.Results.Success&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;Catch&lt;/SPAN&gt;&lt;/FONT&gt; ex &lt;FONT&gt;&lt;SPAN&gt;As&lt;/SPAN&gt;&lt;/FONT&gt; Exception&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;' post the error message we got back. &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.Events.FireError(0, &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;.Empty, ex.Message, &lt;FONT&gt;&lt;SPAN&gt;String&lt;/SPAN&gt;&lt;/FONT&gt;.Empty, 0)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dts.TaskResult = Dts.Results.Failure&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;End&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;Try&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New"&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT&gt;&lt;SPAN&gt;End&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT&gt;&lt;SPAN&gt;Sub&lt;/SPAN&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=15653" width="1" height="1"&gt;</description></item><item><title>Integration Services @ TechEd U.S.</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/05/17/14783.aspx</link><pubDate>Tue, 17 May 2005 20:50:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:14783</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/14783.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=14783</wfw:commentRss><description>&lt;P&gt;&lt;A href="http://www.sqljunkies.com/weblog/kamalh/"&gt;Kamal&lt;/A&gt; and I are going to be presenting three sessions between us on Integration Services at the TechEd in a&amp;nbsp;few weeks. Of course no SSIS conference would be complete without &lt;A href="http://sqljunkies.com/WebLog/donald%20farmer/"&gt;Donald&lt;/A&gt;&amp;nbsp;who will have a couple of surprises for attendees. In addition to the formal talks we've also got some time set aside to chat in the Cabanas. &lt;/P&gt;
&lt;P&gt;The titles are (paraphrasing): &lt;/P&gt;
&lt;P&gt;- Overview of data warehousing support in SSIS&lt;/P&gt;
&lt;P&gt;- Manageability and operations view of SSIS&lt;/P&gt;
&lt;P&gt;- Performance and scalability with SSIS&lt;/P&gt;
&lt;P&gt;If you're attending either this TechEd or plan to attend other TechEds this year (since they share content from the US based one), let us know what you'd like to see or if there're specific areas you'd like us to cover. The slides are due this Friday, so you can hit the iron while it's hot! &lt;/P&gt;
&lt;P&gt;Hope to see quite a few of you there! &lt;/P&gt;
&lt;P&gt;ash&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=14783" width="1" height="1"&gt;</description></item><item><title>BI Webcasts</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/05/11/14272.aspx</link><pubDate>Wed, 11 May 2005 23:03:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:14272</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/14272.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=14272</wfw:commentRss><description>&lt;P&gt;Sudi (from SQL Marketing) wanted more folks to know about the upcoming BI webcasts from MSDN and TechNet. Here's a link and description of the series:&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;&lt;A href="http://www.microsoft.com/events/series/sqlserverbi.mspx"&gt;http://www.microsoft.com/events/series/sqlserverbi.mspx&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Arial"&gt;Your business intelligence (BI) applications need to integrate seamlessly into your overall application infrastructure to deliver real competitive advantage. Are you thinking about how to leverage your existing investment in BI and without sacrificing the ability to extend and add cutting-edge functionality? Is developing BI applications and managing them across multiple data platforms and tools becoming a complex and costly venture? Microsoft SQL Server 2005 is around the corner, delivering its enterprise-class BI platform with rich and powerful integration, analysis, and reporting functionality.&lt;/P&gt;
&lt;P class=overview&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%"&gt;Tune in to this series as we show you how to:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL style="MARGIN-TOP: 0in" type=disc&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Take advantage of high-availability features in SQL Server 2005 BI &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Increase SQL Server 2005 BI application performance using the new scalability features &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Use the single management shell and new features to easily manage and deploy BI applications &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Extend the functionality of SQL Server 2005 BI applications using the .NET Framework &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Develop rich applications on top of SQL Server 2005 BI platform using ADOMD.net, XML and the new management object model &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Add reporting functionality to any application by easily embedding Report Controls in your applications &lt;/SPAN&gt;&lt;/FONT&gt;
&lt;LI class=MsoNormal style="LINE-HEIGHT: 140%"&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%; FONT-FAMILY: Verdana"&gt;Use the SQL Server data mining to plug in your own data mining algorithms&lt;/SPAN&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P class=overview&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%"&gt;Through interactive presentations and end-to-end scenario demonstrations, this series provides you with the knowledge you need to develop and implement easy-to-manage, adaptive BI application architecture. The powerful SQL Server 2005 BI platform will help you keep pace with the evolving needs of your organization.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=overview&gt;&lt;B&gt;&lt;FONT face=Verdana size=1&gt;&lt;SPAN style="FONT-WEIGHT: bold; FONT-SIZE: 8.5pt; LINE-HEIGHT: 140%"&gt;Bonus&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/B&gt;: Attend any live webcast in this series to qualify to win a Portable Media Center (&lt;A title=http://www.microsoft.com/seminar/events/officialrules_pmc.mspx href="http://www.microsoft.com/seminar/events/officialrules_pmc.mspx"&gt;&lt;FONT title=http://www.microsoft.com/seminar/events/officialrules_pmc.mspx color=#0033cc&gt;&lt;SPAN title=http://www.microsoft.com/seminar/events/officialrules_pmc.mspx style="COLOR: #0033cc"&gt;official rules&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;) pre-loaded with our best webcasts.&lt;/P&gt;
&lt;P class=overview&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=14272" width="1" height="1"&gt;</description></item><item><title>WinDays</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/26/12872.aspx</link><pubDate>Tue, 26 Apr 2005 07:34:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:12872</guid><dc:creator>ashvinis</dc:creator><slash:comments>1</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/12872.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=12872</wfw:commentRss><description>&lt;P&gt;Yesteday, Thierry, a colleague from the Analysis Services team and I arrived to Opatija. The flight was great, it was the first time I tried noise cancelling headphones and they just rock! That and the experience of coming here kept us with about 3 hours of sleep in 36 hours or so.&lt;/P&gt;
&lt;P&gt;One thing I love about Croatians is that they're just really passionate about ... well... almost everything from what I can see. They love their country, their hot chocolate, their ties (did you know that's a Croatian contribution to the world?), their food, their sports, their islands, and they absolutely love technology! There're about 200 speakers here for WinDays, and over a thousand attendees. Plus a few hundred support staff. That's pretty neat for a country with a population less than half of New Delhi, where I'm originally from. There're also folks who're taking others into production with SSIS, a newsflash which is always welcomed. &lt;/P&gt;
&lt;P&gt;Our driver was pretty passionate about his job of delivering us from Zagreb (the capital) to the supposedly-sunny Opatija. It was raining cats and dogs yesterday, and the driver was doing ~100mph on the highways. I kept hinting by asking Thierry (who had me for an airbag since he was conveniently sitting in the back), &amp;#8221;hey, why don't we drive this fast in Seattle during the rain?&amp;#8221; and &amp;#8220;what does a speed limit of 80 mean?&amp;#8220; but perhaps should have asked the dude to cut back on the caffeine instead. At one point he said &amp;#8220;The rain is good, the police are not on the roads&amp;#8221;. well... hello! There's a reason they're not on the roads, dude: it's because they don't want to break their necks chasing maniacs! At one point on a toll checkpoint a policeman asked us to pull over, but that was just because of a spot check to make sure the car wasn't stolen. At another point the&amp;nbsp;car underwent hydroplaning at which point the guy got a hint for a little while. Finally the traffic in Rijeka throttled his passion.&lt;/P&gt;
&lt;P&gt;Aside from that excitement, things have been pretty stable. I finally got a chance to focus on my presentations and have just now started working on the demos. Lets see how it goes. The sun is trying to peak out today, and Thierry and I finally found a quiet place to sit and focus that had internet connectivity&amp;nbsp;and reduced levels of tobacco smoke. It was interesting to see a loaded cigarette lighter as a swag in the conference handbag. No wonder it's so hard for Marin (the dev manager of Analysis Services and a Croat)&amp;nbsp;to give up smoking. &lt;/P&gt;
&lt;P&gt;that's it for now. Wish me luck for tomorrow. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=12872" width="1" height="1"&gt;</description></item><item><title>You want to sing? Or do you want to have a beer? How about a job on the SQL team?</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/21/12434.aspx</link><pubDate>Fri, 22 Apr 2005 01:05:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:12434</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/12434.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=12434</wfw:commentRss><description>&lt;P&gt;Today, my ever helpful colleague Bob provided a language lesson in Serbian which I'm passing along in case you find yourself stressing out in the ex-Yu area.&lt;/P&gt;
&lt;P&gt;In a previous post I had written&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ja bih peva&lt;/P&gt;
&lt;P&gt;I thought peva was the same in Russian and Serbian. What I forgot was that the 'e' is not pronounced as 'ee' but rather as the 'e' in bed. So, Bob said it should either be :&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ja bih pevao &lt;/P&gt;
&lt;P&gt;which means "I want to sing", or&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ja bih pivo&lt;/P&gt;
&lt;P&gt;which means "I want a beer". &lt;/P&gt;
&lt;P&gt;The correct answer depends on how much one has had to drink, I guess. Unless you're Sergei, one of our extremely talented Technical Leads, who once gave us a memorable experience by singing a Russian Opera while standing on a table when we had met a really hard internal deadline. Heh heh heh heh. I think I have that somewhere on my pocket pc! That guy (besides being the youngest employee at Microsoft at one point) is such a great sport besides being just a gem of a guy.&lt;/P&gt;
&lt;P&gt;This reminds me of the way folks say the name of my &lt;A href="http://www.sqljunkies.com/weblog/kamalh/"&gt;boss&lt;/A&gt;. Most folks that don't know Hindi pronounce his name as 'K&lt;IMG alt="" src="http://cache.lexico.com/dictionary/graphics/AHD4/GIF/ubreve.gif" align=bottom&gt;m&amp;#228;l' (&lt;A href="http://dictionary.reference.com/help/ahd4/pronkey.html"&gt;pronunciation&lt;/A&gt; key), which in Hindi means 'magic'. I say 'K&lt;IMG alt="" src="http://cache.lexico.com/dictionary/graphics/AHD4/GIF/ubreve.gif" align=bottom&gt;m&lt;IMG alt="" src="http://cache.lexico.com/dictionary/graphics/AHD4/GIF/ubreve.gif" align=bottom&gt;l' which means the flower Lotus. &lt;/P&gt;
&lt;P&gt;I didn't know how much one could appreciate being around interesting people with so many varied backgrounds until I joined Microsoft. You just use a different part of the brain that would otherwise likely stay dormant. I now know how to curse really well (at the screen, of course) in Serbian/Croatian&amp;nbsp;and&amp;nbsp;Romanian, say a few words in Spanish (and something that'll get your ass kicked in parts of Mexico), how to say thank you in Chinese (Mandarin), how to tell written Korean from Chinese and Japanese, some quite interesting stories about Scotland thanks to &lt;A href="http://sqljunkies.com/WebLog/donald%20farmer/"&gt;Donald&lt;/A&gt;, and how&amp;nbsp;similar&amp;nbsp;some words in Hindi are to Persian.&amp;nbsp;While the grammar of Serbian is hard, I've been intimated by Gaelic for now. All the 'kh's remind me of Arabic that I got a chance to learn for a couple of years growing up, which, BTW, I get to read once in a while thanks to Mohammed. Maybe when I go to Scotland. &lt;/P&gt;
&lt;P&gt;One of our colleagues from my previous team of Analysis Services, for example, comes around lunch time and says the word 'lunch' or 'food' in the native language of the person whose office he's passing, inviting them to join the lunch train. Once in a while I do hear English!&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Which brings me to the final part of this rambling post that I'm writing while installing VS &amp;amp; SQL. Aside from all this interesting stuff, we do write software once in a while. Some pretty good one at that. The SQL team has several openings up on the &lt;A href="http://members.microsoft.com/careers/search/default.aspx"&gt;career&lt;/A&gt; website. If you're up for a challenge or just want to try your luck out like I did, drop us a resume. We've got a couple of positions in the SSIS team as well... for both dev and test. And if you're really good, positions could be created for you. But, that's another story.&lt;/P&gt;
&lt;P&gt;bok!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=12434" width="1" height="1"&gt;</description></item><item><title>SSIS: Mysterious hangs during execution</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/11/10982.aspx</link><pubDate>Tue, 12 Apr 2005 00:15:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:10982</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/10982.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=10982</wfw:commentRss><description>&lt;P&gt;Folks have been running into issues recently about package hanging for mysterious reasons. Here's a simple checklist: &lt;/P&gt;
&lt;P&gt;1. Check (using either &lt;A href="http://www.sysinternals.com/ntw2k/source/filemon.shtml"&gt;FileMon&lt;/A&gt; or the SSIS Perf counter on Buffers Spooled or other disk related perf counters) to see if the disk is busy doing something like spooling buffers.&lt;/P&gt;
&lt;P&gt;2. Check to see if readers &amp;amp; writers into your database have caused a deadlock. sp_who and sp_lock are your friends. I usually don't have to go to the DMVs to get any more information. &lt;/P&gt;
&lt;P&gt;3. In a rare case (and rarer everyday now), bumping up the EngineThreads property alleviates the issue. If that works, please please please open a bug so that we can make sure it's resolved. We'll need the package and the execution plan.&lt;/P&gt;
&lt;P&gt;That's it for now! &lt;/P&gt;
&lt;P&gt;ja bih peva&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=10982" width="1" height="1"&gt;</description></item><item><title>SSIS: DefaultBufferMaxRows and DefaultBufferSize</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/06/10467.aspx</link><pubDate>Wed, 06 Apr 2005 23:26:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:10467</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/10467.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=10467</wfw:commentRss><description>&lt;P&gt;There're two properties on the Data Flow task that have piqued enough interest to cause this post.&amp;nbsp;Note that while I'm describing numbers below,&amp;nbsp;the&amp;nbsp;SSIS team reserves the right to change them in response to our performance testing. There're no secrets here, most of this information is exposed plainly and some other (like MaxBufferSize) can be retrieved easily as well. This post hopefully puts it together.&lt;/P&gt;
&lt;P&gt;First the basics:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DefaultMaxBufferRows&lt;/STRONG&gt;: maximum number of rows in a buffer. Defaults to 10,000.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DefaultBufferSize&lt;/STRONG&gt;: maximum size of the buffer (in bytes). Defaults to 10MB. &lt;/P&gt;
&lt;P&gt;Now, how do these inter-relate? I.e. how many rows will go down a path&amp;nbsp;in a buffer?&lt;/P&gt;
&lt;P&gt;Well,&amp;nbsp;first of all that depends on the type of buffer and what columns will be in it. For the purposes of this post, assume that one execution tree has one type of a buffer. This means in my &lt;A href="http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/06/10465.aspx"&gt;previous&lt;/A&gt; post's data flow task, there will be three types of buffers. Moving from one execution tree to another means a new buffer type and that means memcpy, something that users should typically avoid. However, getting an execution tree could also mean the scheduler might allocate a different thread for components on this execution tree, so you might get more CPUs being utilized. More on that when we discuss execution plans. &lt;/P&gt;
&lt;P&gt;Back to the buffer sizes. Lets take one execution tree (#1) that goes from Flat file -&amp;gt; Data Convert -&amp;gt; Lookup and ends up going into the Sort. Note that the buffer type is the same even though in my case I'm creating new columns in Data Convert and bringing in new columns from the reference table in the Lookup. Why? Because memcpy just for reformatting memory is bad for performance so we try to do as little of that as possible. That means the underlying buffer that the Flat File produces has some extra columns that are not&amp;nbsp;filled in&amp;nbsp;until downstream components get a chance. There're also some optimizations the pipeline does to reuse columns in the buffer when possible like when a multicast is producing two outputs, both of which have a derived column that produce a column of the same type. So, it's not a trivial exercise to find out what columns are on a buffer but hopefully you can get a ballpark. Lets say this is RowSize in a buffer. &lt;/P&gt;
&lt;P&gt;A few other variables should be called out here. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MaxBufferSize&lt;/STRONG&gt; (not the DefaultMaxBufferSize). This cannot be changed externally. Currently it's set to 100MB but that might change. The reason for this maximum is to avoid wastage of memory where most of the buffer is empty. You'll get an error if you attempt to increase DefaultMaxBufferSize to more than this.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MinBufferSize&lt;/STRONG&gt;.&amp;nbsp;This is the minimum size of the buffer and currently has the granularity of &lt;A href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/memory/base/virtualalloc.asp"&gt;VirtualAlloc&lt;/A&gt;. On my machine, for example, this is exposed in the following BufferSizeTuning LogEvent: &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Rows in buffer type 13 would cause a buffer size less than allocation minimum, which is 65536 bytes. There will be 1365 rows in buffers of this type.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;So, I've got a MinBufferSize of 64K.&lt;/P&gt;
&lt;P&gt;Given these, the pipeline initialization code (that creates buffer types and sets metadata about them such as what columns and how many rows) then gets busy to calculate the buffer sizes. &lt;/P&gt;
&lt;P&gt;If the size of one buffer (RowSize * DefaultMaxBufferRows) will exceed DefaultMaxBufferSize, the number of rows will be reduced to keep the memory requirements predictable. Note that one row cannot span multiple buffers, so in a rare case there'd be a huge buffer with just one row. &lt;/P&gt;
&lt;P&gt;If the size of one buffer will be less than MinBufferSize, the number of rows will be increased to at least match MinBufferSize which is the allocation granularity to maximize memory utilization.&lt;/P&gt;
&lt;P&gt;If the size of one buffer is between the Min and Max, the memory for a buffer will be a multiple of the allocation granularity that most closely fits the number of rows requested. This is again to maximize memory utilization. The number of rows will be adjusted a little to fit the allocated&amp;nbsp;space. &lt;/P&gt;
&lt;P&gt;Drop me a note if you play around these and have some interesting information to share, or better still, write/present on it.&amp;nbsp;I'm also interested in hearing about what further information you need to gain insights into perf tuning the pipeline. &lt;/P&gt;
&lt;P&gt;later! &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=10467" width="1" height="1"&gt;</description></item><item><title>SSIS: 'Log Events' and Pipeline events</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/04/06/10465.aspx</link><pubDate>Wed, 06 Apr 2005 22:31:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:10465</guid><dc:creator>ashvinis</dc:creator><slash:comments>1</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/10465.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=10465</wfw:commentRss><description>&lt;P&gt;I was about to write about data flow buffer size configuration properties but need to get this one out first so that we can refer to it.&lt;/P&gt;
&lt;P&gt;The Data Flow task (internally and in the object model also called the 'Pipeline')&amp;nbsp;logs some pretty interesting information that describe the internal scheduler. &lt;/P&gt;
&lt;P&gt;To see these messages, one way is: &lt;/P&gt;
&lt;P&gt;1.&amp;nbsp;In a package you want to get detailed pipeline logs on, select the 'Logging...' menu option on the control flow. &lt;/P&gt;
&lt;P&gt;2. Check the Data Flow task of interest on the tree on the left. Switch over to Details and select the following events: &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferSizeTuning; PipelineExecutionTrees; PipelineExecutionPlan; PipelineInitialization&lt;/P&gt;
&lt;P&gt;3. Run the package and launch the 'Log Events' window from the Control Flow context menu again.&lt;/P&gt;
&lt;P&gt;You'll see a new tool window that'll pop up and it will get filled with some events. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;BufferSizeTuning &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Example: &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Rows in buffer type 3 would cause a buffer size greater than the configured maximum. There will be only 2440 rows in buffers of this type.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Next post will talk about what this means. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PipelineExecutionTrees&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Example: &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;begin execution tree 0&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Aggregate Output 1" (779)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Data Conversion Input" (793)&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Data Conversion Output" (795)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "OLE DB Destination Input" (827)&lt;BR&gt;end execution tree 0&lt;BR&gt;begin execution tree 1&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Flat File Source Output" (1087)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Data Conversion Input" (958)&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Data Conversion Output" (959)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Lookup Input" (117)&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Lookup Output" (118)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Sort Input" (470)&lt;BR&gt;end execution tree 1&lt;BR&gt;begin execution tree 2&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Sort Output" (471)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Multicast Input 1" (668)&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Multicast Output 2" (672)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "OLE DB Destination Input" (643)&lt;BR&gt;&amp;nbsp;&amp;nbsp; output "Multicast Output 3" (674)&lt;BR&gt;&amp;nbsp;&amp;nbsp; input "Aggregate Input 1" (776)&lt;BR&gt;end execution tree 2&lt;/EM&gt;&lt;BR&gt;&lt;BR&gt;We've discussed execution trees in the past... they start from a source or a component with asynchronous output and go on until a destination or another asynchronous output. Looks like I have 3 execution trees in my package. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PipelineExecutionPlan&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The plan for my package is too&amp;nbsp;large to paste here. This was hinted at in an &lt;A href="http://sqljunkies.com/WebLog/ashvinis/archive/2005/03/29/9825.aspx"&gt;earlier&lt;/A&gt; post when describing EngineThreads. Soon... &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;PipelineInitialization&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Example: &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;No temporary BLOB data storage locations were provided. The buffer manager will consider the directories in the TEMP and TMP environment variables.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;These are typically information messages about the directories and other defaults the pipeline will use during its execution. &lt;/P&gt;
&lt;P&gt;Next up, DefaultBufferMaxRows and DefaultBufferSize.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=10465" width="1" height="1"&gt;</description></item><item><title>Unpivot or Why I love Books Online</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/03/30/9879.aspx</link><pubDate>Thu, 31 Mar 2005 02:39:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:9879</guid><dc:creator>ashvinis</dc:creator><slash:comments>0</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/9879.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=9879</wfw:commentRss><description>&lt;P&gt;OK, I have a confession to make. I thought I knew what Unpivot did. Heck, I've shown demos of it for a few years now. Today, &lt;A href="http://www.theserverside.net/talks/videos/JasonCarlson/interview.tss?bandwidth=dsl"&gt;Jason&lt;/A&gt;&amp;nbsp;wanted to build a pretty cool package for survey results and I realized I didn't understand how unpivot worked anymore. I think I did when I built the demo, but today I don't.&lt;/P&gt;
&lt;P&gt;The survey was on SQL BI and had columns such as: &lt;/P&gt;
&lt;P&gt;CustomerName, email, Company, Question1_Answer1, Question1_Answer2, Question2_Answer1, Question2_Answer2, ...&lt;/P&gt;
&lt;P&gt;Basically all of the questions had 2 answers and there were about 70 questions. (If you filled out one of such surveys, thank you for spending the time!) What Jason wanted was something like this: &lt;/P&gt;
&lt;P&gt;CustomerName, email, Question, Answer1, Answer2&lt;/P&gt;
&lt;P&gt;I.e. introduce a new column called Question that would contain &amp;#8220;Question1, Question2, etc.&amp;#8221; one per row and maintain only two columns for all the answers. &lt;/P&gt;
&lt;P&gt;Fortunately Wenyang&amp;nbsp;confirmed that I needed to&amp;nbsp;use an Unpivot. I managed to play around with SSIS to get what we wanted because it's so easy to try something.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But now I'm sitting here trying to understand what's the &amp;#8220;Pivot Value&amp;#8220;, and what's the &amp;#8220;Data Value&amp;#8220;?&amp;nbsp;I started trying to understand what Unpivot is by searching the net. MsnSearch said Unpivot is the opposite of Pivot. Great, thanks. Trying to go through ANSI SQL-92's index looking for Unpivot/Pivot/cross tab, and then through several SQL books. &lt;A href="http://www.amazon.com/gp/reader/1558605762/ref=sib_dp_pt/103-5480451-9856610#reader-page"&gt;Mr. Celko&lt;/A&gt; finally confirmed I'm not a smartie. Thanks, buddy. At least I have a head full of hair, grey as they might be.&lt;/P&gt;
&lt;P&gt;Finally (and I'm kicking myself why I didn't do it sooner) what really helped was the BOL topic on the Unpivot transformation. The example makes is simple, and it makes sense. What else is there? It breaks down the operation into &amp;#8220;Destination Column&amp;#8220; and&amp;nbsp;&amp;#8220;Pivot Key Value&amp;#8220;, concepts that I understand.&lt;/P&gt;
&lt;P&gt;Following the grid in BOL, added two rows - "Destination Column" and "Pivot Key Value" to my scratch paper:&lt;/P&gt;
&lt;P&gt;
&lt;TABLE style="WIDTH: 576px" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD style="WIDTH: 145px"&gt;&lt;STRONG&gt;Destination Column&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 74px"&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 44px"&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;A1&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;A2&lt;/TD&gt;
&lt;TD style="WIDTH: 58px"&gt;A1&lt;/TD&gt;
&lt;TD style="WIDTH: 296px"&gt;A2&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="WIDTH: 145px"&gt;&lt;STRONG&gt;Pivot Key Value&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 74px"&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 44px"&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;Q1&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;Q1&lt;/TD&gt;
&lt;TD style="WIDTH: 58px"&gt;Q2&lt;/TD&gt;
&lt;TD style="WIDTH: 296px"&gt;Q2&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="WIDTH: 145px"&gt;&lt;STRONG&gt;Column Name&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 74px"&gt;Customer&lt;/TD&gt;
&lt;TD style="WIDTH: 44px"&gt;Email&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;Question1_Answer1&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;Question1_Answer2&lt;/TD&gt;
&lt;TD style="WIDTH: 58px"&gt;Question2_Answer1&lt;/TD&gt;
&lt;TD style="WIDTH: 296px"&gt;Question2_Answer2&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD style="WIDTH: 145px"&gt;&lt;STRONG&gt;Data Records&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="WIDTH: 74px"&gt;Ashvini&lt;/TD&gt;
&lt;TD style="WIDTH: 44px"&gt;as@somewhere.com&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;1&lt;/TD&gt;
&lt;TD style="WIDTH: 128px"&gt;2&lt;/TD&gt;
&lt;TD style="WIDTH: 58px"&gt;3&lt;/TD&gt;
&lt;TD style="WIDTH: 296px"&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/P&gt;
&lt;P&gt;That was easy. &lt;/P&gt;
&lt;P&gt;The only other thing I need is the name of the column where the Destination Column Values would end up. Well, that's "Question". &lt;/P&gt;
&lt;P&gt;Given this information, what do the terms in the UI ("Data Column" and "Pivot Value") mean? Well, "Pivot Value" is the "Pivot Key Value" in the grid above. And "Data Column" is the column name that will contain the data, which is the "Destination Column" in the grid above. At the bottom of the Unpivot UI is the single edit box for the name of the new column which will contain the "Pivot Value"s, which in our case is "Question". &lt;/P&gt;
&lt;P&gt;So, why are the names in the UI not the same in the docs? Ironically, I had a hand in that. The new names made sense when Bob (the UI author) and I were discussing them because we understood the feature in and out. Having revisited the description, the names make sense to me again. The description that Unpivot is the opposite of Pivot also makes more sense. I haven't picked up Celko's book again, though. Serves him right for being an elitist. &amp;lt;g&amp;gt;&lt;/P&gt;
&lt;P&gt;While we'll try to fix this discrepancy, what helped most was not the names but the description in BOL. Last year I &lt;A href="http://blogs.msdn.com/brada/archive/2005/03/06/386328.aspx"&gt;got a chance&lt;/A&gt; to spend a week at Product Support understanding how they work and got reports of customers saying our BOL is the best in the industry. With all the attention on features we tend to loose focus on how much good information BOL provides. The docs folks have been a part of the team through the beginning of the product cycle and worked their butts off. Thanks to them I can go home with a lighter head knowing I finally understand something that was bugging me for half the day today.&lt;/P&gt;
&lt;P&gt;Thank you guys! &lt;/P&gt;
&lt;P&gt;Hvala,&lt;/P&gt;
&lt;P&gt;Laku Noc&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=9879" width="1" height="1"&gt;</description></item><item><title>Errors in visualizers</title><link>http://sqljunkies.com/WebLog/ashvinis/archive/2005/03/30/9855.aspx</link><pubDate>Wed, 30 Mar 2005 14:33:00 GMT</pubDate><guid isPermaLink="false">d2584c15-f6ef-46f7-a2d4-24fc0e143e76:9855</guid><dc:creator>ashvinis</dc:creator><slash:comments>1</slash:comments><comments>http://sqljunkies.com/WebLog/ashvinis/comments/9855.aspx</comments><wfw:commentRss>http://sqljunkies.com/WebLog/ashvinis/commentrss.aspx?PostID=9855</wfw:commentRss><description>&lt;P&gt;Dobro jutro,&lt;/P&gt;
&lt;P&gt;Kako ste vi?&lt;/P&gt;
&lt;P&gt;In recent CTP builds folks are seeing some cells that contains &amp;#8220;&amp;lt;Missing Lineage ID&amp;gt;&amp;#8221; when using visualizers in&amp;nbsp;a data flow task.&lt;/P&gt;
&lt;P&gt;This is a common enough issue that we should address it head on to help folks from wasting their time.&lt;/P&gt;
&lt;P&gt;The cause of this error is that due to the optimizations that the data flow engine does internally some data is not available&amp;nbsp;on certain paths even though the designer tells you it is. The &amp;#8220;&amp;lt;Missing Lineage ID&amp;gt;&amp;#8221; message is the data flow engine way of reporting that the designer asked to see data for a column that's not available. &lt;/P&gt;
&lt;P&gt;To explain the workaround for now, lets use a simple layout: &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Source&amp;nbsp;-&amp;gt;&amp;nbsp;Derived Column&amp;nbsp;-&amp;gt; SomeComponent&lt;/P&gt;
&lt;P&gt;Lets say the Source is producing two columns: 'FirstName' and 'LastName'. The Derived Column then creates 'Name' out of the incoming columns and the SomeComponent then&amp;nbsp;uses the Name column only. &lt;/P&gt;
&lt;P&gt;If you add a visualizer on the path between Derived Column and SomeComponent, 'Name' would show up just fine but 'FirstName' and 'LastName' would have the &amp;#8220;&amp;lt;Missing Lineage ID&amp;gt;&amp;#8220; error because they're not used by Destination.&lt;/P&gt;
&lt;P&gt;So, currently you can only see columns that're used by the component that's getting the data after the visualizer. &lt;/P&gt;
&lt;P&gt;One workaround, then, is to use the Advanced Editor for editing the next component (SomeComponent in this case) and adding all columns to the Input Columns collection of that component's input which is receiving the data from the visualizer. Note that some components' validation might warn that unnecessary columns are added to the component while&amp;nbsp;some other&amp;nbsp;components such as some destinations manage their input columns collection tightly and will not allow such tinkering.&lt;/P&gt;
&lt;P&gt;Another workaround is to add a UnionAll between the Derived Column and Destination that automatically syncs all the columns. That, however, has the performance penalty of causing memory copies through the UnionAll. &lt;/P&gt;
&lt;P&gt;In this scenario, perhaps the best workaround would be to look at the data in the destination itself. &lt;/P&gt;
&lt;P&gt;We hope to address this very soon because visualizers are one source of productivity boosts you get from using SSIS. &lt;/P&gt;
&lt;P&gt;zdravo&lt;/P&gt;
&lt;P&gt;PS. You might be wondering why I'm sprinkling my posts with bits of Croatian/Serbian. Well, in preparation of my trip to WinDays in Croatia (&lt;A href="http://www.microsoft.com/croatia/windays/sadrzaj.aspx"&gt;http://www.microsoft.com/croatia/windays/sadrzaj.aspx&lt;/A&gt;), I and my 4 year old son have been trying to learn a bit of the language and practicing with a few of our colleagues from ex-Yu. While my wife also joins in the fun,&amp;nbsp;our 4 month old blows bubbles instead. Slacker.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://sqljunkies.com/WebLog/aggbug.aspx?PostID=9855" width="1" height="1"&gt;</description></item></channel></rss>