<?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>Search results matching tag 'SSIS Catalog'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=SSIS+Catalog&amp;orTags=0</link><description>Search results matching tag 'SSIS Catalog'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Announcing the 2013 Biml Workshop 15 Oct 2013 in Charlotte NC!</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2013/05/18/announcing-the-2013-biml-workshop-15-oct-2013-in-charlotte-nc.aspx</link><pubDate>Sat, 18 May 2013 04:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:49102</guid><dc:creator>andyleonard</dc:creator><description>&lt;p&gt;&lt;strong&gt;&lt;a href="http://bimlscript.eventbrite.com" target="_blank"&gt;&lt;img title="2013 Biml Workshop presented by Varigence and Linchpin People" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2013 Biml Workshop presented by Varigence and Linchpin People" src="http://sqlblog.com/blogs/andy_leonard/BimlWorkshopHeader_5935BC00.jpg" width="447" height="142" /&gt;&lt;/a&gt;&lt;a href="http://bimlscript.eventbrite.com" target="_blank"&gt;&lt;img title="2013 Biml Workshop - Learn Biml and more!" style="border-top:0px;border-right:0px;background-image:none;border-bottom:0px;float:right;padding-top:0px;padding-left:0px;border-left:0px;display:inline;padding-right:0px;" border="0" alt="2013 Biml Workshop - Learn Biml and more!" align="right" src="http://sqlblog.com/blogs/andy_leonard/2013BimlWorkshopGraphic1_585D5616.png" width="434" height="615" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;When&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;October 15, 2013    &lt;br /&gt;8:45 am - 4:45 pm     &lt;br /&gt;Charlotte, NC&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Where&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;Wake Forest University Charlotte Center    &lt;br /&gt;200 North College Street     &lt;br /&gt;Charlotte, NC 28202&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What&lt;/strong&gt;:&lt;/p&gt;  &lt;p&gt;Business Intelligence Markup Language (Biml) automates your BI patterns and eliminates the manual repetition that consumes most of your time. Come see why BI professionals around the world think Biml is the future of data integration and BI.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://bimlscript.eventbrite.com" target="_blank"&gt;Registration&lt;/a&gt; is just $69. &lt;a href="http://bimlscript.eventbrite.com" target="_blank"&gt;Register&lt;/a&gt; before July 15th and receive early bird discount of just $49. Breakfast, lunch, &amp;amp; refreshments are also included. Seating is limited. &lt;a href="http://bimlscript.eventbrite.com" target="_blank"&gt;Register&lt;/a&gt; now to guarantee your spot. &lt;/p&gt;  &lt;p&gt;:{&amp;gt;&lt;/p&gt;</description></item><item><title>Presenting Hacking the SSIS 2012 Catalog to PASS DW/BI VC Tomorrow!</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2013/02/21/presenting-hacking-the-ssis-2012-catalog-to-pass-dw-bi-vc-tomorrow.aspx</link><pubDate>Thu, 21 Feb 2013 17:57:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47851</guid><dc:creator>andyleonard</dc:creator><description>&lt;font style="text-transform:none;line-height:normal;text-indent:0px;letter-spacing:normal;font-style:normal;font-variant:normal;font-weight:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;" color="#000000" size="3" face="Bradley Hand ITC"&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;font color="#3366ff" face="tahoma,sans-serif"&gt;&lt;strong&gt;PASS Data Warehouse / Business Intelligence Virtual Chapter Co-Chair&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;em&gt;&lt;font face="tahoma,sans-serif"&gt;Web:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/em&gt;&lt;a href="http://bi.sqlpass.org/" target="_blank"&gt;&lt;font face="tahoma,sans-serif"&gt;http://bi.sqlpass.org&lt;/font&gt;&lt;/a&gt;&lt;font face="tahoma,sans-serif"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;|&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;em&gt;Email:&lt;/em&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;a href="mailto:PASSDWBIVC@sqlpass.org" target="_blank"&gt;&lt;font face="tahoma,sans-serif"&gt;PASSDWBIVC@sqlpass.org&lt;/font&gt;&lt;/a&gt;&lt;font face="tahoma,sans-serif"&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;|&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;em&gt;Twitter:&lt;/em&gt;&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;@PASSBIVC&lt;/font&gt;&lt;/div&gt;&lt;/font&gt;&lt;span style="text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;float:none;white-space:normal;orphans:2;widows:2;font-size-adjust:none;font-stretch:normal;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;/span&gt;&lt;div style="margin:0in 0in 0pt;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2;font-size-adjust:none;font-stretch:normal;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2;font-size-adjust:none;font-stretch:normal;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;text-transform:none;text-indent:0px;letter-spacing:normal;word-spacing:0px;white-space:normal;orphans:2;widows:2;font-size-adjust:none;font-stretch:normal;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;"&gt;&lt;div&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span&gt;Friday February 22nd 11am EST(US)&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;"&gt;&lt;span style="font-size:medium;"&gt;&lt;b&gt;&lt;span&gt;Hacking the SSIS 2012 Catalog&lt;br&gt;Speaker: Andy Leonard&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;span&gt;URL:&lt;span class="Apple-converted-space"&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.livemeeting.com/cc/usergroups/join?id=H4C3NK&amp;amp;role=attend&amp;amp;pw=7%3Ec%2FM5PwM" target="_blank"&gt;&lt;span style="font-size:x-small;"&gt;https://www.livemeeting.com/cc/usergroups/join?id=H4C3NK&amp;amp;role=attend&amp;amp;pw=7%3Ec%2FM5PwM&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:x-small;"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;font color="#0066cc" face="Calibri"&gt;&lt;b&gt;&lt;span style="font-size:9pt;"&gt;&lt;a href="http://www.timeanddate.com/worldclock/fixedtime.html?msg=Hacking+the+SSIS+2012+Catalog&amp;amp;iso=20130222T11&amp;amp;p1=179&amp;amp;ah=1" target="_blank"&gt;&lt;u&gt;&lt;img style="width:625px;min-height:75px;" alt="" src="http://bi.sqlpass.org/Portals/259/TZ_USEST12.png"&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="margin:0in 0in 0pt;"&gt;&lt;p&gt;&lt;span style="font-size:small;"&gt;&lt;span style="font-family:Arial;"&gt;Integration Services 2012 offers a brand new way to store, log, and execute SSIS packages – the SSIS Catalog. How does the Catalog work? Can it be customized? Can it be extended? Yes it can! In this presentation, Andy Leonard shows you how!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description></item><item><title>Presenting at the Greenville SC SQL Server Innovators Guild 5 Feb 2013!</title><link>http://sqlblog.com/blogs/andy_leonard/archive/2013/01/21/presenting-at-the-greenville-sc-sql-server-innovators-guild-5-feb-2013.aspx</link><pubDate>Mon, 21 Jan 2013 13:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47235</guid><dc:creator>andyleonard</dc:creator><description>&lt;p&gt;I will be unveiling a shiny new presentation – Hacking the SSIS 2012 Catalog – at the &lt;a href="http://ssig.sqlpass.org/" target="_blank"&gt;SQL Server Innovators Guild&lt;/a&gt; in Greenville South Carolina 5 Feb 2013! The location of the meeting is:&lt;/p&gt;  &lt;h4&gt;&lt;b&gt;ECPI, Greenville, SC&lt;/b&gt;    &lt;br /&gt;1001 Keys Dr    &lt;br /&gt;Greenville, SC 29615&lt;/h4&gt;  &lt;p&gt;If you will be in the area that evening and if you read this blog, stop by and introduce yourself. I’m the fat guy with a fu.&lt;/p&gt;  &lt;p&gt;:{&amp;gt;&lt;/p&gt;</description></item><item><title>Introducing sp_ssiscatalog (v1.0.0.0)</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/11/06/introducing-sp-ssiscatalog-v1-0-0-0.aspx</link><pubDate>Tue, 06 Nov 2012 23:21:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45988</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;Regular readers of my blog may know that over the last year I have made available a suite of SQL Server Reporting Services (SSRS) reports that provide visualisations of the data in the SQL Server Integration Services (SSIS) 2012 Catalog. Those reports are available at &lt;a href="http://ssisreportingpack.codeplex.com"&gt;http://ssisreportingpack.codeplex.com&lt;/a&gt;. As I have built these reports and used them myself on a real life project a couple of things have dawned on me:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;As soon as your SSIS Catalog gets a significant amount of data in it the performance of the reports degrades rapidly. This is hampered by the fact that there are limitations as to the SQL statements that I can embed within a SSRS report. &lt;/li&gt;    &lt;li&gt;SSIS professionals are data guys at heart and those types of people feel more comfortable in a query environment rather than having to go through the rigmarole of standing up a reporting server (well, I know I do anyway) &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Hence I have decided to take a different tack with the reporting pack. Taking my lead from Adam Machanic’s &lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/tags/who+is+active/default.aspx" target="_blank"&gt;sp_whoisactive&lt;/a&gt; and Brent Ozar’s &lt;a href="http://www.brentozar.com/blitz/" target="_blank"&gt;sp_blitz&lt;/a&gt; I have produced sp_ssiscatalog, a stored procedure that makes it easy to get at the crucial data in the SSIS Catalog. I will spend the rest of this blog explaining exactly what sp_ssiscatalog does and how to use it but if you would rather just download the bits yourself and start to play you can download v1.0.0.0 from &lt;a href="http://ssisreportingpack.codeplex.com/releases/view/97327" target="_blank"&gt;DB v1.0.0.0&lt;/a&gt;.&lt;/p&gt;  &lt;h2&gt;Usage Scenarios&lt;/h2&gt;  &lt;h3&gt;Most Recent Execution&lt;/h3&gt; I find that the most frequent information that one needs to get from the SSIS Catalog is information pertaining to the most recent execution. Hence if you execute sp_ssiscatalog with no parameters, that is exactly what you will get.   &lt;blockquote&gt;   &lt;pre style="font-size:12px;"&gt;&lt;font color="blue" size="2"&gt;&lt;b&gt;EXEC &lt;/b&gt;&lt;/font&gt;&lt;font color="black"&gt;&lt;font size="2"&gt;&lt;b&gt;[dbo].[sp_ssiscatalog]&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;img title="sp_ssiscatalog_basic.png" alt="sp_ssiscatalog_basic.png" src="http://i3.codeplex.com/Download?ProjectName=ssisreportingpack&amp;amp;DownloadId=526651" width="785" height="291" /&gt;&lt;/blockquote&gt;
This will return up to 5 resultsets: 

