<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SSIS Junkie : sql server integration services, sql server</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/sql+server/default.aspx</link><description>Tags: sql server integration services, sql server</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>sp_ssiscatalog v1.0.2.0 now available for download [SSIS]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2013/03/12/sp-ssiscatalog-v1-0-2-0-now-available-for-download.aspx</link><pubDate>Mon, 11 Mar 2013 22:51:20 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:48182</guid><dc:creator>jamiet</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/48182.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=48182</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=48182</wfw:comment><description>&lt;h2&gt;v1.0.2.0 – what’s in it?&lt;/h2&gt;  &lt;p&gt;Things have been a bit quiet on the sp_ssiscatalog front since &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2012/12/05/documenting-sp-ssiscatalog.aspx" target="_blank"&gt;I last blogged about it three months ago in December 2012&lt;/a&gt;. Rest-assured development continues apace however and today I’m making available a minor update, v1.0.2.0 which is now available for download &lt;a href="http://ssisreportingpack.codeplex.com/releases/view/103261" target="_blank"&gt;from Codeplex&lt;/a&gt;. For those that don’t know I describe sp_ssiscatalog as:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;sp_ssiscatalog is a stored procedure that makes it easy to query for information that is strewn around the SSIS Catalog.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;There aren’t too many functional changes in this release, it is more focused on making sp_ssiscatalog easier to use. Back in &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/2012/12/05/documenting-sp-ssiscatalog.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/2012/12/05/documenting-sp-ssiscatalog.aspx" target="_blank"&gt;Documenting sp_ssiscatalog&lt;/a&gt; I explained how I was adding documentation to the messages tab of SSMS. Hence as of this new release when you execute sp_ssiscatalog you will see information such as this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_446C89A2.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5021D0D4.png" width="888" height="344" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_599A8F4A.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_05D7162F.png" width="890" height="266" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;which I think should be very useful for anyone that wants to use sp_ssiscatalog to its fullest. Even I who wrote the thing and has been using it day-in, day-out for quite some time now can’t remember the names of all the parameters – now I no longer have to!&lt;/p&gt;  &lt;p&gt;Note that you can turn off the display of the documentation using the @show_docs parameter:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;font size="4"&gt;&lt;strong&gt;&lt;font size="2"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;exec&lt;/font&gt;&lt;/span&gt; sp_ssiscatalog&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;@show_docs&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;0&lt;/font&gt;&lt;/strong&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you want to display &lt;em&gt;only&lt;/em&gt; the documentation and not actually have sp_ssiscatalog do any querying of the SSIS Catalog its @show_docs_only:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;strong&gt;exec&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;strong&gt;&lt;font size="2"&gt; sp_ssiscatalog&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;@show_docs_only&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;1&lt;/font&gt;&lt;/strong&gt;
&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have any suggestions for future enhancements please put them in the comments below or submit them to &lt;a href="http://ssisreportingpack.codeplex.com/discussions" target="_blank"&gt;the discussions page on the Codeplex site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As a reminder, here is the sort of thing you can do with sp_ssiscatalog:&lt;/p&gt;

&lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;&lt;strong&gt;--Return all failed executions&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;/span&gt; [dbo]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[sp_ssiscatalog]&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;@operation_type&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;@execs_status_desc&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'failed'&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--Return all executions for a specified folder&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;/span&gt; [dbo]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[sp_ssiscatalog]&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;@operation_type&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;@execs_folder_name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'My folder'&lt;/font&gt;&lt;/span&gt;&amp;#160; &lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;strong&gt;
&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;--Return all executions of a specified package in a specified project&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;/span&gt; [dbo]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[sp_ssiscatalog]&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;@operation_type&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt;@execs_project_name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;'My project'&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;/span&gt; @execs_package_name&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;=&lt;/font&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;'Pkg.dtsx'&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;pre style="list-style-type:disc;font-family:;background:white;color:;text-align:left;"&gt;&lt;font face="Consolas"&gt;&lt;font size="2"&gt;&lt;span style="color:;"&gt;&lt;font color="#008000"&gt;&lt;strong&gt;&lt;br /&gt;--Return information about the most recent execution&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;strong&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;EXEC&lt;/font&gt;&lt;/span&gt; [dbo]&lt;span style="color:;"&gt;&lt;font color="#808080"&gt;.&lt;/font&gt;&lt;/span&gt;[sp_ssiscatalog]&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/pre&gt;

&lt;p&gt;One last thing, if sp_ssiscatalog is useful to you and you’d like to support future development feel free to donate to my personal beer fund at &lt;a href="http://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=jamie@jamie-thomson.net&amp;amp;item_name=Supporting%20sp_ssiscatalog"&gt;http://www.paypal.com/cgi-bin/webscr?cmd=_xclick&amp;amp;business=jamie@jamie-thomson.net&amp;amp;item_name=Supporting%20sp_ssiscatalog&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;
  &lt;hr /&gt;&lt;/p&gt;

