<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>SSIS Talk</title>
	<atom:link href="http://www.ssistalk.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ssistalk.com</link>
	<description>Random thoughts and experiences with SSIS, by Phil Brammer</description>
	<pubDate>Wed, 10 Feb 2010 20:21:18 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>SQL Server - Do you want to QUALIFY your results?</title>
		<link>http://www.ssistalk.com/2010/02/10/sql-server-do-you-want-to-qualify-your-results/</link>
		<comments>http://www.ssistalk.com/2010/02/10/sql-server-do-you-want-to-qualify-your-results/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 16:34:36 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=219</guid>
		<description><![CDATA[Teradata offers the ability to build a query, and then use a QUALIFY statement that filters the resulting resultset.  This is especially handy when using a ROW_NUMBER function where you are partitioning on a natural key (or whatever it may be) and you want to return only the rows where the ROW_NUMBER value is [...]]]></description>
			<content:encoded><![CDATA[<p>Teradata offers the ability to build a query, and then use a QUALIFY statement that filters the resulting resultset.  This is especially handy when using a ROW_NUMBER function where you are partitioning on a natural key (or whatever it may be) and you want to return only the rows where the ROW_NUMBER value is 1, for example.</p>
<p>In SQL Server today, this has to be done with derived tables/CTEs like so:</p>
<pre>
USE AdventureWorksDW
GO
/* Ignoring the fact that this table
   has a "Status" and an EndDate column */
;WITH CTE AS (
SELECT EmployeeKey,
       FirstName,
       LastName,
       MiddleName,
       Title,
       ROW_NUMBER() OVER (PARTITION BY EmployeeNationalIDAlternateKey
                              ORDER BY StartDate DESC) AS ROW_NUM
  FROM dbo.DimEmployee
)
SELECT EmployeeKey,
       FirstName,
       LastName,
       MiddleName,
       Title
  FROM CTE
 WHERE row_num = 1
 ORDER BY FirstName, LastName
GO
</pre>
<p>
That&#8217;s easy enough to understand, of course, but the problem lies in the fact that you have to write a bunch of extra lines of code to accomplish this task.</p>
<p>Teradata has the QUALIFY option which would be represented like this:</p>
<pre>
 SELECT EmployeeKey,
        FirstName,
        LastName,
        MiddleName,
        Title
   FROM dbo.DimEmployee
QUALIFY ROW_NUMBER() OVER (PARTITION BY EmployeeNationalIDAlternateKey
                               ORDER BY StartDate DESC) = 1
</pre>
<p>Note how much cleaner that looks.  QUALIFY has many advantages, but I&#8217;ll leave that as an exercise for you to review.  In the mean time, if you would like to see such an option in SQL Server, please vote on <a href="http://www.solidq.com/insidetsql/">Itzik Ben-Gan</a>&#8217;s feature request: <a href="https://connect.microsoft.com/SQLServer/feedback/details/532474/qualify-request-for-a-new-filtering-clause">https://connect.microsoft.com/SQLServer/feedback/details/532474/qualify-request-for-a-new-filtering-clause</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/02/10/sql-server-do-you-want-to-qualify-your-results/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - Task and Component Naming Conventions</title>
		<link>http://www.ssistalk.com/2010/02/08/ssis-task-and-component-naming-conventions/</link>
		<comments>http://www.ssistalk.com/2010/02/08/ssis-task-and-component-naming-conventions/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 16:05:28 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=217</guid>
		<description><![CDATA[I&#8217;m reposting a list of task/component prefix naming conventions that Jamie Thomson posted some years back for SSIS.  Using a standard set of prefixes allows for easy log reading, better multi-developer support, and ease of readability.
Get the Excel document here: SSIS_Prefix_Naming.xlsx (11 KB)
Note that I have not updated this document for 2008 task/component changes, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m reposting a list of task/component prefix naming conventions that <a href="http://sqlblog.com/blogs/jamie_thomson/">Jamie Thomson</a> posted some years back for SSIS.  Using a standard set of prefixes allows for easy log reading, better multi-developer support, and ease of readability.</p>
<p>Get the Excel document here: <a href="http://www.ssistalk.com/SSIS_Prefix_Naming.xlsx">SSIS_Prefix_Naming.xlsx</a> (11 KB)</p>
<p>Note that I have not updated this document for 2008 task/component changes, and some of the abbreviations may have been changed from Jamie&#8217;s original list of suggestions to suit the needs of my organization at the time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/02/08/ssis-task-and-component-naming-conventions/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - Visio stencils for SSIS</title>
		<link>http://www.ssistalk.com/2010/02/03/ssis-visio-stencils-for-ssis/</link>
		<comments>http://www.ssistalk.com/2010/02/03/ssis-visio-stencils-for-ssis/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 21:16:20 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=215</guid>
		<description><![CDATA[(Hmm, what is a retweet in blog terms?  This is a re-blog.)  Jamie Thomson has provided a post providing a link to download Microsoft Visio stencils for SSIS diagramming.  Get it here (Josh Robinson - original source) or here (Jamie Thomson).
]]></description>
			<content:encoded><![CDATA[<p>(Hmm, what is a retweet in blog terms?  This is a re-blog.)  Jamie Thomson has provided a <a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/02/03/visio-stencils-for-ssis.aspx">post</a> providing a link to download Microsoft Visio stencils for SSIS diagramming.  Get it <a href="http://joshrobi.blogspot.com/2008/08/useful-visio-stencil-set-for-sql-server.html">here</a> (Josh Robinson - original source) or <a href="http://cid-550f681dad532637.skydrive.live.com/self.aspx/Public/BlogShare/20100203/MS%20Visio%20SQL%202005%20Stencils.zip">here</a> (Jamie Thomson).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/02/03/ssis-visio-stencils-for-ssis/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - Organize the toolbox in BIDS</title>
		<link>http://www.ssistalk.com/2010/02/03/ssis-organize-the-toolbox-in-bids/</link>
		<comments>http://www.ssistalk.com/2010/02/03/ssis-organize-the-toolbox-in-bids/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 16:12:55 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=213</guid>
		<description><![CDATA[A quick tip for those that may want some better organization over the default provided by BIDS when working with SSIS packages.
You can add your own groupings to the Toolbox window by right-clicking anywhere in the toolbox, and selecting &#8220;Add Tab&#8221;.  
For example, in the data flow window, I can add a new tab [...]]]></description>
			<content:encoded><![CDATA[<p>A quick tip for those that may want some better organization over the default provided by BIDS when working with SSIS packages.</p>
<p>You can add your own groupings to the Toolbox window by right-clicking anywhere in the toolbox, and selecting &#8220;Add Tab&#8221;.  </p>
<p>For example, in the data flow window, I can add a new tab (or grouping) for Analysis Services Destination components.  </p>
<p>1) Right click on the toolbox background and select &#8220;Add Tab&#8221;</p>
<div class="wp-caption alignnone" style="width: 344px"><img alt="Add Tab" src="http://www.ssistalk.com/add_bids_group_1.png" title="Adding a Tab" width="334" height="442" /><p class="wp-caption-text">Add Tab</p></div>
<p>2) Give it a name.</p>
<div class="wp-caption alignnone" style="width: 257px"><img alt="Name Tab" src="http://www.ssistalk.com/add_bids_group_2.png" title="Name Tab" width="247" height="171" /><p class="wp-caption-text">Name Tab</p></div>
<p>3) Drag components to the new tab.</p>
<div class="wp-caption alignnone" style="width: 240px"><img alt="Dragging Components" src="http://www.ssistalk.com/add_bids_group_3.png" title="Dragging Components" width="230" height="172" /><p class="wp-caption-text">Dragging Components</p></div>
<p>4) Repeat as needed.</p>
<div class="wp-caption alignnone" style="width: 240px"><img alt="Repeat as needed" src="http://www.ssistalk.com/add_bids_group_4.png" title="Repeat as needed" width="230" height="180" /><p class="wp-caption-text">Repeat</p></div>
<p>The final results might look something like this:<br />
<div class="wp-caption alignnone" style="width: 238px"><img alt="Final Results" src="http://www.ssistalk.com/bids_groupings.png" title="Final Results" width="228" height="599" /><p class="wp-caption-text">Final Results</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/02/03/ssis-organize-the-toolbox-in-bids/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - SSISTalk.com Content</title>
		<link>http://www.ssistalk.com/2010/01/28/ssis-ssistalkcom-content/</link>
		<comments>http://www.ssistalk.com/2010/01/28/ssis-ssistalkcom-content/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 22:01:03 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[General]]></category>

		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=209</guid>
		<description><![CDATA[If you have something that you&#8217;d like to see blogged here regarding SSIS and/or SQL Server, please let me know and I&#8217;ll see what I can do.
Also, if you find a post here that you&#8217;re using to work on an issue in SSIS 2008, let me know if it isn&#8217;t working for you.  It [...]]]></description>
			<content:encoded><![CDATA[<p>If you have something that you&#8217;d like to see blogged here regarding SSIS and/or SQL Server, please let me know and I&#8217;ll see what I can do.</p>
<p>Also, if you find a post here that you&#8217;re using to work on an issue in SSIS 2008, let me know if it isn&#8217;t working for you.  It could be that I don&#8217;t have updated content for use in the SSIS 2008 environment.  It&#8217;s easy enough to update, I just won&#8217;t be able to catch all of the items listed here.</p>
<p>One last thing - the annual MVP Summit is coming up in February.  If you have something that you&#8217;d like for me to bring to the SSIS dev team in terms of feedback, feature requests, bugs, etc&#8230;, let me know and I&#8217;ll do my best to present them to the team.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/01/28/ssis-ssistalkcom-content/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - Feature Request: Option to mark connection managers read-only</title>
		<link>http://www.ssistalk.com/2010/01/19/ssis-feature-request-option-to-mark-connection-managers-read-only/</link>
		<comments>http://www.ssistalk.com/2010/01/19/ssis-feature-request-option-to-mark-connection-managers-read-only/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 20:39:35 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<category><![CDATA[SSIS Feature Request]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=200</guid>
		<description><![CDATA[Today I had a situation come up that prompted a SQL Server Connect feature request submission for SSIS: add the ability to mark a connection manager object as read-only.  In doing so, the connection manager would not show in dataflow destinations, it would throw a warning if added to an OLE DB Command component, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I had a situation come up that prompted a <a href="https://connect.microsoft.com/SQLServer/feedback">SQL Server Connect</a> feature request submission for SSIS: add the ability to mark a connection manager object as read-only.  In doing so, the connection manager would not show in dataflow destinations, it would throw a warning if added to an OLE DB Command component, would error in package validation if used in a destination (which could happen post-development via config files), etc&#8230;</p>
<p>What do you think?  Is this something you could see value in having implemented?</p>
<p>Connect submission: <a href="https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=525805">https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=525805</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/01/19/ssis-feature-request-option-to-mark-connection-managers-read-only/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS 2008 - Beware of incorrect version stamp in SSMS</title>
		<link>http://www.ssistalk.com/2010/01/04/ssis-2008-beware-of-incorrect-version-stamp-in-ssms/</link>
		<comments>http://www.ssistalk.com/2010/01/04/ssis-2008-beware-of-incorrect-version-stamp-in-ssms/#comments</comments>
		<pubDate>Mon, 04 Jan 2010 19:25:29 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SQL Server 2008]]></category>

		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=196</guid>
		<description><![CDATA[There is a bug where even if you have applied a patch or service pack to SSIS 2008, the version listed next to the &#8220;Integration Services&#8221; service in Management Studio continues to show 10.0.1600, which is the version number for RTM.
As always, if you are unsure, it is best to determine the actual version by [...]]]></description>
			<content:encoded><![CDATA[<p>There is a <a href="https://connect.microsoft.com/SQL/feedback/ViewFeedback.aspx?FeedbackID=422562">bug</a> where even if you have applied a patch or service pack to SSIS 2008, the version listed next to the &#8220;Integration Services&#8221; service in Management Studio continues to show 10.0.1600, which is the version number for RTM.</p>
<p>As always, if you are unsure, it is best to determine the actual version by looking at the files themselves, ie. dtexec.exe, or by confirming the version number in BIDS via Help->About.</p>
<p>While this isn&#8217;t a big deal, it is an annoyance.  I&#8217;ve got the question out to the product team for their response, so stay tuned for more information as it becomes available.</p>
<p>EDIT - Please see <a href="http://blogs.msdn.com/mattm/">Matt Masson</a>&#8217;s (SSIS Product Team) comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2010/01/04/ssis-2008-beware-of-incorrect-version-stamp-in-ssms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - What does the SSIS Service actually do, anyway?</title>
		<link>http://www.ssistalk.com/2009/11/04/ssis-what-does-the-ssis-service-actually-do-anyway/</link>
		<comments>http://www.ssistalk.com/2009/11/04/ssis-what-does-the-ssis-service-actually-do-anyway/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:16:04 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=192</guid>
		<description><![CDATA[Way too often, we hear many misconceptions about what the Integration Services Service actually does.  Some think it is required to execute packages.  Others think it is used for checkpoint restarts.  Others think it speeds up execution.  So, which group is correct?  
The answer is none of them.  The [...]]]></description>
			<content:encoded><![CDATA[<p>Way too often, we hear many misconceptions about what the Integration Services Service actually does.  Some think it is required to execute packages.  Others think it is used for checkpoint restarts.  Others think it speeds up execution.  So, which group is correct?  </p>
<p>The answer is none of them.  The SSIS Service, quite simply, is responsible for managing the Integration Services interface in SQL Server Management Studio.  It enables the ability to import/export packages, view running packages, and view stored packages.  It really doesn&#8217;t do anything more than that.</p>
<p>Disabling the service will not affect:</p>
<ul>
<li>package development (you can develop packages without the service)</li>
<li>the ability to execute packages (DTEXEC and other executables are responsible for this)</li>
<li>checkpoint restarts of failed SSIS packages</li>
<li>the ability for users to query the msdb database for stored packages via SQL</li>
<li>package execution speed</li>
<li>SQL Server Agent&#8217;s ability to execute packages</li>
</ul>
<p>The SSIS Service is not cluster-aware, and is in fact not recommended.  <a href="http://msdn.microsoft.com/en-us/library/ms345193.aspx">http://msdn.microsoft.com/en-us/library/ms345193.aspx</a></p>
<p>EDIT - See Michael Entin&#8217;s comment below.  The SSIS Service will also cache component/task metadata so that the SSIS runtime engine can poll the cache to see what is installed, which may help speed up package load times however small those gains may be.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2009/11/04/ssis-what-does-the-ssis-service-actually-do-anyway/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SSIS - Why is my data flow so slow with an OLE DB Command component?</title>
		<link>http://www.ssistalk.com/2009/10/29/ssis-why-is-my-data-flow-so-slow-with-an-ole-db-command-component/</link>
		<comments>http://www.ssistalk.com/2009/10/29/ssis-why-is-my-data-flow-so-slow-with-an-ole-db-command-component/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 17:04:07 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SSIS]]></category>

		<category><![CDATA[SSIS Data flow]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=182</guid>
		<description><![CDATA[&#8220;Why does my data flow take so long to execute when I use an OLE DB Command component?
&#8220;I need to update values in another table for every row in my data flow.&#8221;
These are common questions I see when dealing with &#8220;slow&#8221; performance of an SSIS package.  Sometimes though, the developer of the package does [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Why does my data flow take so long to execute when I use an OLE DB Command component?<br />
&#8220;I need to update values in another table for every row in my data flow.&#8221;</p>
<p>These are common questions I see when dealing with &#8220;slow&#8221; performance of an SSIS package.  Sometimes though, the developer of the package does not even understand which component is taking so long to process say, thousands of records in their data flow, so it is understandable why this component may proliferate in many shops.  (Sometimes it is needed, of course, but you need to always ask the question - do I need the updates to happen RIGHT NOW?)</p>
<p>If you have a need to update data in another table, while still pushing data from a source to a destination, the OLE DB Command is often used because of the thought that it is part of the data flow, so why not use it.</p>
<p>Read on for more&#8230;.<br />
<span id="more-182"></span></p>
<p>The trouble with the OLE DB Command component is that it executes whatever command you have provided for each and every row that passes through it.  The data flow is designed to operate on buffers of data, which contain by default around 10,000 rows.  If you are simply moving data from one table to another, this concept works really well and quite fast too, I might add.</p>
<p>However, if you need to update data, should you use the OLE DB Command component in that data flow?  Are there other options?  The answers of course are &#8220;maybe&#8221; and &#8220;yes.&#8221;  </p>
<p>If you simply need to update data in a table and you don&#8217;t care when it happens, then I would recommend not using an OLE DB Command component at all in your data flow.  Instead, I recommend you build a staging table on your destination database server, and populate that table with your &#8220;update&#8221; data.  Then, in the control flow, after the data flow successfully executes, you can issue an Execute SQL Task to perform a batch update.</p>
<p>This recommendation is built on the fact that using an OLE DB Command component ensures that your update operations are done row-by-row, rather than in a batch operation.</p>
<p>Why?  How much faster is the batch operation compared to the OLE DB Command operation?  Well, the answer depends a bit, but in my simple test below, the time to update 5,000 records took 15 minutes using the OLE DB Command component and 4 seconds (yup - SECONDS) to populate a staging table and then perform a batch update.</p>
<p>Here is the setup I used:<br />
<code>
<pre>CREATE TABLE numbers (
  number int not null
)
GO

insert into numbers (number)
select number from
(
select row_number() over (order by s1.name) as number
  from sysobjects s1
 cross join sysobjects s2
 cross join sysobjects s3
 cross join sysobjects s4
 cross join sysobjects s5
) as numbers
where number between 1 and 1000000;
GO

select number
  from numbers
 where number < 5003;
GO

/*
number
1
2
3
4
5
...
4998
4999
5000
5001
5002
*/
</pre>
<p></code></p>
<p>Here is a picture of the first SSIS package. </p>
<p><a href="http://www.ssistalk.com/ole_db_command_1.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/ole_db_command_1.png" title="OLE DB Command Setup" width="299" height="218" /></a></p>
<p>I used the following SQL for the OLE DB Source component:<br />
<code>
<pre>SELECT number
  FROM numbers
 WHERE number < 5001
 ORDER BY number DESC
</pre>
<p></code></p>
<p>I used the following expression in the Derived Column component to create a new column, new_number:<br />
<code>
<pre>number + 1
</pre>
<p></code></p>
<p>I used the following SQL in the OLE DB Command component:<br />
<code>
<pre>update numbers
  set number = ?
 where number = ?
</pre>
<p></code></p>
<p>In the OLE DB Command &#8220;Column Mappings&#8221; tab, I mapped the incoming column, new_number, to the Param_0 parameter, and the incoming column, number, to the parameter, Param_1.</p>
<p>I then executed the package.  Time to execute: 15 minutes, 43 seconds.</p>
<p><a href="http://www.ssistalk.com/ole_db_command_2.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/ole_db_command_2.png" title="OLE DB Command Setup" /></a></p>
<p>Next I tried the batch update approach.  Use the same setup as above, except replace the OLE DB Command component with an OLE DB Destination, and push the two data flow columns to a staging table.</p>
<p>Here is the data flow layout:<br />
<a href="http://www.ssistalk.com/execute_sql_task_4.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/execute_sql_task_4.png" title="OLE DB Command Setup" /></a></p>
<p>Here is the staging table DDL:<br />
<code>
<pre>CREATE TABLE staging_numbers (
  orig_number int not null,
  new_number int not null
)
</pre>
<p></code></p>
<p>Map the data flow column, number, to the orig_number field in the staging table.  Map the data flow column, new_number, to the new_number field in the staging table, as shown below:<br />
<a href="http://www.ssistalk.com/execute_sql_task_3.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/execute_sql_task_3.png" title="OLE DB Command Setup" /></a></p>
<p>Then, in the control flow, hook up an Execute SQL Task to the new Data Flow task, so that the Execute SQL Task executes after the Data Flow, as shown below:<br />
<a href="http://www.ssistalk.com/execute_sql_task_2.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/execute_sql_task_2.png" title="OLE DB Command Setup" /></a></p>
<p>The Execute SQL Task SQL is below:<br />
<code>
<pre>update numbers
  set number = staging_numbers.new_number
from numbers, staging_numbers
where numbers.number = staging_numbers.orig_number
</pre>
<p></code></p>
<p>Upon executing the package, the execution time shrank to under five seconds:<br />
<a href="http://www.ssistalk.com/execute_sql_task_1.png"><img alt="OLE DB Command Data Flow setup" src="http://www.ssistalk.com/execute_sql_task_1.png" title="OLE DB Command Setup" /></a></p>
<p>So, the moral of this story is that whenever you think you need to use an OLE DB Command component, ask yourself, &#8220;Do I *really* need to use this component, or should I use a different approach?&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2009/10/29/ssis-why-is-my-data-flow-so-slow-with-an-ole-db-command-component/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Book Announcement - SQL Server MVP Deep Dives</title>
		<link>http://www.ssistalk.com/2009/09/29/book-announcement-sql-server-mvp-deep-dives/</link>
		<comments>http://www.ssistalk.com/2009/09/29/book-announcement-sql-server-mvp-deep-dives/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 16:05:33 +0000</pubDate>
		<dc:creator>Phil Brammer</dc:creator>
		
		<category><![CDATA[SQL Server]]></category>

		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://www.ssistalk.com/?p=173</guid>
		<description><![CDATA[A collection of 53 Microsoft MVPs (myself included) have wrapped up authoring one of the greatest SQL Server books yet to hit the shelves - SQL Server MVP Deep Dives.  
This book brings together the experience from all corners of SQL Server: Design &#038; Architecture, Development, Administration, Performance Tuning &#038; Optimization, and Business Intelligence. [...]]]></description>
			<content:encoded><![CDATA[<p>A collection of 53 Microsoft MVPs (myself included) have wrapped up authoring one of the greatest SQL Server books yet to hit the shelves - SQL Server MVP Deep Dives.  </p>
<p>This book brings together the experience from all corners of SQL Server: Design &#038; Architecture, Development, Administration, Performance Tuning &#038; Optimization, and Business Intelligence.  Each section contains unique topics ranging from avoiding common query mistakes, running SQL Server on Hyper-V, to SSIS performance tuning.  </p>
<p>The book is available to pre-order here: <a href="http://www.sqlservermvpdeepdives.com">http://www.sqlservermvpdeepdives.com</a></p>
<p>(EDIT: Save 50% by purchasing the book from the above site by the end of September when you use the code, pop0928)</p>
<p>All author royalties - and this is what really makes this book stand out - are being donated to <a href="http://www.warchild.org">War Child International</a>, a charity involved in bringing food, health, and happiness to kids across the world involved in war.</p>
<p>Many thanks to the editors for pushing this book through to completion: Paul Nielsen, Kalen Delaney, Greg Low, Adam Machanic, Paul S. Randal, and Kimberly L. Tripp</p>
<p>For more information on the book, continue reading:<br />
<span id="more-173"></span></p>
<p>Chapter list:</p>
<p>PART I - DATABASE DESIGN AND ARCHITECTURE<br />
Paul Nielsen, Editor</p>
<p>1. Louis and Paul&#8217;s 10 relational database design rules by Paul Nielsen and Louis Davidson<br />
2. SQL Server tools for maintaining data integrity by Louis Davidson<br />
3. Finding functional dependencies by Hugo Kornelis</p>
<p>PART II - DATABASE DEVELOPMENT<br />
Adam Machanic, Editor</p>
<p>4. Set-based iteration: the third alternative by Hugo Kornelis<br />
5. Gaps and islands by Itzik Ben-Gan<br />
6. Error handling in SQL Server and applications by Bill Graziano<br />
7. Pulling apart the FROM clause by Rob Farley<br />
8. What makes a bulk insert a minimally logged operation? by Denis Gobo<br />
9. Avoiding three common query mistakes by Kathi Kellenberger<br />
10. Introduction to XQuery on SQL Server by Michael Coles<br />
11. SQL Server XML frequently asked questions by Michael Coles<br />
12. Using XML to transport relational data by Matija Lah<br />
13. Full text searching by Robert C. Cain<br />
14. Simil: an algorithm to look for similar strings by Tom Van Stiphout<br />
15. LINQ to SQL and the ADO.NET Entity Framework by Bob Beauchemin<br />
16. Table-valued parameters by Don Kiely<br />
17. Build your own index by Erland Sommarskog<br />
18. Getting and staying connected—or not by William Vaughn<br />
19. Extending your productivity in SSMS and Query Analyzer by Pawel Potasinski<br />
20. Why every SQL developer needs to have a tools database by Denis Gobo<br />
21. Deprecation feature by Cristian Lefter<br />
22. Placing SQL Server in your pocket by Christopher Fairbairn<br />
23. Mobile data strategies by John Baird</p>
<p>PART III - DATABASE ADMINISTRATION<br />
Kimberly L. Tripp and Paul S. Randal, Editors</p>
<p>24. What does it mean to be a DBA? by Brad McGehee<br />
25. Working with maintenance plans by Tibor Karaszi<br />
26. PowerShell in SQL Server by Richard Siddaway<br />
27. Automating SQL Server management using Server Management Objects by Allen White<br />
28. Practical auditing in SQL Server 2008 by Jasper Smith<br />
29. My favorite DMVs and why by Aaron Bertrand<br />
30. Reusing space in a table by Joe Webb<br />
31. Some practical issues in table partitioning by Ron Talmage<br />
32. Partitioning for manageability (and maybe performance) by Dan Guzman<br />
33. Faster, smaller, and more energy-efficient backups without indexes by Greg Linwood<br />
34. Using database mirroring to become a superhero! by Glenn Berry<br />
35. The poor man&#8217;s SQL Server log shipping by Edwin Sarmiento<br />
36. Some understated changes found in SQL Server 2005 replication by Paul Ibison<br />
37. High performance transactional replication by Hilary Cotter<br />
38. Successfully implementing Kerberos delegation by Scott Stauffer<br />
39. Running SQL Server on Hyper-V by John Paul Cook</p>
<p>PART IV - PERFORMANCE TUNING AND OPTIMIZATION<br />
Kalen Delaney, Editor</p>
<p>40. When is an unused index not an unused index? by Rob Farley<br />
41. Speeding up queries with index covering by Alex Kuznetsov<br />
42. Tracing the deadlock by Gail Shaw<br />
43. How to optimize tempdb performance by Brad McGehee<br />
44. Does the order of columns in an index matter? by Joe Webb<br />
45. Correlating SQL Profiler with Windows Performance Monitor by Kevin Kline<br />
46. Using correlation to improve query performance by Gert-Jan Strik<br />
47. Dr. DMV: how to use Dynamic Management Views by Glenn Berry<br />
48. Query performance and disk I/O counters by Linchi Shea<br />
49. XEVENT: the next event infrastructure for SQL Server by Cristian Lefter</p>
<p>PART V - BI DEVELOPMENT<br />
Greg Low, Editor</p>
<p>50. BI for the relational guy by Erin Welker<br />
51. Unlocking the secrets of SQL Server 2008 Reporting Services by William Vaughn<br />
52. Reporting Services tips and tricks by Bruce Loehle-Conger<br />
53. SQL Server Audit: change tracking or change data capture? by Aaron Bertrand<br />
54. Introduction to SSAS data mining by Dejan Sarka<br />
55. To aggregate or not to aggregate: is there really a question? by Erin Welker<br />
56. Incorporating data profiling in the ETL process by John Welch<br />
57. Expressions in SQL Server Integration Services by Matthew Roche<br />
58. SSIS performance tips by Phil Brammer<br />
59. Incremental loads using T-SQL and SSIS by Andy Leonard</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ssistalk.com/2009/09/29/book-announcement-sql-server-mvp-deep-dives/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