&lt;ul&gt;
  &lt;li&gt;EXECUTION - Summary information about the execution including status, start time &amp;amp; end time &lt;/li&gt;

  &lt;li&gt;EVENTS - All events that occurred during the execution &lt;/li&gt;

  &lt;li&gt;OnError,OnTaskFailed - All events where event_name is either OnError or OnTaskFailed &lt;/li&gt;

  &lt;li&gt;OnWarning - All events where event_name is OnWarning &lt;/li&gt;

  &lt;li&gt;EXECUTABLE_STATS - Duration and execution result of every executable in the execution &lt;/li&gt;
&lt;/ul&gt;
All 5 resultsets will be displayed if there is any data satisfying that resultset. In other words, if there are no (for example) OnWarning events then the OnWarning resultset will not be displayed. 

&lt;br /&gt;The display of these 5 resultsets can be toggled respectively by these 5 optional parameters (all of which are of type BIT): 

&lt;ul&gt;
  &lt;li&gt;@exec_execution &lt;/li&gt;

  &lt;li&gt;@exec_events &lt;/li&gt;

  &lt;li&gt;@exec_errors &lt;/li&gt;

  &lt;li&gt;@exec_warnings &lt;/li&gt;

  &lt;li&gt;@exec_executable_stats &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Any Execution&lt;/h3&gt;