&lt;h2&gt;Installation Instructions&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Download the zip file at &lt;a href="http://ssisreportingpack.codeplex.com/releases/view/103261" target="_blank"&gt;DB v1.0.2.0&lt;/a&gt;. It contains two files, SsisReportingPack.dacpac &amp;amp; SSISDB.dacpac &lt;/li&gt;

  &lt;li&gt;Unzip to a folder of your choosing &lt;/li&gt;

  &lt;li&gt;Open a command prompt and change to the directory into which you unzipped the files &lt;/li&gt;

  &lt;li&gt;Execute: 
    &lt;ul&gt;
      &lt;li&gt;&amp;quot;%PROGRAMFILES(x86)%\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe&amp;quot; /a:Publish /tdn:SsisReportingPack /sf:SSISReportingPack.dacpac /v:SSISDB=SSISDB /tsn:(local) 
        &lt;br /&gt;(/tsn specifies the target server, change as appropriate. /tdn specifies the database name, you can call it whatever you like.) &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If everything works OK you’ll see something like the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7654045F.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_41D33217.png" width="645" height="629" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will (if it doesn’t already exist) create a database called [SsisReportingPack] (or whatever you chose to call it) which contains [dbo].[sp_ssiscatalog].&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_31E3ED53.png"&gt;&lt;img title="image" style="border-left-width:0px;border-right-width:0px;background-image:none;border-bottom-width:0px;padding-top:0px;padding-left:0px;display:inline;padding-right:0px;border-top-width:0px;" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_310B8769.png" width="353" height="397" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=48182" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sp_5F00_ssiscatalog/default.aspx">sp_ssiscatalog</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Reporting+Pack/default.aspx">SSIS Reporting Pack</category></item><item><title>The perils of double-dash comments [T-SQL]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/12/06/the-perils-of-double-dash-comments-t-sql.aspx</link><pubDate>Thu, 06 Dec 2012 09:21:39 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:46531</guid><dc:creator>jamiet</dc:creator><slash:comments>17</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/46531.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=46531</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=46531</wfw:comment><description>&lt;p&gt;I was checking my Twitter feed on my way in to work this morning and was alerted to an interesting blog post by &lt;a href="https://twitter.com/ValentinoV42" target="_blank"&gt;Valentino Vranken&lt;/a&gt; that highlights a problem regarding the OLE DB Source in SSIS. In short, using double-dash comments in SQL statements within the OLE DB Source can cause unexpected results. It really is quite an important read if you’re developing SSIS packages so head over to &lt;a href="http://blog.hoegaerden.be/2012/12/05/ssis-ole-db-source-parameters-and-comments-a-dangerous-mix/?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+ADevelopersBlog+%28A+Developer%27s+Blog%29" target="_blank"&gt;SSIS OLE DB Source, Parameters And Comments: A Dangerous Mix!&lt;/a&gt; and be educated. Note that the problem is solved in SSIS2012 and Valentino explains exactly why.&lt;/p&gt;  &lt;p&gt;If reading Valentino’s post has switched your brain into “learn mode” perhaps also check out my post &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2006/02/21/SSIS_3A00_-SELECT-_2A002E002E002E00_-or-select-from-a-dropdown-in-an-OLE-DB-Source-component_3F00_.aspx" target="_blank"&gt;SSIS: SELECT *... or select from a dropdown in an OLE DB Source component?&lt;/a&gt; which highlights another issue to be aware of when using the OLE DB Source.&lt;/p&gt;  &lt;p&gt;As I was reading Valentino’s post I was reminded of a slidedeck by &lt;a href="https://twitter.com/ChrisAdkin8" target="_blank"&gt;Chris Adkin&lt;/a&gt; entitled &lt;a href="http://www.slideshare.net/chris1adkin/t-sql-coding-guidelines" target="_blank"&gt;T-SQL Coding Guidelines&lt;/a&gt; where he recommends never using double-dash comments:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5157145A.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3DC9B4B9.png" width="330" height="277" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That’s good advice!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=46531" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/t-sql/default.aspx">t-sql</category></item><item><title>SSIS Reporting Pack – a performance tip</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/11/05/ssis-reporting-pack-a-performance-tip.aspx</link><pubDate>Mon, 05 Nov 2012 22:36:41 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45948</guid><dc:creator>jamiet</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/45948.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=45948</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=45948</wfw:comment><description>&lt;p&gt;SSIS Reporting Pack is a suite of open source SQL Server Reporting Services (SSRS) reports that provide additional insight into the SQL Server Integration Services (SSIS) 2012 Catalog. You can read more about SSIS Reporting Pack &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Reporting+Pack/default.aspx" target="_blank"&gt;here on my blog&lt;/a&gt; or had over to the home page for the project at &lt;a title="http://ssisreportingpack.codeplex.com/" href="http://ssisreportingpack.codeplex.com/"&gt;http://ssisreportingpack.codeplex.com/&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;After having used SSRS Reporting Pack on a real project for a few months now I have come to realise that if you have any sizeable data volumes in [SSISDB] then the reports in SSIS Reporting Pack will suffer from chronic performance problems – I have seen the “execution” report take upwards of 30minutes to return data. To combat this I highly recommend that you create an index on the &lt;font face="Consolas"&gt;[SSISDB].[internal].[event_messages].[operation_id]&lt;/font&gt; &amp;amp; &lt;font face="Consolas"&gt;[SSISDB].[internal].[operation_messages].[operation_id]&lt;/font&gt; fields. &lt;a href="http://www.ssistalk.com/"&gt;Phil Brammer&lt;/a&gt; has experienced similar problems himself and has since made it easy for the rest of us by preparing some scripts to create the indexes that he recommends and he has shared those scripts via his blog at &lt;a href="http://www.ssistalk.com/SSIS_2012_Missing_Indexes.zip"&gt;http://www.ssistalk.com/SSIS_2012_Missing_Indexes.zip&lt;/a&gt;. If you are using SSIS Reporting Pack, or even if you are simply querying [SSISDB], I highly recommend that you download Phil’s scripts and test them out on your own SSIS Catalog(s).&lt;/p&gt;  &lt;p&gt;Those indexes will not solve all problems but they will make some of your reports run quicker. I am working on some further enhancements that should further improve the performance of the reports. Watch this space.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=45948" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+Reporting+Services/default.aspx">SQL Server Reporting Services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Catalog/default.aspx">SSIS Catalog</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Reporting+Pack/default.aspx">SSIS Reporting Pack</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSRS/default.aspx">SSRS</category></item><item><title>Querying the SSIS Catalog? Here’s a handy query!</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/10/17/querying-the-ssis-catalog-here-s-a-handy-query.aspx</link><pubDate>Wed, 17 Oct 2012 12:05:57 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45618</guid><dc:creator>jamiet</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/45618.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=45618</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=45618</wfw:comment><description>&lt;p&gt;I’ve been working on a SQL Server Integration Services (SSIS) solution for about 6 months now and I’ve learnt many many things that I intend to share on this blog just as soon as I get the time. Here’s a very short starter-for-ten…&lt;/p&gt;  &lt;p&gt;I’ve found the following query to be utterly invaluable when interrogating the SSIS Catalog to discover what is going on in my executions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="font-size:12px;"&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;event_message_id&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="blue"&gt;MESSAGE&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;package_name&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;event_name&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;message_source_name&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;package_path&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;execution_path&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;message_type&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;message_source_type&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;FROM&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;(&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;SELECT&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;em.&lt;/font&gt;&lt;font color="gray"&gt;*&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;FROM&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;SSISDB.catalog.event_messages em&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;em.operation_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="magenta"&gt;MAX&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;execution_id&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;/font&gt;&lt;font color="black"&gt;SSISDB.catalog.executions&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND &lt;/font&gt;&lt;font color="black"&gt;event_name &lt;/font&gt;&lt;font color="gray"&gt;NOT LIKE &lt;/font&gt;&lt;font color="red"&gt;'%Validate%'&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;)&lt;/font&gt;&lt;font color="black"&gt;q&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;/* Put in whatever WHERE predicates you might like*/&lt;br /&gt;--WHERE	event_name = 'OnError'&lt;br /&gt;--WHERE	package_name = 'Package.dtsx'&lt;br /&gt;--WHERE execution_path LIKE '%&amp;lt;some executable&amp;gt;%'&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ORDER BY &lt;/font&gt;&lt;font color="black"&gt;message_time &lt;/font&gt;&lt;font color="blue"&gt;DESC&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_541C129A.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_50BA7AF2.png" width="928" height="335" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Know it. Learn it. Love it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=45618" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Catalog/default.aspx">SSIS Catalog</category></item><item><title>Should we be able to deploy a single package to the SSIS Catalog?</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/10/16/should-we-be-able-to-deploy-a-single-package-to-the-ssis-catalog.aspx</link><pubDate>Tue, 16 Oct 2012 08:18:14 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45591</guid><dc:creator>jamiet</dc:creator><slash:comments>18</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/45591.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=45591</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=45591</wfw:comment><description>&lt;p&gt;My buddy &lt;a href="https://twitter.com/suthathiru" target="_blank"&gt;Sutha Thiru&lt;/a&gt; sent me an email recently asking about my opinion on a particular nuance of the project deployment model in SQL Server Integration Services (SSIS) 2012 and I’d like to share my response as I think it warrants a wider discussion. Sutha asked:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Jamie&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;What is your take on this?       &lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;a href="http://www.mattmasson.com/index.php/2012/07/can-i-deploy-a-single-ssis-package-from-my-project-to-the-ssis-catalog/" target="_blank"&gt;http://www.mattmasson.com/index.php/2012/07/can-i-deploy-a-single-ssis-package-from-my-project-to-the-ssis-catalog/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Overnight I was talking to Matt who confirmed that they got no plans to change the deployment model.       &lt;br /&gt;&lt;/em&gt;&lt;em&gt;For example if we have following scenrio how do we do deploy?&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Sprint 1           &lt;br /&gt;&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;em&gt;Pkg1, 2 &amp;amp; 3 has been developed and deployed to UAT. Once signed off its been deployed to Live.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;em&gt;Sprint 2           &lt;br /&gt;&lt;/em&gt;&lt;/u&gt;&lt;/strong&gt;&lt;em&gt;Pkg 4 &amp;amp; 5 been developed. During this time users raised a bug on Pkg2. We want to make the change to Pkg2 and deploy that to UAT and eventually to LIVE without releasing Pkg 4 &amp;amp;5.       &lt;br /&gt;&lt;/em&gt;&lt;em&gt;How do we do it?       &lt;br /&gt;&lt;/em&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Matt pointed me to his blog entry which I have seen before . &lt;/em&gt;&lt;a href="http://www.mattmasson.com/index.php/2012/02/thoughts-on-branching-strategies-for-ssis-projects/" target="_blank"&gt;http://www.mattmasson.com/index.php/2012/02/thoughts-on-branching-strategies-for-ssis-projects/&lt;/a&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Thanks       &lt;br /&gt;&lt;/em&gt;&lt;em&gt;Sutha&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;My response:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Personally, even though I've experienced the exact problem you just outlined, I agree with the current approach. I steadfastly believe that there should not be a way for an unscrupulous developer to slide in a new version of a package under the covers. Deploying .ispac files brings a degree of rigour to your operational processes.&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Yes, that means that we as SSIS developers are going to have to get better at using source control and branching properly but that is no bad thing in my opinion. Claiming to be proper &amp;quot;developers&amp;quot; is a bit of a cheap claim if we don't even do the fundamentals correctly.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I would be interested in the thoughts of others who have used the project deployment model. Do you agree with my point of view?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=45591" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Catalog/default.aspx">SSIS Catalog</category></item><item><title>SSIS Catalog, Windows updates and deployment failures due to System.Core mismatch</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/07/11/ssis-catalog-windows-updates-and-deployment-failures-due-to-system-core-mismatch.aspx</link><pubDate>Wed, 11 Jul 2012 14:36:23 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44257</guid><dc:creator>jamiet</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/44257.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=44257</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=44257</wfw:comment><description>&lt;p&gt;&lt;em&gt;This is a heads-up for anyone doing development on SSIS. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;On my current project where we are implementing a SQL Server Integration Services (SSIS) 2012 solution we recently encountered a situation where we were unable to deploy any of our projects even though we had successfully deployed in the past. Any attempt to use the deployment wizard resulted in this error dialog:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/clip_image002_1AF90749.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="clip_image002" border="0" alt="clip_image002" src="http://sqlblog.com/blogs/jamie_thomson/clip_image002_thumb_3D6D9604.jpg" width="510" height="257" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The text of the error (for all you search engine crawlers out there) was:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color="#ff0000"&gt;A .NET Framework error occurred during execution of user-defined routine or aggregate &amp;quot;create_key_information&amp;quot;:        &lt;br /&gt;System.IO.FileLoadException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) ---&amp;gt; System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)        &lt;br /&gt;System.IO.FileLoadException:         &lt;br /&gt;System.IO.FileLoadException:&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SqlServer.IntegrationServices.Server.Security.CryptoGraphy.CreateSymmetricKey(String algorithm)        &lt;br /&gt;&amp;#160;&amp;#160; at Microsoft.SqlServer.IntegrationServices.Server.Security.CryptoGraphy.CreateKeyInformation(SqlString algorithmName, SqlBytes&amp;amp; key, SqlBytes&amp;amp; IV)        &lt;br /&gt;. (Microsoft SQL Server, Error: 6522)&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;After some investigation and a bit of back and forth with some very helpful members of the SSIS product team (hey Matt, Wee Hyong) it transpired that this was due to a .Net Framework fix that had been delivered via Windows Update. I took a look at the server update history and indeed there have been some recently applied .Net Framework updates:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1C0DF068.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3AE46446.png" width="654" height="235" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This fix had (in the words of &lt;a href="https://twitter.com/mattmasson" target="_blank"&gt;Matt Masson&lt;/a&gt;) “somehow caused a mismatch on System.Core for SQLCLR” and, as you may know, SQLCLR is used heavily within the SSIS Catalog. The fix was pretty simple – restart SQL Server. This causes the assemblies to be upgraded automatically. If you are using Data Quality Services (DQS) you may have experienced similar problems which are documented at &lt;a href="http://http://msdn.microsoft.com/en-us/library/hh479773.aspx" target="_blank"&gt;Upgrade SQLCLR Assemblies After .NET Framework Update&lt;/a&gt;. I am hoping the SSIS team will follow-up with a more thorough explanation on their &lt;a href="http://blogs.msdn.com/b/mattm/" target="_blank"&gt;blog&lt;/a&gt; soon.&lt;/p&gt;  &lt;p&gt;You DBAs out there may be questioning why Windows Update is set to automatically apply updates on our production servers. We’re checking that out with our hosting provider right now &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://sqlblog.com/blogs/jamie_thomson/wlEmoticon-smile_0088EE65.png" /&gt;&lt;/p&gt;  &lt;p&gt;You have been warned!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=44257" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Catalog/default.aspx">SSIS Catalog</category></item><item><title>Using Find/Replace with regular expressions inside a SSIS package</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/06/12/using-find-replace-with-regular-expressions-inside-a-ssis-package.aspx</link><pubDate>Tue, 12 Jun 2012 08:56:37 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:43845</guid><dc:creator>jamiet</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/43845.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=43845</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=43845</wfw:comment><description>&lt;p&gt;&lt;em&gt;Another one of those might-be-useful-again-one-day-so-I’ll-share-it-in-a-blog-post blog posts&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I am currently working on a SQL Server Integration Services (SSIS) 2012 implementation where each package contains a parameter called ETLIfcHist_ID:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_175EF134.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1B1C9604.png" width="377" height="135" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;During normal execution this will get altered when the package is executed from the Execute Package Task however we want to make sure that at deployment-time they all have a default value of –1. Of course, they tend to get changed during development so I wanted a way of easily changing them all back to the default value. Opening up each package in turn and editing them was an option but given that we have over 40 packages and we might want to carry out this reset fairly frequently I needed a more automated method so I turned to Visual Studio’s Find/Replace… feature&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_19D7FD25.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_318F348B.png" width="427" height="302" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Of course, we don’t know what value will be in that parameter so I can’t simply search for a particular value; hence I opted to use a regular expression to identify the value to be change. In the rest of this blog post I’ll explain how to do that.&lt;/p&gt;  &lt;p&gt;For demonstration purposes I have taken the contents of a .dtsx file and stripped out everything except the element containing the parameters (&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameters&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;), if you want to play along at home you can copy-paste the XML document below into a new XML file and open it up in Visual Studio:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="text-align:left;list-style-type:disc;font-family:;background:white;color:;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;&amp;lt;?&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;xml&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;version&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;1.0&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;?&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Executable&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;xmlns:DTS&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;www.microsoft.com/SqlServer/Dts&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameters&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:CreationName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Description&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;InterfaceHistory_ID: used for Lineage&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DTSID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;{635616DB-EEEE-45C8-89AA-713E25846C7E}&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:ObjectName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ETLIfcHist_ID&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Name&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ParameterValue&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;VALUE_TO_BE_CHANGED&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:CreationName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Description&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;Some other description&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DTSID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;{635616DB-EEEE-45C8-89AA-713E25845C7E}&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:ObjectName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;SomeOtherObjectName&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Name&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ParameterValue&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;SomeOtherValue&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameters&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Executable&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color:;"&gt;&lt;font style="font-size:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;We are trying to identify the value of the parameter whose name is ETLIfcHist_ID – notice that in the XML document above that value is VALUE_TO_BE_CHANGED. The following regular expression will find the appropriate portion of the XML document:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font style="background-color:#a5a5a5;"&gt;&lt;strong&gt;&lt;u&gt;{&lt;/u&gt;&lt;/strong&gt;\&amp;lt;DTS\:PackageParameter[\n ]*DTS\:CreationName=&amp;quot;[A-Za-z0-9\:_\{\}- ]*&amp;quot;[\n ]*DTS\:DataType=&amp;quot;[A-Za-z0-9\:_\{\}- ]*&amp;quot;[\n ]*DTS\:Description=&amp;quot;[A-Za-z0-9\:_\{\}- ]*&amp;quot;[\n ]*DTS\:DTSID=&amp;quot;[A-Za-z0-9\:_\{\}- ]*&amp;quot;[\n ]*DTS\:ObjectName=&amp;quot;&lt;strong&gt;&lt;u&gt;ETLIfcHist_ID&lt;/u&gt;&lt;/strong&gt;&amp;quot;\&amp;gt;[\n ]*\&amp;lt;DTS\:Property[\n ]*DTS\:DataType=&amp;quot;[A-Za-z0-9\:_\{\}- ]*&amp;quot;[\n ]*DTS\:Name=&amp;quot;ParameterValue&amp;quot;\&amp;gt;&lt;strong&gt;&lt;u&gt;}&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;[A-Za-z0-9\:_\{\}- ]*&lt;font style="background-color:#a5a5a5;"&gt;&lt;strong&gt;&lt;u&gt;{&lt;/u&gt;&lt;/strong&gt;\&amp;lt;\/DTS\:Property\&amp;gt;&lt;strong&gt;&lt;u&gt;}&lt;/u&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I have &lt;u&gt;&lt;strong&gt;highlighted&lt;/strong&gt;&lt;/u&gt; the name of the parameter that we’re looking for. I have also &lt;font style="background-color:#a5a5a5;"&gt;highlighted&lt;/font&gt; two portions identified by pairs of curly braces “&lt;strong&gt;&lt;u&gt;{&lt;/u&gt;&lt;/strong&gt;…&lt;strong&gt;&lt;u&gt;}&lt;/u&gt;&lt;/strong&gt;”; these are important because they pick out the two portions &lt;em&gt;either side&lt;/em&gt; of the value I want to replace, in other words the portions &lt;font style="background-color:#a5a5a5;"&gt;highlighted&lt;/font&gt; here:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="text-align:left;list-style-type:disc;font-family:;background:white;color:;"&gt;&lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&lt;font style="font-size:9.8pt;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="font-size:9.8pt;"&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameters&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font style="background-color:#a5a5a5;"&gt;&amp;lt;&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;font style="background-color:#cccccc;"&gt;&lt;font style="background-color:#a5a5a5;"&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:CreationName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Description&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;InterfaceHistory_ID: used for Lineage&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DTSID&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;{635616DB-EEEE-45C8-89AA-713E25846C7E}&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:ObjectName&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ETLIfcHist_ID&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:DataType&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;3&lt;/font&gt;&lt;/span&gt;&amp;quot;
&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#ff0000"&gt;DTS:Name&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;ParameterValue&lt;/font&gt;&lt;/span&gt;&amp;quot;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;font style="background-color:#ffffff;"&gt;VALUE_TO_BE_CHANGED&lt;/font&gt;&lt;/font&gt;&lt;font style="background-color:#a5a5a5;"&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:Property&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;
&lt;/font&gt;&lt;span style="color:;"&gt;&lt;font color="#0000ff"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/font&gt;&lt;/span&gt;&lt;span style="color:;"&gt;&lt;font color="#a31515"&gt;DTS:PackageParameter&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;span style="color:;"&gt;&lt;font style="font-size:9.8pt;" color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Those sections in the curly braces are termed tag expressions and can be identified in the replace expression using a backslash and a number identifying which tag expression you’re referring to according to its ordinal position. Hence, our replace expression is simply:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;font style="background-color:#a5a5a5;"&gt;\1&lt;/font&gt;-1&lt;font style="background-color:#a5a5a5;"&gt;\2&lt;/font&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We’re saying the portion of our file identified by the regular expression should be replaced by the first curly brace section, then the literal –1, then the second curly brace section. Make sense? Give it a go yourself by plugging those two expressions into Visual Studio’s Find and Replace dialog. If you set it to look in “All Open Documents” then you can open up the code-behind of all your packages and change all of them at once. The Find and Replace dialog will look like this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_64EAF7E7.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4AAA8EC3.png" width="348" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s it! I realise that not everyone will be looking to change the value of a parameter but hopefully I have shown you a technique that you can modify to work for your own scenario.&lt;/p&gt;

&lt;p&gt;Given that this blog post is, y’know, on the web I have no doubt that someone is going to find a fault with my find regex expression and if that person is you….that’s OK. Let me know about it in the comments below and perhaps we can work together to come up with something better! Note that some parameters may have a different set of properties (for example some, but not all, of my parameters have a &lt;font face="Consolas"&gt;&lt;span style="color:;"&gt;&lt;font color="#800000"&gt;&lt;font style="font-size:9.8pt;"&gt;DTS:Required&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt; attribute) so your find regular expression may have to change accordingly.&lt;/p&gt;

&lt;p&gt;When researching this I found the following article to be invaluable: &lt;a href="http://www.codeproject.com/Articles/18101/Visual-Studio-Find-Replace-Regular-Expression-Usag" target="_blank"&gt;Visual Studio Find/Replace Regular Expression Usage&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=43845" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Parameters/default.aspx">Parameters</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Regex/default.aspx">Regex</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Regular+Expressions/default.aspx">Regular Expressions</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>Variable enhancements in RC0 [SSIS]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/02/22/variable-enhancements-in-rc0-ssis.aspx</link><pubDate>Wed, 22 Feb 2012 22:56:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:41899</guid><dc:creator>jamiet</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/41899.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=41899</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=41899</wfw:comment><description>&lt;p&gt;I have been poking around idly in the RC0 release of SQL Server Integration Services (SSIS) 2012 and noticed a few nice enhancements that hadn’t really hit the newsstands as yet (well, I didn’t know about them anyway). Here is a quick rundown:&lt;/p&gt;  &lt;h3&gt;Expression is viewable in the Variables window&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5BC5784F.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_281D0BF1.png" width="636" height="136" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Fairly self-explanatory this one. If a variable has an expression applied to it that expression can now be seen in the Variables window; also notice that the variable icon gets an adorner specifying that there is an expression upon it. What is not so obvious is that if you add an expression to a variable then the EvaluateAsExpression property of that variable is automatically set to &lt;strong&gt;True:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_06BD6655.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_17C19438.png" width="416" height="212" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That’s a welcome enhancement.&lt;/p&gt;  &lt;h3&gt;New System Variables&lt;/h3&gt;  &lt;p&gt;There are some new System variables available to you, some of which might be useful (one of which is very useful indeed):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_31FA5AD4.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_36FC9883.png" width="279" height="598" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I have not found any documentation on these as yet so I’ll take a guess at what are for:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;IgnoreConfigurationsOnLoad – This is a boolean variable so I can only assume it does what it says on the tin – ignores configurations. The default value is False. I would assume that this doesn’t have any affect if you are using the new project deployment model.&lt;/li&gt;    &lt;li&gt;ProductVersion and LastModifiedProductVersion – In the package I am looking at these are both set to 11.0.1750.32 which is the same build number as in Help-&amp;gt;About&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_03542C25.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_61F48688.png" width="432" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;The only thing I don’t understand is that if this package was built in a prior version (CTP3) why they are set to the same value?&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;ServerExecutionID – This one is very useful indeed. It provides the ExecutionID that the SSIS Catalog assigned to the current execution.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Hope that helps!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41899" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>SQL Server Configuration timeouts - and a workaround [SSIS]</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/11/30/sql-server-configuration-timeouts-and-a-workaround-ssis.aspx</link><pubDate>Wed, 30 Nov 2011 21:43:33 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:40082</guid><dc:creator>jamiet</dc:creator><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/40082.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=40082</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=40082</wfw:comment><description>&lt;p&gt;Ever since I started writing SSIS packages &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2004/11/03/Article-on-SQLIS.com.aspx" target="_blank"&gt;back in 2004&lt;/a&gt; I have opted to store configurations in .dtsConfig (.i.e. XML) files rather than in a SQL Server table (aka SQL Server Configurations) however recently I inherited some packages that used SQL Server Configurations and thus had to immerse myself in their murky little world. To all the people that have ever gone onto the SSIS forum and asked questions about ambiguous behaviour of SQL Server Configurations I now say this... &lt;i&gt;I feel your pain&lt;/i&gt;!&lt;/p&gt;  &lt;p&gt;The biggest problem I have had was in dealing with the change to the order in which configurations get applied that came about in SSIS 2008. Those changes are detailed on MSDN at &lt;a href="http://msdn.microsoft.com/en-us/library/ms141682.aspx" target="_blank"&gt;SSIS Package Configurations&lt;/a&gt; however the pertinent bits are:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;As the utility loads and runs the package, events occur in the following order:&lt;/em&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;&lt;em&gt;The &lt;b&gt;dtexec&lt;/b&gt; utility loads the package. &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;The utility applies the configurations that were specified in the package at design time and in the order that is specified in the package. (The one exception to this is the Parent Package Variables configurations. The utility applies these configurations only once and later in the process.) &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;The utility then applies any options that you specified on the command line. &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;The utility then reloads the configurations that were specified in the package at design time and in the order specified in the package. (Again, the exception to this rule is the Parent Package Variables configurations). The utility uses any command-line options that were specified to reload the configurations. Therefore, different values might be reloaded from a different location. &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;The utility applies the Parent Package Variable configurations. &lt;/em&gt;&lt;/li&gt;      &lt;li&gt;&lt;em&gt;The utility runs the packa&lt;/em&gt;&lt;em&gt;ge.&lt;/em&gt; &lt;/li&gt;   &lt;/ol&gt; &lt;/blockquote&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;To understand how these steps differ from SSIS 2005 I recommend reading Doug Laudenschlager’s blog post &lt;a href="http://dougbert.com/blogs/dougbert/archive/2009/04/07/understand-how-ssis-package-configurations-are-applied.aspx" target="_blank"&gt;Understand how SSIS package configurations are applied&lt;/a&gt;.&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;The very nature of SQL Server Configurations means that the Connection String for the database holding the configuration values needs to be supplied from the command-line. Typically then the call to execute your package resembles this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="consolas"&gt;dtexec /FILE Package.dtsx /SET &amp;quot;\Package.Connections[SSISConfigurations].Properties[ConnectionString]&amp;quot;;&amp;quot;\&amp;quot;Data Source=SomeServer;Initial Catalog=SomeDB;Integrated Security=SSPI;\&amp;quot;&amp;quot;, &lt;/font&gt;      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The problem then is that, as per the steps above, the package will (1) attempt to apply all configurations using the Connection String stored in the package for the &amp;quot;SSISConfigurations&amp;quot; Connection Manager before then (2) applying the Connection String from the command-line and then (3) apply the same configurations all over again. In the packages that I inherited that first attempt to apply the configurations would timeout (not unexpected); I had 8 SQL Server Configurations in the package and thus the package was waiting for 2 minutes until all the Configurations timed out (i.e. 15seconds per Configuration) - in a package that only executes for ~8seconds when it gets to do its actual work a delay of 2minutes was simply unacceptable.&lt;/p&gt;  &lt;p&gt;We had three options in how to deal with this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Get rid of the use of SQL Server configurations and use .dtsConfig files instead &lt;/li&gt;    &lt;li&gt;Edit the packages when they get deployed &lt;/li&gt;    &lt;li&gt;Change the timeout on the &amp;quot;SSISConfigurations&amp;quot; Connection Manager &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;#1 was my preferred choice but, for reasons I explain below*, wasn't an option in this particular instance. #2 was discounted out of hand because it negates the point of using Configurations in the first place. This left us with #3 - change the timeout on the Connection Manager. This is done by going into the properties of the Connection Manager, opening the &amp;quot;All&amp;quot; tab and changing the &lt;font face="Consolas"&gt;Connect Timeout&lt;/font&gt; property to some suitable value (in the screenshot below I chose 2 seconds).     &lt;br /&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/connman_1EB77315.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="connman" border="0" alt="connman" src="http://sqlblog.com/blogs/jamie_thomson/connman_thumb_2F4F6E03.png" width="528" height="546" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This change meant that the attempts to apply the SQL Server configurations timed out in 16 seconds rather than two minutes; clearly this isn't an optimum solution but its certainly better than it was.&lt;/p&gt;  &lt;p&gt;So there you have it - if you are having problems with SQL Server configuration timeouts within SSIS try changing the timeout of the Connection Manager. Better still - don't bother using SQL Server Configuration in the first place. Even better - install &lt;a href="http://www.microsoft.com/sqlserver/en/us/future-editions.aspx" target="_blank"&gt;RC0 of SQL Server 2012&lt;/a&gt; to start leveraging &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/11/parameters-in-ssis-in-denali.aspx" target="_blank"&gt;SSIS parameters&lt;/a&gt; and leave the nasty old world of configurations behind you.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;* Basically, we are leveraging a SSIS execution/logging framework in which the client had invested a lot of resources and SQL Server Configurations are an integral part of that.     &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=40082" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/configurations/default.aspx">configurations</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+2008/default.aspx">sql server 2008</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>SSIS Reporting Pack v0.2 now available</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/09/04/ssis-reporting-pack-v0-2-now-available.aspx</link><pubDate>Sun, 04 Sep 2011 13:57:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38268</guid><dc:creator>jamiet</dc:creator><slash:comments>2</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/38268.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=38268</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=38268</wfw:comment><description>
&lt;p&gt;In December 2010 I announced in a blog post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/12/09/introducing-ssis-reporting-pack-for-sql-server-code-named-denali.aspx" target="_blank"&gt;Introducing SSIS Reporting Pack for SQL Server code-named Denali&lt;/a&gt; that I planned to provide a series of reports that visualised information held in the SSIS Catalog in SQL Server Denali – I called these reports the &lt;b&gt;SSIS Reporting Pack&lt;/b&gt;. At that time SSIS Reporting Pack was a precursor to what I really wanted to provide because the reports were built upon the SSIS Catalog from Denali CTP1; Denali CTP3 brought with it a whole heap of changes to the SSIS Catalog (read more at &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2011/07/16/ssis-logging-in-denali.aspx" target="_blank"&gt;SSIS Logging in Denali&lt;/a&gt;) and accordingly SSIS Reporting Pack has been enhanced dramatically.&lt;/p&gt;
  &lt;h2&gt;Download and Install&lt;/h2&gt;  
&lt;p&gt;You can always download the latest release of SSIS Reporting Pack from &lt;a href="http://ssisreportingpack.codeplex.com/releases/" title="http://ssisreportingpack.codeplex.com/releases/"&gt;http://ssisreportingpack.codeplex.com/releases/&lt;/a&gt;. In the release that I am announcing today (v0.2) the reports are delivered in an msi installer rather than simply a zip file as they were before, use the installer to easily make the&amp;nbsp; reports available in whatever location you require:&lt;/p&gt;
  
&lt;blockquote&gt;   
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_66CCD4F4.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2552229B.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" border="0" height="443" width="568"&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
  
&lt;p&gt;After installation you will have a folder containing all the report project artefacts.&lt;/p&gt;
  
&lt;blockquote&gt;   
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_43BC6384.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5B0767F5.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" border="0" height="431" width="566"&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;/blockquote&gt;
  
&lt;p&gt;Open SSISReportingPack.rptproj in Visual Studio just as you would any other Reporting Services project from where you can deploy the reports to your Denali report server of choice. You will need to edit the data source (SSISCatalog.rds) to point to your SSIS Catalog (i.e. the [SSISDB] database). If you do not have your own instance of the SSIS Catalog database ([SSISDB]) but still wish to evaluate SSIS Reporting Pack I have made a copy of [SSISDB] available on SQL Azure that can be accessed using the following credentials:&lt;/p&gt;
  
&lt;table cellpadding="2" cellspacing="0"&gt;     
&lt;tr&gt;       
&lt;td&gt;         
&lt;p align="center"&gt;&lt;b&gt;Server&lt;/b&gt;&lt;/p&gt;
       &lt;/td&gt;
        
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
        
&lt;td&gt;         
&lt;p align="center"&gt;&lt;b&gt;Username&lt;/b&gt;&lt;/p&gt;
       &lt;/td&gt;
        
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
        
&lt;td&gt;         
&lt;p align="center"&gt;&lt;b&gt;Password&lt;/b&gt;&lt;/p&gt;
       &lt;/td&gt;

&lt;td&gt;         
&lt;p align="center"&gt;&lt;b&gt;Database&lt;/b&gt;&lt;/p&gt;
       &lt;/td&gt;
     &lt;/tr&gt;
      
&lt;tr&gt;       
&lt;td&gt;         
&lt;p align="center"&gt;enf3k2ao1m.database.windows.net&lt;/p&gt;
       &lt;/td&gt;
        
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
        
&lt;td&gt;         
&lt;p align="center"&gt;ro&lt;/p&gt;
       &lt;/td&gt;
        
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
        
&lt;td&gt;         
&lt;p align="center"&gt;r3@d0nly&lt;/p&gt;
       &lt;/td&gt;
&lt;td&gt;         
&lt;p align="center"&gt;SSISDB&lt;/p&gt;
       &lt;/td&gt;
     &lt;/tr&gt;
   &lt;/table&gt;
        
&lt;blockquote&gt;   &lt;h2&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_790575E9.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_05932306.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" border="0" height="679" width="566"&gt;&lt;/a&gt;&lt;/h2&gt; &lt;/blockquote&gt;
  &lt;h2&gt;The Reports&lt;/h2&gt;  
&lt;p&gt;As I said above the reports have been changed in order to leverage the new additions to the SSIS Catalog in CTP3. The main enhancement I want to draw your attention to is the rich navigation of log data that is now provided&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_11B49D2D.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_731AAC83.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" border="0" height="540" width="774"&gt;&lt;/a&gt;&lt;/p&gt;
  
&lt;p&gt;Notice that the log messages are now &lt;i&gt;contextual&lt;/i&gt;, each message is shown against the executable that raised the message which in turn is indented indicating its position in the executable hierarchy. I expect this to be of great benefit when navigating package execution logs which, prior to Denali, was very difficult due to it essentially being a long flat list of messages.&lt;/p&gt;
  
&lt;p&gt;SSIS Reporting Pack also has the ability to visualise the duration of each excutable:&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_37E6D0B8.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6F4CE1E6.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" border="0" height="408" width="779"&gt;&lt;/a&gt;&lt;/p&gt;
  
&lt;p&gt;In the simple example highlighted here by the red box we can see that iteration 3 of the For Each Loop “FEL Loop over top performing regions” took considerably longer than the two previous iterations; SSIS Reporting Pack gives us the tools we need to drill in and find out exactly where and why that slow down occurred.&lt;/p&gt;
  
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
                
&lt;p&gt;Those are two of the main new features of SSIS Reporting Pack but there is lots more to discover so if you are evaluating SSIS in Denali I encourage you to &lt;a href="http://ssisreportingpack.codeplex.com/releases/" target="_blank"&gt;download SSIS Reporting Pack&lt;/a&gt; and use it to learn about the plethora of data that is available in the SSIS Catalog. Please do bear in mind that this is still an early release so there are still lots of improvements to be made in the future; you can suggest improvements or report bugs either in the comments section below or (preferably) on the Discussions page at &lt;a href="http://ssisreportingpack.codeplex.com/discussions" title="http://ssisreportingpack.codeplex.com/discussions"&gt;http://ssisreportingpack.codeplex.com/discussions&lt;/a&gt;.&lt;/p&gt;
  
&lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=38268" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Reporting+Pack/default.aspx">SSIS Reporting Pack</category></item><item><title>[SSIS] OnPipelineRowsSent event</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/08/19/ssis-onpipelinerowssent-event.aspx</link><pubDate>Fri, 19 Aug 2011 11:48:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:37927</guid><dc:creator>jamiet</dc:creator><slash:comments>6</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/37927.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=37927</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=37927</wfw:comment><description>&lt;blockquote&gt;
&lt;p&gt;&lt;i&gt;Once upon a time I blogged at &lt;a href="http://consultingblogs.emc.com/jamiethomson" target="_blank"&gt;http://consultingblogs.emc.com/jamiethomson&lt;/a&gt; but that ended in August 2009 when I left EMC. There is a lot of valuable content over there however certain events in the past leave me concerned that that content is not well cared for and I don't have any confidence that it will still exist in the long term. Hence, I have taken the decision to re-publish some of that content here at SQLBlog so over the coming weeks and months you may find re-published content popping up here from time-to-time.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;i&gt;This is the first such blog post in &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/repost/default.aspx" target="_blank"&gt;this series&lt;/a&gt; in which I talk about the little-known OnPipelineRowsSent event.&lt;/i&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;/blockquote&gt;

&lt;p&gt;An &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1317964&amp;amp;SiteID=1"&gt;interesting discussion&lt;/a&gt; today on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=80&amp;amp;SiteID=1"&gt;SSIS Forum&lt;/a&gt;
 made me realise that perhaps not&amp;nbsp;all SSIS developers&amp;nbsp;are aware of the 
OnPipelineRowsSent event in SSIS and how valuable it can be, certainly 
when debugging data-flows. This isn't all that surprising because &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141026.aspx"&gt;Books Online&lt;/a&gt;&amp;nbsp;is very sparse in this area. Hence I thought it would make a useful blog topic.&lt;/p&gt;

&lt;p&gt;OnPipelineRowsSent
 is a type of&amp;nbsp;event in SSIS which means the&amp;nbsp;information that it provides
 can be logged&amp;nbsp;by whatever log provider you happen to be using.&amp;nbsp;In 
order&amp;nbsp;to understand the information that OnPipelineRowsSent provides it 
is critical to understand the buffer architecture of the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141122.aspx"&gt;SSIS data-flow&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To
 explain&amp;nbsp;that&amp;nbsp;VERY simply, a buffer is an area of memory that contains 
rows of data as they pass through the pipeline. Each data-path in the 
data-flow&amp;nbsp;will contain one of more buffers and each of those buffers 
(except for the last one) will contain the same number of rows. If you 
want to understand more about the buffer architecture of the data-flow 
then &lt;a href="http://www.amazon.com/Microsoft-Server-2005-Integration-Services/dp/0672327813"&gt;Kirk Haselden's book&lt;/a&gt; has a chapter devoted wholly to it.&lt;/p&gt;

&lt;p&gt;Here is what Books Online &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141122.aspx"&gt;DOES say&lt;/a&gt; about OnPipelineRowsSent:&lt;/p&gt;

&lt;table&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&lt;b&gt;OnPipelineRowsSent&lt;/b&gt; &lt;/p&gt;
&lt;/td&gt;

&lt;td&gt;
&lt;p&gt;Reports the number of rows provided to a component input by a call to the &lt;b&gt;ProcessInput&lt;/b&gt; method. The log entry includes the component name. &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;

&lt;p&gt;In
 slightly plainer english that means that for every buffer of data that 
is consumed by a component, you get a log entry. So, if you have&amp;nbsp;(e.g.) a
 &lt;a href="http://msdn2.microsoft.com/en-us/library/ms141069.aspx"&gt;Derived Column Component&lt;/a&gt;&amp;nbsp;that
 receives 105000&amp;nbsp;rows and the size of the buffer is 10000 rows, you'll 
get 11 OnPipelineRowsSent log entries for that&amp;nbsp;component&amp;nbsp;(there will 
only be 5000 rows in the last buffer).&amp;nbsp;Basically it enables you to know 
how many rows are passing through each data-path in the data-flow.&lt;/p&gt;

&lt;p&gt;The available information is the same as you get for any eventhandler. &amp;nbsp;i.e. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;event&lt;/li&gt;

&lt;li&gt;computer&lt;/li&gt;

&lt;li&gt;operator&lt;/li&gt;

&lt;li&gt;source&lt;/li&gt;

&lt;li&gt;sourceid&lt;/li&gt;

&lt;li&gt;executionid&lt;/li&gt;

&lt;li&gt;starttime&lt;/li&gt;

&lt;li&gt;endtime&lt;/li&gt;

&lt;li&gt;datacode&lt;/li&gt;

&lt;li&gt;databytes&lt;/li&gt;

&lt;li&gt;message&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and here is a portion of a logfile containing those records:&lt;/p&gt;

&lt;p&gt;&lt;font face="courier new"&gt;&lt;font color="#ff0000"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 1228 : Merge Join Output : 1225 : Union All 1 :
 1226 : Union All Input 1 : 9936&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 1475 : Union All Output 1 : 1470 : Sort 3 : 
1471 : Sort Input : 9936&lt;br&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 1228 : Merge Join Output : 1225 : Union All 1 :
 1226 : Union All Input 1 : 2085&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 1475 : Union All Output 1 : 1470 : Sort 3 : 
1471 : Sort Input : 9936&lt;br&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 1475 : Union All Output 1 : 1470 : Sort 3 : 
1471 : Sort Input : 2085&lt;br&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;OnPipelineRowsSent,CGOJATHOMSON,INT\Jamie.Thomson,Data
 Flow 
Task,{EB25C41A-EFE2-4902-9610-99C0309A3B59},{33B4926F-54A9-4E00-9B74-92720A2786E0},08/03/2007
 20:49:56,08/03/2007 20:49:56,0,0x,Rows were provided to a data flow 
component as input. :&amp;nbsp; : 2121 : Sort Output : 2113 : Merge Join 2 : 2114
 : Merge Join Left Input : 9936 &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;The important stuff is what comes in the last field, the message so&amp;nbsp;let's break that down. Here is an example message:&lt;/p&gt;

&lt;p&gt;&lt;font color="#0000ff" face="Courier New"&gt;Rows
 were provided to a data flow component as input. :&amp;nbsp; : 1030 : OLE DB 
Source Output : 1025 : Sort 2 : 1026 : Sort Input : 9972&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;And here's what it is constituted of:&amp;nbsp;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rows
 were provided to a data flow component as input. - That's consistent in
 each message, so to be honest they could have left it out&lt;/li&gt;

&lt;li&gt;&lt;div&gt;1030&amp;nbsp;- ID of the data-path providing the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;OLE DB Source Output - Name of the&amp;nbsp;data-path providing the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;1025 - ID of the component receiving the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;Sort 2 - Name of the component receiving the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;1026 - ID of the input receiving the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;Sort Input - Name of the input receiving the buffer&lt;/div&gt;&lt;/li&gt;

&lt;li&gt;&lt;div&gt;9972&amp;nbsp;- Number of rows in the buffer&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As
 you can see, this information will enable you to determine exactly how 
many rows are output from each component. Thus, if you are not receiving
 the expected number of rows at a destination this event will help you 
to deduce where you are losing them from.&lt;/p&gt;

&lt;p&gt;You may not know this 
but&amp;nbsp;you actually encounter OnPipelineRowsSent every time you run a 
data-flow within the SSIS Designer in&amp;nbsp;BIDS. Notice how the designer 
shows the number of rows passing through the pipeline and through each 
component:&lt;/p&gt;
&lt;img src="http://i1177.photobucket.com/albums/x349/jamiekth/df.jpg" alt="Photobucket" border="0"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;How&amp;nbsp;does the designer know how many rows are passing through the 
data-flow? Simple! Its because the SSIS Designer consumes the 
OnPipelineRowsSent event that the executing package "throws" up and 
then&amp;nbsp;presents that information visually&amp;nbsp;as the numbers that you see 
flashing in front of your eyes as the data-flow executes.&lt;/p&gt;