As just explained the default behaviour is to supply data for the most recent execution. If you wish to specify which execution the data should return data for simply supply the execution_id as a parameter: 

&lt;blockquote&gt;
  &lt;pre style="font-size:12px;"&gt;&lt;b&gt;&lt;font color="blue" size="2"&gt;EXEC &lt;/font&gt;&lt;font color="black"&gt;&lt;font size="2"&gt;[dbo].[sp_ssiscatalog] 6&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;h3&gt;All Executions&lt;/h3&gt;
sp_ssiscatalog can also return information about all executions: 

&lt;blockquote&gt;&lt;b&gt;&lt;font color="#0000ff"&gt;EXEC &lt;/font&gt;&lt;font color="#000000"&gt;[dbo].[sp_ssiscatalog] &lt;/font&gt;&lt;font color="#434343"&gt;@operation_type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/b&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;'execs'&lt;/b&gt; 

    &lt;br /&gt;

    &lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;img title="sp_ssiscatalog_executions.png" alt="sp_ssiscatalog_executions.png" src="http://i3.codeplex.com/Download?ProjectName=ssisreportingpack&amp;amp;DownloadId=526650" width="758" height="281" /&gt;&lt;/blockquote&gt;
The most recent execution will appear at the top. 

&lt;br /&gt;sp_ssiscatalog provides a number of parameters that enable you to filter the resultset: 

&lt;ul&gt;
  &lt;li&gt;@execs_folder_name &lt;/li&gt;

  &lt;li&gt;@execs_project_name &lt;/li&gt;

  &lt;li&gt;@execs_package_name &lt;/li&gt;

  &lt;li&gt;@execs_executed_as_name &lt;/li&gt;

  &lt;li&gt;@execs_status_desc &lt;/li&gt;
&lt;/ul&gt;
Some typical usages might be: 