&lt;p&gt;I think 
that just about covers the simple stuff around OnPipelineRowsSent. If 
you have any questions then post them here as a comment.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=37927" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/dataflow/default.aspx">dataflow</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/OnPipelineRowsSent/default.aspx">OnPipelineRowsSent</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/repost/default.aspx">repost</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>SSIS Logging in Denali</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/07/16/ssis-logging-in-denali.aspx</link><pubDate>Sat, 16 Jul 2011 15:16:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36994</guid><dc:creator>jamiet</dc:creator><slash:comments>10</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/36994.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=36994</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=36994</wfw:comment><description>&lt;p&gt;In my blog post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/13/ssis-server-catalogs-environments-environment-variables-in-ssis-in-denali.aspx" target="_blank"&gt;SSIS Server, Catalogs, Environments &amp;amp; Environment Variables in SSIS in Denali&lt;/a&gt; from November 2010 I alluded to forthcoming enhancements in the logging infrastructure when I said:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;One final note on logging. The fairly limited information that gets captured in the current CTP is not the same as what will be in the product upon release – there is a lot more to come.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I wasn’t kidding. Those logging enhancements have hit the street in CTP3 and in my opinion they are worth waiting for. SSIS logging has long been an interest of mine primarily because the logging support in SSIS has, up to now, been woeful and that’s what led me to author what has proved to be one of my more popular blog posts &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2005/06/11/SSIS_3A00_-Custom-Logging-Using-Event-Handlers.aspx" target="_blank"&gt;Custom Logging Using Event Handlers&lt;/a&gt; way back in June 2005. Most serious SSIS shops I come across these days have implemented their own custom logging solution and I’m happy to be able to tell them that with Denali they are no longer forced to do that. In this blog post I’ll walk you through all of the crucial objects in the SSIS Catalog related to logging and by the end of it you’ll hopefully have a good handle on the new capabilities. I assume at this point that you understand what is meant by the terms catalog, projects, parameters, executions, executables, environments, environment references, environment variables and shared connection managers in the context of SSIS; if not then I have plenty of past material that you can go and read to fill yourself in at &lt;a title="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/ssis/default.aspx" href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/ssis/default.aspx"&gt;http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/ssis/default.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;To demonstrate some of the new abilities I have put together a SSIS project that contains two packages, Master.dtsx &amp;amp; ExportDataForCountry.dtsx:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3EDE78FE.png"&gt;&lt;img width="295" height="168" title="SSIS Solution Explorer" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Solution Explorer" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_327055D5.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;Note also that we have a Shared Connection Manager.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The intention is to access the [AdventureWorks2008] database and find the 3 best countries with the highest number of sales for a given year. Then, for each of those 3 countries in the given year, extract the sales data and (a) sort and output to a file and (b) aggregate and insert into a table. Here are my project parameters (note the descriptions):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_194E5EC5.png"&gt;&lt;img width="756" height="132" title="SSIS Project Parameters pane" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Project Parameters pane" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5120A2E8.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Here is Master.dtsx:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2182845C.png"&gt;&lt;img width="797" height="526" title="SSIS Package Pane in Visual Studio 2010" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Package Pane in Visual Studio 2010" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3EA82C66.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;We use an Execute SQL Task to get the 3 top performing countries for the given year (in the “Year” project parameter) and call ExportDataForCountry.dtsx for each one of them. We also ensure that the folder (given in FolderPath project parameter) into which we are going to output the csv files exists.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note also how I was able to take this screenshot of the whole package. This was made easier thanks to the move to Visual Studio 2010 because each open package is a pane in its own right and can be dragged out of the Visual Studio shell , then onto a second screen if you so wish. A really nice new feature.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;ExportDataForCountry.dtsx consists of just one task – a dataflow:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1CDC53D5.png"&gt;&lt;img width="521" height="656" title="SSIS Package Pane in Visual Studio 2010" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Dataflow in Visual Studio 2010" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_140C4B89.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It also has a package parameter (again, note the description):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_454B101C.png"&gt;&lt;img width="760" height="111" title="SSIS Package Parameters in Visual Studio 2010" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Package Parameters in Visual Studio 2010" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_564F3DFF.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I am going to use the logging information created by executing Master.dtsx in the rest of the blog post to demonstrate the new logging capabilities in Denali. I have used verbose logging (the highest logging level) and environment variables; here is the resultant code to execute master.dtsx:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=Declare&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;Declare&lt;/a&gt; @execution_id &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=bigint&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;bigint&lt;/a&gt;
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;EXEC&lt;/a&gt; [SSISDB].[&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[create_execution] 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @package_name    =  N'&lt;span&gt;Master.dtsx&lt;/span&gt;', 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @execution_id    =  @execution_id &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=OUTPUT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;OUTPUT&lt;/a&gt;, 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @folder_name    =  N'&lt;span&gt;CTP3&lt;/span&gt;', 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @project_name    =  N'&lt;span&gt;20110712 Logging Demo&lt;/span&gt;', 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=use&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;use&lt;/a&gt;32bitruntime  =  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=False&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;False&lt;/a&gt;, 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @reference_id    =  3
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=Select&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;Select&lt;/a&gt; @execution_id
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DECLARE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DECLARE&lt;/a&gt; @var0 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=smallint&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;smallint&lt;/a&gt; = 3
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;EXEC&lt;/a&gt; [SSISDB].[&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[set_execution_parameter_value] 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @execution_id,  
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @object_type    =  50, 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @parameter_name    =  N'&lt;span&gt;LOGGING_LEVEL&lt;/span&gt;', 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @parameter_value  =  @var0
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DECLARE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DECLARE&lt;/a&gt; @var1 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=bit&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;bit&lt;/a&gt; = 0
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;EXEC&lt;/a&gt; [SSISDB].[&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[set_execution_parameter_value] 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @execution_id,  
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @object_type    =  50, 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @parameter_name    =  N'&lt;span&gt;DUMP_ON_ERROR&lt;/span&gt;', 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @parameter_value  =  @var1
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=EXEC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;EXEC&lt;/a&gt; [SSISDB].[&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[start_execution] 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;      @execution_id&lt;/pre&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;So then, let’s dive into what actually gets logged! if you want to follow along at home then you can download the project file (i.e. .ispac file) from &lt;a title="https://skydrive.live.com/#!/?cid=550f681dad532637&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=550F681DAD532637%2115204" href="https://skydrive.live.com/#!/?cid=550f681dad532637&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=550F681DAD532637%2115204"&gt;https://skydrive.live.com/#!/?cid=550f681dad532637&amp;amp;sc=documents&amp;amp;uc=1&amp;amp;id=550F681DAD532637%2115204&lt;/a&gt; (you will need to have an instance of [AdventureWorksDW2008] hanging around somewhere.)&lt;/p&gt;

&lt;p&gt;You might want to go and get yourself a drink before you continue – this one is a biggie!!&lt;/p&gt;

&lt;hr&gt;

&lt;h2&gt;[catalog].[executions]&lt;/h2&gt;

&lt;p&gt;You are going to become very very familiar indeed with &lt;font face="Consolas"&gt;[catalog].[executions]&lt;/font&gt;. It is a view that provides a record of all package executions on the server and, most importantly, it contains &lt;font face="Consolas"&gt;[execution_id]&lt;/font&gt; – the identifier for each execution and the field to which all other objects herein will be related. There are a number of other fields in here some of which are interesting and some which are not; I suspect that you are going to be most interested in:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;start_time &lt;/li&gt;

  &lt;li&gt;end_time &lt;/li&gt;

  &lt;li&gt;status &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;[start_time] &lt;/font&gt;&amp;amp; &lt;font face="Consolas"&gt;[end_time]&lt;/font&gt; are self-explanatory. &lt;font face="Consolas"&gt;[status]&lt;/font&gt; represents the current status of an execution and its possible values are: &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;created (1) &lt;/li&gt;

  &lt;li&gt;running (2) &lt;/li&gt;

  &lt;li&gt;canceled (3), &lt;/li&gt;

  &lt;li&gt;failed (4) &lt;/li&gt;

  &lt;li&gt;pending (5) &lt;/li&gt;

  &lt;li&gt;ended unexpectedly (6) &lt;/li&gt;

  &lt;li&gt;succeeded (7) &lt;/li&gt;

  &lt;li&gt;stopping (8) &lt;/li&gt;

  &lt;li&gt;completed (9) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Putting those together then we get:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt; execution_id,status,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=CASE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;CASE&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 1 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;created&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 2 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;running&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 3 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;canceled&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 4 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;failed&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 5 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;pending&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 6 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;ended unexpectedly&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 7 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;succeeded&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 8 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;stopping&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHEN&lt;/a&gt; [status] = 9 &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=THEN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;THEN&lt;/a&gt; '&lt;span&gt;completed&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=END&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;END&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AS&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AS&lt;/a&gt; [status_text]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;,DATEDIFF(ss,start_time,end_time)DurationInSeconds
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;.executions e&lt;/pre&gt;&lt;/pre&gt;
  &lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3BE0C60A.png"&gt;&lt;img width="405" height="76" title="catalog.executions sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.executions sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_27A75DE7.png" border="0"&gt;&lt;/a&gt; &lt;/blockquote&gt;

&lt;p&gt;We get some interesting operating system information in the way of total/available physical memory, total/available page file, number of available CPUs and the O/S process ID:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  execution_id,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    e.total_physical_memory_kb,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    e.available_physical_memory_kb,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    e.total_page_file_kb,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    e.available_page_file_kb,
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    e.process_id
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;.executions e
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  e.[execution_id] = 10
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;/pre&gt;&lt;/pre&gt;
  &lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7516A4D5.png"&gt;&lt;img width="772" height="74" title="catalog.executions available resources sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.executions available resources sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_13ED18B4.png" border="0"&gt;&lt;/a&gt; &lt;/blockquote&gt;

&lt;p&gt;Finally, we also get information about the environment that was used by the execution (if at all) such as the environment name and information pertaining to whether it was an absolute or relative reference (don’t worry too much about the different between an absolute or relative reference for now – its not all that important):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  e.[environment_name],e.reference_id,e.reference_type
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;.executions e
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  e.[execution_id] = 10&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_728D7317.png"&gt;&lt;img width="392" height="70" title="catalog.executions environment information sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.executions environment information sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6A95D0B5.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are other columns in &lt;font face="Consolas"&gt;[catalog].[executions]&lt;/font&gt; but they’re either self-explanatory or not worth talking about here.&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[executions] is logged to when LOGGING_LEVEL is set to Verbose, Performance, Basic or None.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[execution_parameter_values]&lt;/h2&gt;

&lt;p&gt;This view is self-explanatory – it tells us what parameter values were supplied to the package when it executed however there is probably more information in here than you may first imagine there to be. If you look at the code at the top of this blog post that executed our package you will notice that there are two calls to stored procedure &lt;font face="Consolas"&gt;[catalog].[set_execution_parameter_value]&lt;/font&gt; (for LOGGING_LEVEL and DUMP_ON_ERROR) thus you may assume that there would be two rows in &lt;font face="Consolas"&gt;[catalog].[execution_parameter_values]&lt;/font&gt;. Not so, let’s take a look:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  epv.[parameter_name],epv.[parameter_value],epv.[value_set],epv.[runtime_override]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[execution_parameter_values] epv
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  [execution_id] = 10&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2A0C807E.png"&gt;&lt;img width="787" height="294" title="catalog.execution_parameter_values  sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_parameter_values  sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_41C3B7E4.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Fourteen rows, let’s break them down:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;We know that FolderPath &amp;amp; Year are our project parameters yet we didn’t define a value for them when we executed. The reason for their appearance in &lt;font face="Consolas"&gt;[catalog].[execution_parameter_values]&lt;/font&gt; is due to the fact that (as we saw in &lt;font face="Consolas"&gt;[catalog].[executions]&lt;/font&gt;) this execution was executed against an environment called “2003 localhost” The project was pre-configured to get a value for “Year” from the referenced environment (hence [value_set]=1) whereas “FolderPath” was pre-configured to use the server default and hence why we had no need to supply values for them using &lt;font face="Consolas"&gt;[catalog].[set_execution_parameter_value] ([value_set]=0)&lt;/font&gt;. &lt;/li&gt;

    &lt;li&gt;DUMP_ON_ERROR &amp;amp; LOGGING_LEVEL are system parameters that we supplied values for using &lt;font face="Consolas"&gt;[catalog].[set_execution_parameter_value]&lt;/font&gt; (hence [runtime_override]=1) &lt;/li&gt;

    &lt;li&gt;CALLER_INFO, DUMP_EVENT_CODE, DUMP_ON_EVENT &amp;amp; SYNCHRONIZED are further system parameters that we could have supplied values for. &lt;/li&gt;

    &lt;li&gt;The six parameters whose name begin with “CM.AdventureWorksDW2008.” are actually properties of the project’s Shared Connection Manager and by default they get logged in &lt;font face="Consolas"&gt;[catalog].[execution_parameter_values]&lt;/font&gt;. Notice that CM.AdventureWorksDW2008.ServerName has [value_set]=1, that is because our environment reference specified a value for that property too. &lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[execution_parameter_values] is logged to when LOGGING_LEVEL is set to Verbose, Performance, Basic or None.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[executables]&lt;/h2&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;[catalog].[executables]&lt;/font&gt; contains a record for every single executable that gets executed in an execution. What’s an executable? It is every task, container or package in both the package that you execute and any child packages that also get executed using the Execute Package Task. Here’s what we get:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  executable_id,executable_name,package_name,package_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].executables&lt;/pre&gt;&lt;/pre&gt;
  &lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_33CD524E.png"&gt;&lt;img width="886" height="165" title="catalog.executables sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.executables sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_120179BD.png" border="0"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;We can see that all our tasks and our For Each Loop (“FEL Loop over top performing regions”) appear in here along with the containing package. Interestingly we also get package_path which provides the name of the task in the context of its location in the package.&lt;/p&gt;

&lt;p&gt;It is worth noting that we only get a record in &lt;font face="Consolas"&gt;[catalog].[executables]&lt;/font&gt; if an executable actually gets executed. If that doesn’t happen (because of an earlier error or conditional control-flow) then there won’t be a record in here.&lt;/p&gt;

&lt;p&gt;Also note that executables “ExportDataForCountry” and “DFT Export Sales for named country” have an &lt;font face="Consolas"&gt;[executable_id]&lt;/font&gt; that is unique across the whole execution, not just across &lt;font face="Consolas"&gt;[package_name]&lt;/font&gt;. In other words SSIS doesn’t care which physical .dtsx file an executable is in, it treats them all as executables in a single execution; I happen to think that is a massive step forward in Denali and you’ll see even more benefits of that in later views.&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[executables] is logged to when LOGGING_LEVEL is set to Verbose, Performance, Basic or None.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[executable_statistics]&lt;/h2&gt;

&lt;p&gt;This is where the new logging infrastructure in Denali really starts to show benefit. For every executable in &lt;font face="Consolas"&gt;[catalog].[executables]&lt;/font&gt; we get information about it being executed such as whether it succeeded or not and how long it took. You might ask “Why not just put that information in &lt;font face="Consolas"&gt;[catalog].[executables]&lt;/font&gt;?” and actually the answer is simple when you think about it; an executable can, if it exists inside a For Loop or For Each Loop container, be executed more than once during a single execution. SSIS will capture information about each instance of an execution being executed and moreover will differentiate between each one of them. let’s take a look:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  executable_id,execution_path,execution_duration,execution_result
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[executable_statistics]&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_306BBAA6.png"&gt;&lt;img width="1009" height="264" title="catalog.executable_statistics sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.executable_statistics sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_55890512.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;We don’t just get the name of the executable, we get its position in the container hierarchy (aka call stack). Best of all that call stack &lt;strong&gt;extends across different packages&lt;/strong&gt; (remember that “Master” and “ExportDataForCountry” are the names of our two packages). We can also differentiate between different instances of an executable via the [1], [2], [3], ... suffix on our For Loop and For Each Loop iterations. &lt;/p&gt;

  &lt;p&gt;Think back to the &lt;a href="http://msdn.microsoft.com/en-us/library/ms186984.aspx" target="_blank"&gt;&lt;font face="Consolas"&gt;[msdb]..[sysssislog]&lt;/font&gt;&lt;/a&gt; table prior to Denali which is just a long flat list of intermingled records and how difficult it is to find the information in there that you are after and I think you will realise the benefit of having &lt;font face="Consolas"&gt;[execution_path]&lt;/font&gt;. This contextual information is something &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/09/10/newly-closed-connect-items-auger-well-for-ssis-in-denali.aspx" target="_blank"&gt;I have been asking for&lt;/a&gt; for a long time and I am delighted that it is now available. In fact, I’ll go on record as saying that I think &lt;font face="Consolas"&gt;[execution_path]&lt;/font&gt; is the best new feature in SSIS in Denali, I really do. Note that &lt;font face="Consolas"&gt;[execution_path]&lt;/font&gt; is different to &lt;font face="Consolas"&gt;[catalog].[executables].[package_path]&lt;/font&gt; that we saw earlier because &lt;font face="Consolas"&gt;[package_path]&lt;/font&gt; only tells us the location of an executable in a package; it does not provide information in the context of an execution therefore it doesn’t extend across packages either like &lt;font face="Consolas"&gt;[execution_path]&lt;/font&gt; does.&lt;/p&gt;

  &lt;p&gt;We get an execution duration for every single executable (we also get start time and end time which I haven’t shown on this screenshot). Lastly we also get &lt;font face="Consolas"&gt;[execution_result]&lt;/font&gt; which tells us whether an executable succeeded or not – the value in &lt;font face="Consolas"&gt;[execution_result]&lt;/font&gt; comes from the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.dtsexecresult.aspx" target="_blank"&gt;DTSExecResult&lt;/a&gt; enumeration.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There is a lot of information wrapped up in just these three columns and I make heavy use of it in &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/12/09/introducing-ssis-reporting-pack-for-sql-server-code-named-denali.aspx" target="_blank"&gt;SSIS Reporting Pack&lt;/a&gt;, a suite of reports that I am putting together which provide value on top of the logged information. Here is a screenshot of a new report that leans heavily on &lt;font face="Consolas"&gt;[catalog].[executable_statistics]&lt;/font&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_61AA7F39.png"&gt;&lt;img width="1186" height="379" title="SSIS Reporting Pack Execution Report sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Reporting Pack Execution Report sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0014C023.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;More to come on SSIS Reporting Pack in a later blog post.&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[executable_statistics] is logged to when LOGGING_LEVEL is set to Verbose, Performance, Basic or None.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[event_messages]&lt;/h2&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt; is the real meat of the new logging infrastructure and is where I suspect folks investigating SSIS issues will spend most of their time. It performs a very similar role to &lt;a href="http://msdn.microsoft.com/en-us/library/ms186984.aspx" target="_blank"&gt;&lt;font face="Consolas"&gt;[msdb]..[sysssislog]&lt;/font&gt;&lt;/a&gt; however the information herein is much more enhanced as we shall see. It is also the table for which your choice of LOGGING_LEVEL can have the biggest affect.&lt;/p&gt;

&lt;p&gt;The first point to make about &lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt; is that it does not contain &lt;font face="Consolas"&gt;[execution_id]&lt;/font&gt;, instead it has &lt;font face="Consolas"&gt;[operation_id]&lt;/font&gt; which actually &lt;em&gt;is&lt;/em&gt; an &lt;font face="Consolas"&gt;[execution_id]&lt;/font&gt;. The reason for the different name is that various different types of operations can occur on the SSIS Server, only one of which is package execution. Each operation will log into &lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt; and hence we have &lt;font face="Consolas"&gt;[operation_id]&lt;/font&gt; instead of &lt;font face="Consolas"&gt;[execution_id]&lt;/font&gt;. In this blog post the only operation type that I am covering is package execution.&lt;/p&gt;

&lt;p&gt;The data in &lt;font face="Consolas"&gt;[msdb]..[sysssislog]&lt;/font&gt; was based around the notion of events, all tasks were capable of raising those events and we had the choice of capturing those events and logging them; from that perspective things are no different in Denali. We get all of the columns that we used to get in &lt;font face="Consolas"&gt;[msdb]..[sysssislog]&lt;/font&gt;, the important ones being:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;time of message &lt;/li&gt;

  &lt;li&gt;message &lt;/li&gt;

  &lt;li&gt;message source &lt;/li&gt;

  &lt;li&gt;event name &lt;/li&gt;

  &lt;li&gt;package name &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=cast&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;cast&lt;/a&gt;(message_time &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=as&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;as&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=datetime&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;datetime&lt;/a&gt;)message_time,message,package_name,event_name,message_source_name
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_messages]&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_60059EDD.png"&gt;&lt;img width="1073" height="396" title="catalog.event_messages sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_messages sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_67CD917F.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In addition we also get the aforementioned [package_path] and [execution_path] which, as I already have said, are great additions:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  [message_source_name],[package_path],[execution_path]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_messages]&lt;/pre&gt;&lt;/pre&gt;
  &lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_39FFC8BA.png"&gt;&lt;img width="1020" height="76" title="catalog.event_messages execution_path sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_messages execution_path sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_319BF363.png" border="0"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;Another new field is &lt;font face="Consolas"&gt;[subcomponent_name] &lt;/font&gt;which, as far as I can discern, contains the name of a dataflow component or the internal pipeline that is throwing the event. This is really useful information, previously we only got the name of the dataflow.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  subcomponent_name,message
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_messages]&lt;/pre&gt;&lt;/pre&gt;
  &lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_29381E0C.png"&gt;&lt;img width="1206" height="244" title="catalog.event_messages subcomponent_name sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_messages subcomponent_name sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_675138BD.png" border="0"&gt;&lt;/a&gt; 

  &lt;p&gt;Notice some of the information that we get here regarding rows cached and bytes of memory used, this is all really useful information to have access to.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Two other new columns are [message_type] and [message_source_type] which allow you to further drill down on the information that you are after. They appear in the view as numeric values and whilst there is no documentation publicly available yet on what these values mean I can fill you in on them right here:&lt;/p&gt;

&lt;p&gt;First [message_type]&lt;/p&gt;

&lt;table cellspacing="5" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;message_type&lt;/strong&gt; &lt;/td&gt;

      &lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt; &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;10 &lt;/td&gt;

      &lt;td&gt;OnPreValidate &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;20 &lt;/td&gt;

      &lt;td&gt;OnPostValidate &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;30 &lt;/td&gt;

      &lt;td&gt;OnPreExecute &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;40 &lt;/td&gt;

      &lt;td&gt;OnPostExecute &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;60 &lt;/td&gt;

      &lt;td&gt;OnProgress &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;70 &lt;/td&gt;

      &lt;td&gt;OnInformation &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;90 &lt;/td&gt;

      &lt;td&gt;Diagnostic &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;110 &lt;/td&gt;

      &lt;td&gt;OnWarning &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;140 &lt;/td&gt;

      &lt;td&gt;DiagnosticEx &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;200 &lt;/td&gt;

      &lt;td&gt;Custom events &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;400 &lt;/td&gt;

      &lt;td&gt;OnPipeline* &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;and [message_source_type]&lt;/p&gt;

&lt;table cellspacing="5" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;message_source_type&lt;/strong&gt; &lt;/td&gt;

      &lt;td&gt;&lt;strong&gt;Description&lt;/strong&gt; &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;10 &lt;/td&gt;

      &lt;td&gt;Messages logged by the entry APIs (e.g. T-SQL, CLR Stored procedures) &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;20 &lt;/td&gt;

      &lt;td&gt;Messages logged by the external process used to run package (ISServerExec) &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;30 &lt;/td&gt;

      &lt;td&gt;Messages logged by the package-level objects &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;40 &lt;/td&gt;

      &lt;td&gt;Messages logged by tasks in the control flow &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;50 &lt;/td&gt;

      &lt;td&gt;Messages logged by containers (For, ForEach, Sequence) in the control flow &lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td&gt;60 &lt;/td&gt;

      &lt;td&gt;Messages logged by the Data Flow Task &lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;As I alluded to above your choice of LOGGING_LEVEL greatly influences the amount of information that gets logged. I ran this package against each of the four logging levels and here are the number of rows in &lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt;:&lt;/p&gt;

&lt;table cellspacing="5" cellpadding="2"&gt;
    &lt;tr&gt;
      &lt;td align="center"&gt;&lt;strong&gt;LOGGING_LEVEL&lt;/strong&gt;&lt;/td&gt;

      &lt;td align="center"&gt;&lt;strong&gt;Rows&lt;/strong&gt;&lt;/td&gt;

      &lt;td align="center"&gt;&lt;strong&gt;Time to Execute (seconds)&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td align="center"&gt;None&lt;/td&gt;

      &lt;td align="center"&gt;0&lt;/td&gt;

      &lt;td align="center"&gt;4&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td align="center"&gt;Basic&lt;/td&gt;

      &lt;td align="center"&gt;128&lt;/td&gt;

      &lt;td align="center"&gt;3&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td align="center"&gt;Performance&lt;/td&gt;

      &lt;td align="center"&gt;1&lt;/td&gt;

      &lt;td align="center"&gt;10&lt;/td&gt;
    &lt;/tr&gt;

    &lt;tr&gt;
      &lt;td align="center"&gt;Verbose&lt;/td&gt;

      &lt;td align="center"&gt;2726&lt;/td&gt;

      &lt;td align="center"&gt;12&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/table&gt;

&lt;p&gt;Given that this execution only contains 5 task executions and one For Each Loop, 2726 records for LOGGING_LEVEL=Verbose strikes me as being extravagant and indeed this is reflected in the much higher execution time. These numbers are not representative of your environment and of course you should do your own testing accordingly but it does seem as though LOGGING_LEVEL=Verbose can have a detrimental affect on execution duration. If you take a look at the messages that get logged from Verbose logging it is clear that this is intended to be used for diagnostic purposes; messages such as the following aren’t the sort that you want to be wading through on a regular basis:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_653439F4.png"&gt;&lt;img width="1002" height="503" title="catalog.event_messages diagnostics sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_messages diagnostics sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4FF60E7F.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Interestingly [message_source_name] for all these messages is ‘AdventureWorksDW2008’ which is the name of our Connection Manager so it seems as though LOGGING_LEVEL=Verbose may be a shorthand way of telling SSIS to log all information pertaining to resources external to the package.&lt;/p&gt;

&lt;p&gt;I have noticed some interesting new messages when LOGGING_LEVEL=Verbose too that I don’t remember ever seeing before:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_45E16D54.png"&gt;&lt;img width="1317" height="185" title="catalog.event_messages samples" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_messages samples" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4430A180.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Lots of useful information in there, I particularly like that we get a message for each executable telling us its execution duration. Yes, this information is in &lt;font face="Consolas"&gt;[catalog].[executable_statistics]&lt;/font&gt; as we have already discussed but its useful to have that information in our main log table too.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As you can see &lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt; is the workhorse of the new logging infrastructure so its worth spending time getting to know it. Similar to &lt;font face="Consolas"&gt;[catalog].[executable_statistics]&lt;/font&gt; I make heavy use of this table in &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/12/09/introducing-ssis-reporting-pack-for-sql-server-code-named-denali.aspx" target="_blank"&gt;SSIS Reporting Pack&lt;/a&gt; and the existence of &lt;font face="Consolas"&gt;[execution_path]&lt;/font&gt; makes it easy to browse to the messages that you want to see:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_50521BA7.png"&gt;&lt;img width="1143" height="512" title="SSIS Reporting Pack Execution Report sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Reporting Pack Execution Report sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_0DFF0364.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can highlight errors and warnings much more clearly too:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0CD1781C.png"&gt;&lt;img width="1146" height="561" title="SSIS Reporting Pack Execution Report sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS Reporting Pack Execution Report sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_1F39C8D1.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[executable_statistics] is logged to when LOGGING_LEVEL is set to Verbose, Performance or Basic. For LOGGING_LEVEL=Performance only OnError and OnWarning events get logged. For LOGGING_LEVEL=Basic OnError, OnInformation, OnPreExecute, OnPostExecute, OnPreValidate, OnPostValidate and OnWarning events are logged however as I demonstrated above less OnInformation events are logged than for LOGGING_LEVEL=Verbose.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[event_message_context]&lt;/h2&gt;

&lt;p&gt;Have you ever wanted to know what the properties of an executing package were after the event? That is exactly what &lt;font face="Consolas"&gt;[catalog].[event_message_context]&lt;/font&gt; is provided for. For a very small subset of the messages in &lt;font face="Consolas"&gt;[catalog].[event_messages]&lt;/font&gt; it logs properties of the package and its connection managers at the point-in-time that the message is logged. The properties are logged as name:value pairs. This is all better illustrated with a screenshot:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  em.[message],emc.[package_path],emc.[property_name],emc.[property_value]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_message_context] emc
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=inner&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;inner&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=join&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;join&lt;/a&gt; [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_messages] em &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=on&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;on&lt;/a&gt; emc.[event_message_id] = em.[event_message_id]&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_388908F4.png"&gt;&lt;img width="1092" height="417" title="catalog.event_message_context sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.event_message_context sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6A7083B1.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;[catalog].[event_message_context]&lt;/font&gt; is logged to at the start of a package execution at which point it tells you all the properties of the package. This is useful (I guess) but more useful than that is the logging of properties when an OnError event occurs; more accurately, &lt;font face="Consolas"&gt;[catalog].[event_message_context]&lt;/font&gt; will record all the properties of a failed task. To demonstrate I shutdown the server hosting the [AdventureWorks2008DW] database prior to executing our package and here is a subset of what gets logged in &lt;font face="Consolas"&gt;[catalog].[event_message_context]&lt;/font&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  emc.[context_source_name],emc.[property_name],emc.[property_value]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_message_context] emc 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=INNER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;INNER&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=JOIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;JOIN&lt;/a&gt; [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[event_messages] em 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=on&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;on&lt;/a&gt; emc.event_message_id = em.event_message_id 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  em.operation_id = 19 
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AND&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AND&lt;/a&gt;    em.event_name = '&lt;span&gt;OnError&lt;/span&gt;'
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=AND&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;AND&lt;/a&gt;    [property_name] &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=IN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;IN&lt;/a&gt; ('&lt;span&gt;Connection&lt;/span&gt;','&lt;span&gt;StartTime&lt;/span&gt;','&lt;span&gt;StopTime&lt;/span&gt;','&lt;span&gt;SqlStatementSource&lt;/span&gt;')&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_26E474E2.png"&gt;&lt;img width="1142" height="137" title="image" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="image" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6C1CCC0B.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;As you can see we get the actual SQL statement that was being executed which is invaluable information if the SQL statement is being built dynamically using an expression or a Script Task. Prior to Denali we simply did not have access to this sort of information and is a great example of how logging has been massively enhanced. Moreover we also get StartTime and StopTime so it is easy to see, at a glance, how long it took the task to fail. I find it interesting to note that StartTime and StopTime are execution-time-only properties, but they still get logged. I wonder what other execution-time-only properties exist? If you find any do let me know!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;One final thing to note is that when an error occurs &lt;font face="Consolas"&gt;[catalog].[event_message_context]&lt;/font&gt; will contain information about every object in the call stack so if, for example, an Execute SQL Task that is inside a For Each loop fails you will get information about the For Each loop too. Very cool!&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[event_message_context] is logged to when LOGGING_LEVEL is set to Verbose, Performance and Basic.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[execution_component_phases]&lt;/h2&gt;

&lt;p&gt;If you have ever wanted to know which parts of a dataflow are running slowly then &lt;font face="Consolas"&gt;[catalog].[execution_component_phases]&lt;/font&gt; is for you. It records how long each data flow component spends in each phase of execution, those phases are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Validate &lt;/li&gt;

  &lt;li&gt;PrepareForExecute &lt;/li&gt;

  &lt;li&gt;PreExecute &lt;/li&gt;

  &lt;li&gt;ProcessInput &lt;/li&gt;

  &lt;li&gt;PrimeOutput &lt;/li&gt;

  &lt;li&gt;PostExecute &lt;/li&gt;

  &lt;li&gt;Cleanup &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most obvious use of this view is simply to discover where the bottlenecks are in your dataflows by discovering which components take the longest time to complete. Before we look at the information in &lt;font face="Consolas"&gt;[catalog].[execution_component_phases]&lt;/font&gt; let’s remind ourselves of the dataflow that we’re going to examine here:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_140C4B89.png"&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There are nine components, let’s look at how long each of them is “alive” for during the execution of this dataflow:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q2.[subcomponent_name],q2.[phase_time_milliseconds]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q.[subcomponent_name],DATEDIFF(ms,q.[min_start_time],q.[max_end_time])[phase_time_milliseconds]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  [subcomponent_name],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MIN&lt;/a&gt;([start_time])[min_start_time],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MAX&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MAX&lt;/a&gt;([end_time])[max_end_time]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].execution_component_phases
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=where&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;where&lt;/a&gt;  [execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=group&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;group&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=by&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;by&lt;/a&gt; [subcomponent_name]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        )q
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    )q2
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; q2.[phase_time_milliseconds] &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3221E6CC.png"&gt;&lt;img width="512" height="281" title="catalog.execution-component_phases subcomponent_name summary sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution-component_phases subcomponent_name summary sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_10C24130.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Here we see that LKP Get Customer details has spent the most time executing. To be honest though this query does not give us the best indication of where the bottlenecks are because it includes all phases; the Validate phase will begin at roughly the same time for all components whereas the Cleanup phase for each will end at roughly the same time as well. A better indicator would be to look at the ProcessInput and PrimeOutput phases because this is generally where most of the work is done:&lt;/p&gt;

  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q2.[subcomponent_name],q2.[phase_time_milliseconds]&lt;span&gt;--,q2.[min_start_time],q2.[max_end_time]&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q.[subcomponent_name],q.[min_start_time],q.[max_end_time],DATEDIFF(ms,q.[min_start_time],q.[max_end_time])[phase_time_milliseconds]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  [subcomponent_name],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MIN&lt;/a&gt;([start_time])[min_start_time],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MAX&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MAX&lt;/a&gt;([end_time])[max_end_time]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].execution_component_phases
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=where&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;where&lt;/a&gt;  [execution_id] = @verbose
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    [execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    phase &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=in&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;in&lt;/a&gt; ('&lt;span&gt;ProcessInput&lt;/span&gt;','&lt;span&gt;PrimeOutput&lt;/span&gt;')
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=group&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;group&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=by&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;by&lt;/a&gt; [subcomponent_name]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        )q
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    )q2
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; q2.[phase_time_milliseconds] &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_188A33D2.png"&gt;&lt;img width="503" height="266" title="catalog.execution_component_phases subcomponent_name work summary sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_component_phases subcomponent_name work summary sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_10265E7B.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;Here we get a much better indicator of where time is spent and where the bottlenecks are in our dataflow. Unsurprisingly the destination component that inserts data into the database takes the longest time to complete its work however look at the next three, the Sort component, the Aggregate component and the OLE DB Source component; these three components are all asynchronous so the information that we are seeing here supports the common held belief that asynchronous components are generally slower.&lt;/p&gt;

  &lt;p&gt;Also notice that Multicast is the shortest to execute. Again not surprising given that Multicast components don’t actually do any work.&lt;/p&gt;

  &lt;p&gt;We have two derived column components (“DER Concat Full Name” &amp;amp; “DER Calculate TotalPrice”) yet one of them takes a lot less time than the other. Again this makes sense if we look at our dataflow; “DER Concat Full Name” occurs after the Aggregate component thus it will almost certainly be operating on less rows. Less rows means less work to do means less time to execute.&lt;/p&gt;

  &lt;p&gt;As an aside, &lt;font face="Consolas"&gt;[catalog].[execution_component_phases] &lt;/font&gt;makes it easy to determine exactly which components are asynchronous because they are the ones that have a PrimeOutput phase:&lt;/p&gt;

  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q2.[subcomponent_name],q2.[phase_time_milliseconds]&lt;span&gt;--,q2.[min_start_time],q2.[max_end_time]&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q.[subcomponent_name],q.[min_start_time],q.[max_end_time],DATEDIFF(ms,q.[min_start_time],q.[max_end_time])[phase_time_milliseconds]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  [subcomponent_name],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MIN&lt;/a&gt;([start_time])[min_start_time],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MAX&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MAX&lt;/a&gt;([end_time])[max_end_time]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].execution_component_phases
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=where&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;where&lt;/a&gt;  [execution_id] = @verbose
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    [execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    phase &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=in&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;in&lt;/a&gt; ('&lt;span&gt;PrimeOutput&lt;/span&gt;')
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=group&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;group&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=by&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;by&lt;/a&gt; [subcomponent_name]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        )q
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    )q2
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; q2.[phase_time_milliseconds] &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_735CC398.png"&gt;&lt;img width="504" height="146" title="catalog.execution_component_phases primeoutput asynchronous sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_component_phases primeoutput asynchronous sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_591C5A74.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p align="left"&gt;OK, so we have seen that the asynchronous components and the destination component that inserts into a database generally take the longest in the “work” phases however there are other insights to be had here. If we take a look at the PreExecute phase:&lt;/p&gt;

  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q2.[subcomponent_name],q2.[phase_time_milliseconds]&lt;span&gt;--,q2.[min_start_time],q2.[max_end_time]&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  q.[subcomponent_name],q.[min_start_time],q.[max_end_time],DATEDIFF(ms,q.[min_start_time],q.[max_end_time])[phase_time_milliseconds]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  (
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  [subcomponent_name],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MIN&lt;/a&gt;([start_time])[min_start_time],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MAX&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MAX&lt;/a&gt;([end_time])[max_end_time]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].execution_component_phases
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=where&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;where&lt;/a&gt;  [execution_id] = @verbose
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    [execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=and&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;and&lt;/a&gt;    phase &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=in&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;in&lt;/a&gt; ('&lt;span&gt;PreExecute&lt;/span&gt;')
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=group&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;group&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=by&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;by&lt;/a&gt; [subcomponent_name]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;        )q
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;    )q2
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt; &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; q2.[phase_time_milliseconds] &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=DESC&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;DESC&lt;/a&gt;&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_653DD49B.png"&gt;&lt;img width="484" height="242" title="catalog.execution_component_phases subcomponent_name preexecute summary sample" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_component_phases subcomponent_name preexecute summary sample" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3CBEF287.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;we notice that our lookup component (“LKP Get customer details”) appears much higher in the list than it did previously. This is not surprising given that this is a fully cached lookup component and the PreExecute phase is when that cache gets populated.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Clearly there are many many insights to be gleaned from &lt;font face="Consolas"&gt;[catalog].[execution_component_phases]&lt;/font&gt; and it should prove to be an invaluable tool when performance tuning dataflows.&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[execution_component_phases] is logged to when LOGGING_LEVEL is set to Verbose and Performance.&lt;/font&gt;&lt;/p&gt;