&lt;blockquote&gt;&lt;b&gt;&lt;font color="#008040"&gt;//Return all failed executions&lt;/font&gt; &lt;/b&gt;

  &lt;br /&gt;&lt;font size="2"&gt;&lt;b&gt;&lt;font color="#0000ff"&gt;EXEC &lt;/font&gt;&lt;font color="#000000"&gt;[dbo].[sp_ssiscatalog] &lt;/font&gt;&lt;font color="#434343"&gt;@operation_type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;font color="#434343"&gt;@execs_status_desc&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font size="2"&gt;&lt;b&gt;'failed' 
        &lt;br /&gt;&lt;/b&gt;&lt;/font&gt;

    &lt;br /&gt;&lt;/font&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;b&gt;&lt;font color="#008040"&gt;//Return all executions for a specified folder&lt;/font&gt; 

    &lt;br /&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;EXEC &lt;/font&gt;&lt;font color="#000000"&gt;[dbo].[sp_ssiscatalog] &lt;/font&gt;&lt;font color="#434343"&gt;@operation_type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;font color="#434343"&gt;@execs_folder_name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;&lt;font size="2"&gt;'My folder'&lt;/font&gt; 

      &lt;br /&gt;

      &lt;br /&gt;&lt;/b&gt;&lt;/font&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;b&gt;&lt;font color="#008040"&gt;//Return all executions of a specified package in a specified project&lt;/font&gt; 

    &lt;br /&gt;&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;EXEC &lt;/font&gt;&lt;font color="#000000"&gt;[dbo].[sp_ssiscatalog] &lt;/font&gt;&lt;font color="#434343"&gt;@operation_type&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;'execs'&lt;/font&gt;&lt;font color="#808080"&gt;,&lt;/font&gt;&lt;font color="#434343"&gt;@execs_project_name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;font color="#ff0000"&gt;'My project'&lt;/font&gt;&lt;font color="#808080"&gt;, &lt;/font&gt;&lt;font color="#434343"&gt;@execs_package_name&lt;/font&gt;&lt;font color="#0000ff"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000"&gt;&lt;font size="2"&gt;'Pkg.dtsx'&lt;/font&gt;&lt;/font&gt; &lt;/b&gt;&lt;/blockquote&gt;

&lt;h2&gt;Installing sp_ssicatalog&lt;/h2&gt;

&lt;p&gt;Under the covers sp_ssiscatalog actually calls many other stored procedures and functions hence creating it on your server is not simply a case of running a CREATE PROCEDURE script. I maintain the code in an SQL Server Data Tools (SSDT) database project which means that you have two ways of obtaining it.&lt;/p&gt;

&lt;h3&gt;Download the source code&lt;/h3&gt;

&lt;p&gt;You can download the latest (at the time of writing) source code from &lt;a title="http://ssisreportingpack.codeplex.com/SourceControl/changeset/view/70192" href="http://ssisreportingpack.codeplex.com/SourceControl/changeset/view/70192"&gt;http://ssisreportingpack.codeplex.com/SourceControl/changeset/view/70192&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7DE5D5BD.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_0FE1F37E.png" width="746" height="492" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hit the download button to download all the source code in a zip file. The contents of that zip file will include an SSDT database project which you can open up in SSDT and publish just like any other SSDT database project. You can publish to a new database or any existing database, even [SSISDB] if you prefer.&lt;/p&gt;

&lt;h3&gt;Download a dacpac&lt;/h3&gt;

&lt;p&gt;Maintaining the code in an SSDT database project means that it can all get packaged up into a dacpac that you can then publish to your SQL Server. That dacpac is available in a zip file that is downloadable from &lt;a href="http://ssisreportingpack.codeplex.com/releases/view/97327" target="_blank"&gt;DB v1.0.0.0&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_7C6D7B25.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_41A5D24F.png" width="601" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The zip file actually contains two dacpacs:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_446B8742.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;margin: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_3F88D386.png" width="230" height="118" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SSISReportingPack.dacpac is the one that contains sp_ssiscatalog however SSISDB.dacpac represents all of the objects in the SSIS Catalog hence is a pre-requisite and has to be bundled along for the ride. Simply unzip these two files into a folder.&lt;/p&gt;

&lt;p&gt;Ordinarily a dacpac can be deployed to a SQL Server from SSMS using the Deploy Dacpac wizard however in this case there is a limitation. Due to sp_ssiscatalog referring to objects in the SSIS Catalog (which it has to do of course) the dacpac contains a SqlCmd variable to store the name of the database that underpins the SSIS Catalog; unfortunately the Deploy Dacpac wizard in SSMS has a rather gaping limitation in that it cannot deploy dacpacs containing SqlCmd variables. Hence, we can use the command-line tool, sqlpackage.exe, instead. Don’t worry if reverting to the command-line sounds a little daunting, I assure you it is not. Simply open a command-prompt and cd to the folder containing the unzipped dacpacs:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML4323bf97_7A3A1686.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="SNAGHTML4323bf97" border="0" alt="SNAGHTML4323bf97" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML4323bf97_thumb_19108A65.png" width="564" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Type:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="left"&gt;&amp;quot;%PROGRAMFILES(x86)%\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe&amp;quot; /action:Publish /TargetDatabaseName:SsisReportingPack /SourceFile:SSISReportingPack.dacpac /Variables:SSISDB=SSISDB /TargetServerName:(local) &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;or the shortened form:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;div align="left"&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;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;remembering to set your server name appropriately (here mine is set to “(local)” ).&lt;/p&gt;

&lt;p&gt;If everything works successfully you will see this:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML4322c773_5EB51483.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="SNAGHTML4322c773" border="0" alt="SNAGHTML4322c773" src="http://sqlblog.com/blogs/jamie_thomson/SNAGHTML4322c773_thumb_6F4D0F71.png" width="590" height="456" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you’re done! You’ll have a new database called [SsisReportingPack] which contains sp_ssiscatalog:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jamie_thomson/image_39D1CBD9.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_38F965EF.png" width="284" height="324" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Good luck with sp_ssiscatalog. I have been using it extensively on my own projects recently and it has proved to be very useful indeed. Rest-assured however, I will be adding many new capabilities in the future.&lt;/p&gt;

&lt;p&gt;Feedback is welcome.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/jamiet" target="_blank"&gt;@Jamiet&lt;/a&gt;&lt;/p&gt;</description></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><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;</description></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><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;</description></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><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;</description></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><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;</description></item><item><title>Is the SSIS Catalog going to be enough?</title><link>http://sqlblog.com/blogs/jamie_thomson/archive/2012/02/22/is-the-ssis-catalog-going-to-be-enough.aspx</link><pubDate>Wed, 22 Feb 2012 09:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:41861</guid><dc:creator>jamiet</dc:creator><description>&lt;p&gt;Over the past year or so I have &lt;a href="http://sqlblog.com/blogs/jamie_thomson/archive/tags/SQL+Server+2012/default.aspx" target="_blank"&gt;written at length&lt;/a&gt; about the SSIS Catalog that will be provided in the upcoming version of SQL Server Integration Services (SSIS 2012) and the capabilities that it will bring; one of the biggest benefits (in my opinion) is that logging is now something that is taken care of on your behalf. &lt;/p&gt;&lt;p&gt;Many SSIS developers have built their own logging solutions (often referred to as "frameworks") over the past few years and it occurred to me that many of those developers may have a need to carry on running their own logging solutions alongside that which the SSIS Catalog provides. To that end I have raised two &lt;a href="https://connect.microsoft.com/SQLServer/feedback/" target="_blank"&gt;Connect submissions&lt;/a&gt; requesting enhancements to SSIS that will make it easier for developers to do just that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/725932/ssis-automatically-provide-a-connectionstring-to-the-ssis-catalog" target="_blank"&gt;Automatically Provide a ConnectionString to the SSIS Catalog&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/623898/ssis-denali-please-can-we-have-a-system-executionid-variable" target="_blank"&gt;Please can we have a @[System::ExecutionId] variable?&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;One of those (the one about the ExecutionID variable) has already been implemented and will be available in the final release of SQL Server 2012 however this blog post isn't about drumming up support for Connect submissions. I am more interested in knowing whether you think you will need to log information over and above what the SSIS Catalog provides and if so, what exactly? I can envisage a number of scenarios in which additional logging may be necessary:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rowcounts captured using the &lt;a href="http://msdn.microsoft.com/en-us/library/ms141136.aspx" target="_blank"&gt;Row Count Transformation&lt;/a&gt; or by the &lt;a href="http://msdn.microsoft.com/en-us/library/ms141003%28v=sql.110%29.aspx" target="_blank"&gt;Execute SQL Task&lt;/a&gt;.&lt;br&gt;&lt;/li&gt;&lt;li&gt;Capturing custom errors that are specific to the implementation rather than the generic errors that SSIS will throw.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Do you plan to use your own logging solutions alongside the SSIS Catalog? If so, why? Let me know in the comments, I'm really interested to discover how folks plan to use this.&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;</description></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><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;</description></item></channel></rss>