&lt;h2&gt;[catalog].[execution_data_statistics]&lt;/h2&gt;

&lt;p&gt;Where &lt;font face="Consolas"&gt;[catalog].[execution_component_phases]&lt;/font&gt; tells us how long each component executed for, &lt;font face="Consolas"&gt;[catalog].[execution_data_statistics]&lt;/font&gt; tells us how much data they processed. I’m sure that if you have ever executed packages in BIDS and made use of the real-time rowcounts that appear in the GUI:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0ABC6291.png"&gt;&lt;img width="479" height="586" title="SSIS dataflow denali rowcounts" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="SSIS dataflow denali rowcounts" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_16DDDCB8.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;then at some point you will have wished that you had the same outside of BIDS too; well, that is exactly what &lt;font face="Consolas"&gt;[catalog].[execution_data_statistics]&lt;/font&gt; provides. Every time a dataflow component passes a buffer on to the next component then you will get a record in &lt;font face="Consolas"&gt;[catalog].[execution_data_statistics]&lt;/font&gt;. Specifically you will get the following information:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;execution_path of the containing dataflow (we’ve covered this quite a bit already) &lt;/li&gt;

  &lt;li&gt;dataflow path id (a meaningful unique identifier for each data path in the dataflow) &lt;/li&gt;

  &lt;li&gt;source component (the component passing the buffer on) &lt;/li&gt;

  &lt;li&gt;destination component (the component receiving the buffer) &lt;/li&gt;

  &lt;li&gt;time that the buffer was passed on &lt;/li&gt;

  &lt;li&gt;number of rows in the buffer &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s what that looks like for our dataflow:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  eds.[dataflow_path_id_string],eds.[rows_sent],eds.[created_time]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[execution_data_statistics] eds
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  eds.[execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=ORDER&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;ORDER&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; [dataflow_path_id_string]&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1EA5CF5A.png"&gt;&lt;img width="604" height="356" title="catalog.execution_data_statistics raw data" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_data_statistics raw data" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_35F0D3CB.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Of course once you have the raw data then you can party on it as much as you want. Remember that &lt;font face="Consolas"&gt;[catalog].[execution_data_statistics]&lt;/font&gt; has a record for each &lt;em&gt;buffer&lt;/em&gt;, not for each datapath and hence to get a total per datapath you’re going to need to SUM:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre style="padding:5px;width:650px;overflow:auto;min-height:40px;"&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SELECT&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SELECT&lt;/a&gt;  eds.[dataflow_path_id_string],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=SUM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;SUM&lt;/a&gt;(eds.[rows_sent])[total_rows_sent],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MIN&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MIN&lt;/a&gt;(eds.[created_time])[first_buffer_sent],&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=MAX&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;MAX&lt;/a&gt;(eds.[created_time])[last_buffer_sent]
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=FROM&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;FROM&lt;/a&gt;  [&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=catalog&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;catalog&lt;/a&gt;].[execution_data_statistics] eds
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=WHERE&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;WHERE&lt;/a&gt;  eds.[execution_path] = @execution_path
&lt;/pre&gt;&lt;pre style="width:100%;font-size:12px;"&gt;&lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=GROUP&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;GROUP&lt;/a&gt;  &lt;a href="http://search.microsoft.com/default.asp?so=RECCNT&amp;amp;siteid=us%2Fdev&amp;amp;p=1&amp;amp;nq=NEW&amp;amp;qu=BY&amp;amp;IntlSearch=&amp;amp;boolean=PHRASE&amp;amp;ig=01&amp;amp;i=09&amp;amp;i=99"&gt;BY&lt;/a&gt; [dataflow_path_id_string]&lt;/pre&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_4DC79524.png"&gt;&lt;img width="836" height="185" title="catalog.execution_data_statistics rows summary" style="border-width:0px;padding-top:0px;padding-right:0px;padding-left:0px;display:inline;background-image:none;" alt="catalog.execution_data_statistics rows summary" src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_426E5B1A.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;font face="Consolas"&gt;[catalog].[execution_data_statistics],&lt;/font&gt; along with &lt;font face="Consolas"&gt;[catalog].[execution_component_phases],&lt;/font&gt; seems set to be an integral part of your dataflow performance tuning armoury.&lt;/p&gt;

&lt;p&gt;&lt;font color="#c0504d"&gt;[catalog].[execution_data_statistics] is logged to when LOGGING_LEVEL is set to Verbose.&lt;/font&gt;&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;That concludes this run through of the new logging capabilities in SQL Server Denali CTP3. I personally am very happy indeed with these enhancements and am looking forward to building new solutions on this infrastructure as soon as possible. How about you? Are these new capabilities what you have been waiting for or are they superfluous to your needs? Let me know in the comments.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=36994" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SSIS+Catalog/default.aspx">SSIS Catalog</category></item><item><title>SSIS enhancements in Denali CTP3</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/07/12/ssis-enhancements-in-denali-ctp3.aspx</link><pubDate>Tue, 12 Jul 2011 20:32:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36840</guid><dc:creator>jamiet</dc:creator><slash:comments>13</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/36840.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=36840</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=36840</wfw:comment><description>&lt;p&gt;The third Community Technology Preview (CTP3) of SQL Server code-named Denali is upon us and, although you would never guess from the &lt;a href="http://blogs.technet.com/b/dataplatforminsider/archive/2011/07/11/sql-server-code-name-denali-ctp3-is-here.aspx" target="_blank"&gt;official announcement&lt;/a&gt;, there is a whole raft of enhancements to SQL Server Integration Services (SSIS) and in this blog post I will take you on a tour of some of them. I must stress that nothing here is finalised and anything is liable to be changed prior to the full release of Denali. Wanna know what’s new? Read on…&lt;/p&gt;  &lt;h2&gt;Parameterize a Task&lt;/h2&gt;  &lt;p&gt;If you have experienced CTP1 then you will know that one of the big new features in Denali is Parameters (if you know nothing of Parameters then you may want to take a read of my earlier post &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/11/parameters-in-ssis-in-denali.aspx" target="_blank"&gt;Parameters in SSIS in Denali&lt;/a&gt; from November 2010). In CTP3 there is a new designer enhancement that makes it a lot easier to work with parameters – right-clicking on a task shows a “Parameterize…” option:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2A7C8D0D.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_7DF35D26.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="191" border="0" height="359"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Clicking that launches the Parameterize dialog:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_237CDA88.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5B4F1EAB.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="354" border="0" height="412"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the screenshot above I am parameterizing the WorkingDirectory property of an Execute Process Task. From this dialog we have the option to:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create a new parameter &lt;/li&gt;    &lt;li&gt;Use an existing parameter &lt;/li&gt;    &lt;li&gt;Initialise a newly created parameter with some value &lt;/li&gt;    &lt;li&gt;Define a newly created parameter as package or project scoped &lt;/li&gt;    &lt;li&gt;Define a newly created parameter as required or not &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Once the parameter has been specified an expression will be placed onto the selected property setting it to the value of the parameter:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_32D03C97.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_117096FB.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="803" border="0" height="360"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Package Parameters Tab&lt;/h2&gt;  &lt;p&gt;Package-scoped Parameters now have their own tab within the designer whereas in CTP1 they were shoehorned into the Variables pane:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_76C3FAE1.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5CEFC4B2.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="505" border="0" height="48"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Shared Connection Managers&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_14C208D6.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3AB7B92C.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="360" border="0" height="244"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is one of the big-ticket features in CTP3. Connection Managers are no longer confined to a package, they can live as part of the project and be used by multiple packages. They will appear alongside package-scoped Connection Managers in the familiar Connection Manager tray in *all* packages within that project. Currently the visual differentiation between a package-scoped and a project-scoped Connection Manager is that the project-scoped Connection Manager appears in bold text:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6B6AC0D7.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_43C444AD.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="195" border="0" height="83"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A project-scoped Connection Manager can be used wherever you you can use a package-scoped Connection Manager.&lt;/p&gt;  &lt;p&gt;When a project containing a Shared Connection Manager is deployed to the server then any property of that Shared Connection Manager can be changed just like a Project Parameter can be. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_69B9F503.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_3D30C51D.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="721" border="0" height="416"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In the screenshot immediately above you can see that I am setting the ConnectionString property of a Shared Connection Manager to the value of an environment variable called ConnStr (for more on environments and environment variables go take a read of &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/13/ssis-server-catalogs-environments-environment-variables-in-ssis-in-denali.aspx" target="_blank"&gt;SSIS Server, Catalogs, Environments, Environment Variables in SSIS in Denali&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;The last related point here is to note that the Data Sources and Data Source Views folders that appeared in Solution Explorer in SSIS2008R2:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5B9B0606.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6C9F33E9.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="244" border="0" height="189"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;have disappeared, and I am sure they will not be missed.&lt;/p&gt;  &lt;h2&gt;Project Parameters node in Solution Explorer&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3243BE08.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4347EBEB.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="244" border="0" height="171"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Project Parameters now have their own node in Solution Explorer rather than being hidden underneath a right-click menu like they were in CTP1.&lt;/p&gt;  &lt;h2&gt;Expression Indicator&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_21E8464F.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_59BA8A72.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="505" border="0" height="186"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Variables, Connection Managers and Tasks now have an &lt;i&gt;fx&lt;/i&gt; adorner applied to them indicating that there is at least one expression on that object (yes, just like what &lt;a href="http://bidshelper.codeplex.com" target="_blank"&gt;BIDS Helper&lt;/a&gt; does for earlier versions).&lt;/p&gt;  &lt;h2&gt;Change variable scope&lt;/h2&gt;  &lt;p&gt;One of the biggest annoyances in the previous SSIS Designer was that the scope of a variable could not be changed. Not anymore, in Denali it is possible to change the scope of a variable:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_6648378E.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_4C07CE6A.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="552" border="0" height="255"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Double-click to add a task&lt;/h2&gt;  &lt;p&gt;Its not really possible to demo this one with a screenshot but its pretty easy to explain. Double-clicking on a task in the toolbox will add it to the container that currently has the focus (which may of course be the package). This works for components in the data flow too.&lt;/p&gt;  &lt;h2&gt;Sort by name&lt;/h2&gt;  &lt;p&gt;It is now possible to sort packages alphabetically in Solution Explorer:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_2388EC56.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_704CB2EC.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="361" border="0" height="281"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_39FB8ADD.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_46F56AEE.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="237" border="0" height="188"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Note how the position of “Package.dtsx” &amp;amp; “Another Package.dtsx” has been reversed.&lt;/p&gt;  &lt;h2&gt;Simplified Data Viewers&lt;/h2&gt;  &lt;p&gt;Have you ever got annoyed that adding a data viewer takes far too many clicks given that you do the same thing (Add-&amp;gt;Grid-&amp;gt;Grid Tab-&amp;gt;OK) every time? In Denali its a lot easier; there is only one option – Grid (did you every use anything else anyway?) and all columns are automatically selected:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_10A442DF.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_04361FB6.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="482" border="0" height="460"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;4000 character limit on expressions has gone way&lt;/h2&gt;  &lt;p&gt;This one is pretty significant. In SSIS2008 an expression of REPLICATE(“a”,4001) times &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2009/05/27/4000-character-limit-in-ssis.aspx" target="_blank"&gt;would result in design-time warnings and execution-time errors&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_0DAEDE2C.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_26CA3864.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="657" border="0" height="608"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In Denali the 4000 character limit has gone away.&lt;/p&gt;  &lt;h2&gt;New expression language functions&lt;/h2&gt;  &lt;p&gt;We have three new functions in the expression language:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_3689CD68.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_5C7F7DBE.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="734" border="0" height="165"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;LEFT(&amp;lt;string&amp;gt;, &amp;lt;number-of-chars&amp;gt;) – A shorthand way of writing SUBSTRING(&amp;lt;string&amp;gt;, 1, &amp;lt;number-of-chars&amp;gt;) &lt;/li&gt;    &lt;li&gt;TOKEN(&amp;lt;string&amp;gt;, &amp;lt;delimiter&amp;gt;, N) – Returns the Nth token in &amp;lt;string&amp;gt; when it is split by &amp;lt;delimiter&amp;gt; &lt;/li&gt;    &lt;li&gt;TOKENCOUNT(&amp;lt;string&amp;gt;, &amp;lt;delimiter&amp;gt;) – Returns the total number of tokens in &amp;lt;string&amp;gt; as determined by &amp;lt;delimiter&amp;gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;TOKEN(,,) will be particularly useful when manually parsing columns from a flat file. When used in conjunction with TOKENCOUNT it can be used to return the last token in a string like so:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;TOKEN( [SomeTextColumn], “,”, TOKENCOUNT([SomeTextColumn], “,”) ) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I guess &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/543945" target="_blank"&gt;they do sometimes&lt;/a&gt; &lt;a href="http://connect.microsoft.com/SQLServer/feedback/details/635968/ssis-tokencount-string-delimiter-or-occurrences-string-delimiter#details" target="_blank"&gt;read Connect&lt;/a&gt; &lt;img src="http://sqlblog.com/blogs/jamie_thomson/wlEmoticon-smile_4CFC6BEF.png" style="border-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile"&gt;&lt;/p&gt;  &lt;h2&gt;Different style of Success/Failure Indicator&lt;/h2&gt;  &lt;p&gt;In SSIS2008R2:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_658C093F.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_52D70F88.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="200" border="0" height="50"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_51FEA99E.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_382A736F.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="199" border="0" height="49"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And now in Denali:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_504DDDCA.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6466FA53.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="197" border="0" height="72"&gt;&lt;/a&gt;&amp;nbsp;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_5C6F57F1.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_2DA99F4F.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="205" border="0" height="78"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;A little more understated in Denali I think you’ll agree although I suspect some people will prefer the old way! I am undecided. Arguably an icon is better than a change in colour for those that suffer from colour-blindness.&lt;/p&gt;  &lt;h2&gt;Load files with multiple row formats&lt;/h2&gt;  &lt;p&gt;One of the big complaints about SSIS over the past six years is that it has poor support for loading files where rows can have variable numbers of columns. The typical way of dealing with this was to use the Ragged Right feature and parse out the columns in a Derived Column component however that is no longer necessary – SSIS can now parse all of the columns from such files in the Flat File Source Adapter. Here is one such file that has differing row formats:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_018CA25E.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_64A37D88.png" style="background-image:none;border-width:0px;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="223" border="0" height="185"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It is a simplistic example of a file that contains both OrderHeader and OrderDetails records. The OrderHeader records consist of an OrderId and a Name, the OrderDetails records consist of an OrderId, an OrderLineNumber, a ProductName and a Quantity. In the Preview screen of the Flat File Connection Manager we can see that SSIS is able to parse both of these row formats:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1F1E7D5D.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_7DBED7C0.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="469" border="0" height="465"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Typically you could then use a Conditional Split component to split the dataset into Header and Detail records:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_1C2918AA.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_53FB5CCD.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="408" border="0" height="361"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Script out from the GUI now wired up&lt;/h2&gt;  &lt;p&gt;In earlier CTPs the Script button on the various GUIs in the SSIS Catalog didn’t do anything&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_329BB731.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_113C1195.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="644" border="0" height="420"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;In CTP3 however these are now wired up correctly so hitting CTRL+Shift+N will (in this example) produce a script containing the code required to execute a package:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_01B8FFC6.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_398B43E9.png" style="background-image:none;border-width:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="508" border="0" height="455"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;h2&gt;Logging Level&lt;/h2&gt;  &lt;p&gt;In Denali logging is no longer configured within a package, it is done on the SSIS Server (much more on this in an upcoming blog post). This much we already knew (learn more at &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/2010/11/13/ssis-server-catalogs-environments-environment-variables-in-ssis-in-denali.aspx" target="_blank"&gt;SSIS Server, Catalogs, Environments &amp;amp; Environment Variables in SSIS in Denali&lt;/a&gt;) however in CTP3 we now have the option to choose what data gets logged. There are four options here; None, Basic, Performance &amp;amp; Verbose&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_739A10C8.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_6416FEF9.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="567" border="0" height="450"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I won’t cover each choice here as there will be plenty of documentation available around this, for now just know that the option is available.&lt;/p&gt;  &lt;h2&gt;Data Taps&lt;/h2&gt;  &lt;p&gt;Data Taps are an exciting new feature coming in Denali and have taken me completely by surprise. Ever wanted to to view the data in an executing package like you can using a data viewer in BIDS? That is what data taps provide. You don’t have to build them into your package either, they are added on the server when the package is executed.&lt;/p&gt;  &lt;p&gt;Data taps are worthy of a post of their own so I’ll cover them separately if no-one else does so first.&lt;/p&gt;  &lt;h2&gt;Expression Task&lt;/h2&gt;  &lt;p&gt;I once wrote a blog post entitled &lt;a href="http://consultingblogs.emc.com/jamiethomson/archive/2008/10/24/ssis-nesting-variables-to-calculate-values.aspx" target="_blank"&gt;Nesting variables to calculate values&lt;/a&gt; where I opined that (where possible) it was better to build variable values dynamically using expressions rather than assign a value using a Script Task because this resulted in less executables in your package. Some people in the comments disagreed with me partly because they liked the explicitness of a task to do this job and for those people there is a new task in Denali that is right up their street – the Expression Task. Put simply the Expression task will assign the result of an expression to a variable, in the example below I am assigning a value to a variable called “Sum”&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7B62036A.png"&gt;&lt;img src="http://sqlblog.com/blogs/jamie_thomson/image_thumb_06AB17A8.png" style="background-image:none;border:0px none;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;" title="image" alt="image" width="556" border="0" height="538"&gt;&lt;/a&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I have to be honest and say I despise this task. The variable being assigned to should be available in a dropdown box, you shouldn’t have to type it. Furthermore if they are &lt;i&gt;not&lt;/i&gt; going to provide the variable in a dropdown then the box in which you type should not be labelled “Expression”, it should be labelled “Assignment” – because that is what it is. I will not be going anywhere near this thing, will you?&lt;/p&gt;  &lt;p&gt;On the plus side they have moved the system variables into a “System variables” node in the “Variables and Parameters” tree which is a most welcome change.&lt;/p&gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt;  &lt;h2&gt;Wrap-up&lt;/h2&gt;  &lt;p&gt;I haven’t covered everything that’s new in CTP3 but this is the bulk of it from a pure development perspective. What out of that little lot most excites you? Let me know in the comments.&lt;/p&gt;  &lt;p&gt;I’ll touch on some other things in upcoming blog posts including an enhancement which is seemingly very insignificant but which actually excites me more than anything I’ve talked about here. Watch this space.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@jamiet&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Other blog posts related to SSIS in Denali CTP3:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://microsoft-ssis.blogspot.com/2011/07/microsoft-sql-server-code-named-denali.html" target="_blank"&gt;&amp;nbsp;Microsoft SQL Server code-named 'Denali' - Community Technology Preview 3&lt;/a&gt; by Joost van Rossum&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/mattm/archive/2011/07/12/ssis-what-s-new-in-sql-server-denali.aspx" target="_blank"&gt;SSIS - What’s New in SQL Server Denali&lt;/a&gt; by Matt Masson&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=36840" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>New SSIS features and enhancements in Denali – a webinar on 28th June in association with Pragmatic Works</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/06/27/new-ssis-features-and-enhancements-in-denali-a-webinar-on-28th-june-in-association-with-pragmatic-works.aspx</link><pubDate>Mon, 27 Jun 2011 21:39:45 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:36497</guid><dc:creator>jamiet</dc:creator><slash:comments>4</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/36497.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=36497</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=36497</wfw:comment><description>&lt;p&gt;Tomorrow I shall be presenting a webinar entitled “New SSIS features and enhancements in Denali”. The webinar is being hosted by Pragmatic Works and you can sign up for it at &lt;a href="http://pragmaticworks.com/Resources/webinars/Default.aspx"&gt;Pragmatic Works webinars&lt;/a&gt;. The webinar will start at 1930BST and you can view the time for your timezone at this link: &lt;a title="http://www.timeanddate.com/worldclock/fixedtime.html?msg=New+SSIS+features+and+enhancements+in+Denali&amp;amp;iso=20110628T1830" href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=New+SSIS+features+and+enhancements+in+Denali&amp;amp;iso=20110628T1830"&gt;http://www.timeanddate.com/worldclock/fixedtime.html?msg=New+SSIS+features+and+enhancements+in+Denali&amp;amp;iso=20110628T1830&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The webinar was arranged a few months ago and at that time we were hoping that the next Community Technology Preview (CTP) of SQL Server Denali would be available for public consumption; unfortunately it transpires that that is not yet the case and hence I will be presenting new features of CTP1 that was released at the start of this year. If you’re not yet familiar with the new features of SSIS that are coming in the next release of SQL Server then please do come and join the webinar.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/jamiet"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=36497" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/denali/default.aspx">denali</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx">SQL Server 2012</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item><item><title>Have SSIS' differing type systems ever caused you problems?</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2011/03/14/have-ssis-differing-type-systems-ever-caused-you-problems.aspx</link><pubDate>Mon, 14 Mar 2011 16:46:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:34115</guid><dc:creator>jamiet</dc:creator><slash:comments>34</slash:comments><comments>http://sqlblog.com/blogs/jamie_thomson/comments/34115.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jamie_thomson/commentrss.aspx?PostID=34115</wfw:commentRss><wfw:comment>http://sqlblog.com/blogs/jamie_thomson/rsscomments.aspx?PostID=34115</wfw:comment><description>&lt;P&gt;One thing that has always infuriated me about SSIS is the fact that&amp;nbsp;every package has three different type systems; to give you an idea of what I am talking about consider the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The SSIS dataflow's type system is made up of types called DT_*&amp;nbsp; (e.g. DT_STR, DT_I4)&lt;/LI&gt;
&lt;LI&gt;The SSIS variable type system is based on .Net datatypes (e.g. String, Int32)&lt;/LI&gt;
&lt;LI&gt;The types available for Execute SQL Task's parameters are based on something else - I don't exactly know what (e.g. VARCHAR, LONG)&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Speaking euphemistically ...&amp;nbsp;this is not an optimum situation (were I not speaking euphemistically I would be a lot ruder) and hence I have submitted a suggestion to Connect at&amp;nbsp;&lt;A href="https://connect.microsoft.com/SQLServer/feedback/details/651324/ssis-consolidate-three-type-systems-into-one" target=_blank&gt;[SSIS] Consolidate three type systems into one&lt;/A&gt; requesting that it be remedied. This accompanying blog post is not however a request for votes (though that would be nice); the reason is actually subtler than that. Let me explain.&lt;/P&gt;
&lt;P&gt;I have been submitting bugs and suggestions pertaining to&amp;nbsp;SSIS for years and have, so far, submitted &lt;A href="https://connect.microsoft.com/SQLServer/SearchResults.aspx?UserHandle=Jamie+Thomson" target=_blank&gt;over 200 Connect items&lt;/A&gt;.&amp;nbsp;If that experience has taught me anything it is this - Connect items are not generally actioned because they&amp;nbsp;are considered "nice to have". No, SSIS Connect items get actioned because they cause customers grief and if I am perfectly honest I must admit that, other than being&amp;nbsp;a bit&amp;nbsp;gnarly, SSIS' three type system&amp;nbsp;architecture has never knowingly caused me any significant problems.&lt;/P&gt;
&lt;P&gt;The reason for this blog post is to ask if any reader out there has ever encountered any problems on account of SSIS' three type systems or have you, like me, never found them to be a problem?&amp;nbsp;Errors or performance degredation caused by implicit type conversions would, I believe, present a strong case for getting this situation remedied in a&amp;nbsp;future version of SSIS so if you HAVE encountered such problems I would encourage you to leave a comment on the &lt;A href="https://connect.microsoft.com/SQLServer/feedback/details/651324/ssis-consolidate-three-type-systems-into-one" target=_blank&gt;Connect submission&lt;/A&gt; accordingly. Let me know in the comments too - I would be interested to hear others' opinions on this.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://twitter.com/jamiet" target=_blank&gt;@Jamiet&lt;/A&gt; &lt;/P&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=34115" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Connect/default.aspx">Connect</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server/default.aspx">sql server</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/sql+server+integration+services/default.aspx">sql server integration services</category><category domain="http://sqlblog.com/blogs/jamie_thomson/archive/tags/ssis/default.aspx">ssis</category></item></channel></rss>