<?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 'SQL Server Denali'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=SQL+Server+Denali&amp;orTags=0</link><description>Search results matching tag 'SQL Server Denali'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Presenting &amp;quot;What's New in SQL Server Denali&amp;quot; for WVPASS</title><link>http://sqlblog.com/blogs/aaron_bertrand/archive/2011/03/17/presenting-what-s-new-in-sql-server-denali-for-wvpass.aspx</link><pubDate>Thu, 17 Mar 2011 21:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:34231</guid><dc:creator>AaronBertrand</dc:creator><description>&lt;p&gt;Recently I was asked by John Sterrett (&lt;a href="http://johnsterrett.com/" title="http://johnsterrett.com/" target="_blank"&gt;blog&lt;/a&gt; | &lt;a href="http://twitter.com/johnsterrett" title="http://twitter.com/johnsterrett" target="_blank"&gt;twitter&lt;/a&gt;) to present to his SQL Server user group (&lt;a href="http://wvpass.sqlpass.org/" title="http://wvpass.sqlpass.org/" target="_blank"&gt;WVPASS&lt;/a&gt;) in Wheeling, West Virginia. Well, today is the day, and I will be presenting, "What's new in SQL Server Denali" at tonight's meeting, sponsored by &lt;a href="http://sqlsentry.net" title="http://sqlsentry.net" target="_blank"&gt;SQL Sentry&lt;/a&gt;. The slide deck is attached below; the samples are available &lt;a href="http://sqlblog.com/files/folders/34238/download.aspx" title="http://sqlblog.com/files/folders/34238/download.aspx" target="_blank"&gt;here&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;If you attended this presentation, please feel free to &lt;a href="http://speakerrate.com/talks/6880-what-s-new-in-sql-server-denali" title="http://speakerrate.com/talks/6880-what-s-new-in-sql-server-denali" target="_blank"&gt;provide feedback at SpeakerRate&lt;/a&gt;. &lt;br&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;br&gt;&lt;/p&gt;</description></item><item><title>Parsing the sqlserver.sql_text Action in Extended Events by Offsets</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2011/01/30/parsing-the-sqlserver-sql-text-action-in-extended-events-by-offsets.aspx</link><pubDate>Mon, 31 Jan 2011 02:05:43 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:33039</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;A couple of weeks back I received an email from a member of the community who was reading the XEvent a Day blog series and had a couple of interesting questions about Extended Events.&amp;#160; This person had created an Event Session that captured the sqlserver.sql_statement_completed and sqlserver.sql_statement_starting Events and wanted to know how to do a correlation between the related Events so that the offset information from the starting Event could be used to find the statement of the completed Event to know the specific statement and its reads, cpu and write information from the sqlserver.sql_statement_completed Event.&amp;#160; Confused yet?&amp;#160; Since it doesn’t really read well what the intent was, lets look at the columns that are output by both of these Events, and it will make more sense.&amp;#160; I am going to break this post into two sections, SQL Server 2008 and SQL Server Denali, because there are significant differences between the two with regard to Extended Events and specifically these two events.&lt;/p&gt;  &lt;h2&gt;SQL Server 2008&lt;/h2&gt;  &lt;p&gt;In SQL Server 2008, the sqlserver.sql_statement_starting Event has the following output columns:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;select &lt;/span&gt;name&lt;span style="color:gray;"&gt;, &lt;/span&gt;column_id&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name
&lt;/span&gt;&lt;span style="color:blue;"&gt;from &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns
&lt;/span&gt;&lt;span style="color:blue;"&gt;where &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'sql_statement_starting'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;and &lt;/span&gt;column_type &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'readonly'&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image3_40F188BD.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image3_thumb_4A2DC3FE.png" width="311" height="161" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sqlserver.sql_statement_completed Event has the following output columns:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;select &lt;/span&gt;name&lt;span style="color:gray;"&gt;, &lt;/span&gt;column_id&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name
&lt;/span&gt;&lt;span style="color:blue;"&gt;from &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns
&lt;/span&gt;&lt;span style="color:blue;"&gt;where &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'sql_statement_completed'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;and &lt;/span&gt;column_type &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'readonly'&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_51B9336B.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_125B7FDB.png" width="282" height="158" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;/blockquote&gt;

&lt;p&gt;The intent as I understood it was to use the offset and offset_end from the sqlserver.sql_statement_starting Event with the information in the sqlserver.sql_statement_completed Event and I could only assume the sqlserver.sql_text Action.&amp;#160; When I got the email I replied back to use the sqlserver.tsql_stack Action to get the offset information with the sqlserver.sql_statement_completed Event and use that to parse the statement from the sqlserver.sql_text Action.&amp;#160; I didn’t have time to play with it at the moment, but I promised to write a blog post showing how to do it later that day.&amp;#160; &lt;/p&gt;

&lt;p&gt;When I got a free minute where I could write a demo to blog about for this I ran into some problems with the results that I got from parsing the sql_text data that was returned by Extended Events.&amp;#160; To show this, lets create an Event Session and run a test multi-statement batch so that we have to some sample Event Data to do processing on.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;IF &lt;/span&gt;&lt;span style="color:gray;"&gt;EXISTS (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;1 &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;DROP EVENT SESSION &lt;/span&gt;SQLStmtEvents &lt;span style="color:blue;"&gt;ON SERVER
GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Create our Event Session for current Session_ID
&lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@SqlCmd &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;) = &lt;/span&gt;&lt;span style="color:red;"&gt;N'
CREATE EVENT SESSION SQLStmtEvents
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(    ACTION (sqlserver.sql_text, sqlserver.tsql_stack)
    WHERE (sqlserver.session_id = '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;@@SPID &lt;/span&gt;&lt;span style="color:blue;"&gt;AS NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;))+&lt;/span&gt;&lt;span style="color:red;"&gt;')    ),
ADD EVENT sqlserver.sql_statement_starting
(    ACTION (sqlserver.sql_text, sqlserver.tsql_stack)
    WHERE (sqlserver.session_id = '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;@@SPID &lt;/span&gt;&lt;span style="color:blue;"&gt;AS NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;))+&lt;/span&gt;&lt;span style="color:red;"&gt;')    )
ADD target package0.ring_buffer
WITH (MAX_DISPATCH_LATENCY=5SECONDS, TRACK_CAUSALITY=ON)'&lt;/span&gt;&lt;span style="color:gray;"&gt;;
&lt;/span&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@SqlCmd&lt;span style="color:gray;"&gt;);
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Start the Event Session
&lt;/span&gt;&lt;span style="color:blue;"&gt;ALTER EVENT SESSION &lt;/span&gt;SQLStmtEvents
&lt;span style="color:blue;"&gt;ON SERVER
STATE&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;START&lt;span style="color:gray;"&gt;;
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Run a multi-statement Batch
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;* 
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;objects

&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;* 
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM master&lt;/span&gt;&lt;span style="color:gray;"&gt;..&lt;/span&gt;spt_values
&lt;span style="color:blue;"&gt;WHERE type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;N'P'

&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;*
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;TABLES
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;With the Event Session created I did quick check to validate that the offset information held in the tsql_stack matched the offset information returned by the sql_statement_starting Event.&amp;#160; The tsql_stack returns an XML document that is similar to the following:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;frame &lt;/span&gt;&lt;span style="color:red;"&gt;level&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;1&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;handle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;0x020000004765D81E643DBDA1E90A8F634B78C042FF805374&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;line&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;2&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;offsetStart&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;64&lt;/span&gt;&amp;quot; &lt;span style="color:red;"&gt;offsetEnd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;124&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;After validating the offsets matched, I wrote out the parser for the Event Data and sql_text as follows:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Extract the Event information from the Event Session 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;timestamp&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;cpu&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;duration&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;reads&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;writes&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;state&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;offset&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset_end&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;offset_end&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;nest_level&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@level)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;nest_level&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;,    
                (&lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;)+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, 
                ((&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset_end&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) 
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;) 
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset_end&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) 
                  &lt;/span&gt;&lt;span style="color:blue;"&gt;END &lt;/span&gt;&lt;span style="color:gray;"&gt;- &lt;/span&gt;&lt;span style="color:magenta;"&gt;ISNULL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;offset&lt;span style="color:gray;"&gt;, &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;) + &lt;/span&gt;1&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;statement_text_Xevents&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_sequence&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;activity_id
&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEADD&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, 
            &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEDIFF&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;GETUTCDATE&lt;/span&gt;&lt;span style="color:gray;"&gt;(), &lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@timestamp)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'datetime2'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[timestamp]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;session_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[session_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;cpu&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[cpu]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[duration]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;reads&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[reads]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;writes&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[writes]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;state&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[state]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;offset&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[offset]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;offset_end&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[offset_end]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;nest_level&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[nest_level]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;tsql_stack&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[tsql_stack]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;sql_text&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[sql_text]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;source_database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[source_database_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;object_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[object_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;object_type&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[object_type]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;36&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS uniqueidentifier&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;activity_id&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;38&lt;span style="color:gray;"&gt;, &lt;/span&gt;10&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS int&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;event_sequence
    &lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(   &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;.&lt;/span&gt;query&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data 
        &lt;span style="color:blue;"&gt;FROM 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;target_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;TargetData 
            &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;st 
            &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;s 
                &lt;span style="color:blue;"&gt;ON &lt;/span&gt;s&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_address 
            &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents' 
              &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;target_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
        &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;Data 
        &lt;span style="color:green;"&gt;-- Split out the Event Nodes 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;TargetData&lt;span style="color:gray;"&gt;.&lt;/span&gt;nodes &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;XEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;)   
    ) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;tab &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;results&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;If you run these two examples, you will notice immediately that something is not right with the statement_text_XEvents data, it didn’t parse out correctly.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_4BDE8FD2.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_2C9BE8FF.png" width="644" height="91" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I also validated that this same behavior exists in SQL Server Denali CTP1.&amp;#160; To look at this further and determine where exactly the problem might be, I used the plan_handle from the tsql_stack to get the sql text from sys.dm_exec_sql_text() and then offset parse that in the same manner to validate that the offset information is not the problem.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;offset&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;offset_end&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@level)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;nest_level&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;,    
                (&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)/&lt;/span&gt;2&lt;span style="color:gray;"&gt;)+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, 
                ((&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;) 
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
                  &lt;/span&gt;&lt;span style="color:blue;"&gt;END &lt;/span&gt;&lt;span style="color:gray;"&gt;- &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;) + &lt;/span&gt;1&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;statement_text_Xevents&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;, (&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)/&lt;/span&gt;2&lt;span style="color:gray;"&gt;)+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, 
        ((&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
          &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;)
         &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
         &lt;/span&gt;&lt;span style="color:blue;"&gt;END &lt;/span&gt;&lt;span style="color:gray;"&gt;- &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;) + &lt;/span&gt;1&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;statement_text_from_cache&lt;span style="color:gray;"&gt;, 
         &lt;/span&gt;sql_text
&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;tsql_stack&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[tsql_stack]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;sql_text&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[sql_text]
    &lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(   &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;.&lt;/span&gt;query&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data 
        &lt;span style="color:blue;"&gt;FROM 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;target_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;TargetData 
            &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;st 
            &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;s 
                &lt;span style="color:blue;"&gt;ON &lt;/span&gt;s&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_address 
            &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents' 
              &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;target_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
        &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;Data 
        &lt;span style="color:green;"&gt;-- Split out the Event Nodes 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;TargetData&lt;span style="color:gray;"&gt;.&lt;/span&gt;nodes &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;XEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;)   
    ) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;tab &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;results
&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_exec_sql_text&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'xs:hexBinary(substring((/frame/@handle)[1], 3))'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varbinary(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;st&lt;/pre&gt;

  &lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_7BE8E153.png" target="_blank"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_2EB8E7C8.png" width="644" height="94" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The information from the cache is correct, so there has to be something different about the sql_text Action output.&amp;#160; To figure out what that was, I changed my script slightly so that it would parse out each character in the text from cache and the sql_text Action to see what was different and where:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Extract the Event information from the Event Session 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;sv&lt;span style="color:gray;"&gt;.&lt;/span&gt;number &lt;span style="color:blue;"&gt;AS &lt;/span&gt;Position&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;ASCII&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;sv&lt;span style="color:gray;"&gt;.&lt;/span&gt;number&lt;span style="color:gray;"&gt;+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;1&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;cache_text&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;ASCII&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;, &lt;/span&gt;sv&lt;span style="color:gray;"&gt;.&lt;/span&gt;number&lt;span style="color:gray;"&gt;+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;1&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;sql_text
&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;tsql_stack&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[tsql_stack]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;sql_text&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[sql_text]
    &lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(   &lt;/span&gt;&lt;span style="color:green;"&gt;-- Get only one of the events this time
        &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT TOP &lt;/span&gt;1 XEvent&lt;span style="color:gray;"&gt;.&lt;/span&gt;query&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data 
        &lt;span style="color:blue;"&gt;FROM 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;target_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;TargetData 
            &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;st 
            &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;s 
                &lt;span style="color:blue;"&gt;ON &lt;/span&gt;s&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_address 
            &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents' 
              &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;target_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
        &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;Data 
        &lt;span style="color:green;"&gt;-- Split out the Event Nodes 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;TargetData&lt;span style="color:gray;"&gt;.&lt;/span&gt;nodes &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;XEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;)   
    ) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;tab &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;results
&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_exec_sql_text&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'xs:hexBinary(substring((/frame/@handle)[1], 3))'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varbinary(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;st
&lt;span style="color:gray;"&gt;CROSS JOIN &lt;/span&gt;&lt;span style="color:blue;"&gt;master&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;spt_values &lt;span style="color:blue;"&gt;AS &lt;/span&gt;sv
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;sv&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'P'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;sv&lt;span style="color:gray;"&gt;.&lt;/span&gt;number &lt;span style="color:gray;"&gt;&amp;lt;= &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_222B3AAC.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_29B6AA19.png" width="213" height="238" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What I found was that the carriage returns are missing from the sql_text Action in Extended Events.&amp;#160; We can work around that by doing a REPLACE(sql_text, CHAR(10), CHAR(13)+CHAR(10)) operation to return the carriage returns to the output.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Extract the Event information from the Event Session 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;timestamp&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;cpu&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;duration&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;reads&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;writes&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;state&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;,    
                (&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)/&lt;/span&gt;2&lt;span style="color:gray;"&gt;)+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, 
                ((&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;) 
                    &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) 
                  &lt;/span&gt;&lt;span style="color:blue;"&gt;END &lt;/span&gt;&lt;span style="color:gray;"&gt;- &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;) + &lt;/span&gt;1&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;statement_text_Xevents&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;, (&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)/&lt;/span&gt;2&lt;span style="color:gray;"&gt;)+&lt;/span&gt;1&lt;span style="color:gray;"&gt;, 
        ((&lt;/span&gt;&lt;span style="color:blue;"&gt;CASE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
          &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:gray;"&gt;-&lt;/span&gt;1 &lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATALENGTH&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;text&lt;/span&gt;&lt;span style="color:gray;"&gt;)
         &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetEnd)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
         &lt;/span&gt;&lt;span style="color:blue;"&gt;END &lt;/span&gt;&lt;span style="color:gray;"&gt;- &lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(/frame/@offsetStart)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;))/&lt;/span&gt;2&lt;span style="color:gray;"&gt;) + &lt;/span&gt;1&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;statement_text_from_cache&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;sql_text&lt;span style="color:gray;"&gt;,    
    &lt;/span&gt;event_sequence&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;activity_id
&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEADD&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, 
            &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEDIFF&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;GETUTCDATE&lt;/span&gt;&lt;span style="color:gray;"&gt;(), &lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@timestamp)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'datetime2'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[timestamp]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;session_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[session_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;cpu&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[cpu]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[duration]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;reads&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[reads]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;writes&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[writes]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;state&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[state]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;offset&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[offset]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;offset_end&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[offset_end]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;nest_level&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[nest_level]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;tsql_stack&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[tsql_stack]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;REPLACE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;sql_text&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:blue;"&gt;CHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:blue;"&gt;CHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;13&lt;span style="color:gray;"&gt;)+&lt;/span&gt;&lt;span style="color:blue;"&gt;CHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[sql_text]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;source_database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[source_database_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;object_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[object_id]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;object_type&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[object_type]&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;36&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS uniqueidentifier&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;activity_id&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;38&lt;span style="color:gray;"&gt;, &lt;/span&gt;10&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS int&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;event_sequence
    &lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(   &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;.&lt;/span&gt;query&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data 
        &lt;span style="color:blue;"&gt;FROM 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;target_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;TargetData 
            &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;st 
            &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;s 
                &lt;span style="color:blue;"&gt;ON &lt;/span&gt;s&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_address 
            &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents' 
              &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;target_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
        &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;Data 
        &lt;span style="color:green;"&gt;-- Split out the Event Nodes 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;TargetData&lt;span style="color:gray;"&gt;.&lt;/span&gt;nodes &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;XEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;)   
    ) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;tab &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;results
&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_exec_sql_text&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;tsql_stack&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'xs:hexBinary(substring((/frame/@handle)[1], 3))'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varbinary(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;st&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_0354C6CE.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_24B46C6A.png" width="644" height="86" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I filed this as a bug on Connect titled &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/639811/extended-events-sqlserver-sql-text-action-is-not-offset-parseable?wa=wsignin1.0#" target="_blank"&gt;Extended Events sqlserver.sql_text Action is not Offset Parseable&lt;/a&gt; after trading a couple of emails with Mike Wachal about this, and he has already replied to the connect item stating that they are looking at the difference between the two operations in the engine.&amp;#160; &lt;/p&gt;

&lt;h2&gt;SQL Server Denali&lt;/h2&gt;

&lt;p&gt;I was hesitant to even bother filing this as a bug because in SQL Server Denali CTP1, none of this is necessary to collect the statement, since the statement exists as a customizable column on the Events. &lt;/p&gt;

&lt;p&gt;In Denali CTP1, the sql_statement_starting Event has the following columns:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:teal;"&gt;name&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:teal;"&gt;column_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:teal;"&gt;column_type
&lt;/span&gt;&lt;span style="color:blue;"&gt;from &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns
&lt;/span&gt;&lt;span style="color:blue;"&gt;where &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'sql_statement_starting'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;and &lt;/span&gt;&lt;span style="color:teal;"&gt;column_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'readonly'
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_5B059479.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_34A3B12E.png" width="415" height="144" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The sql_statement_completed Event has the following columns:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:teal;"&gt;name&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:teal;"&gt;column_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:teal;"&gt;column_type
&lt;/span&gt;&lt;span style="color:blue;"&gt;from &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns
&lt;/span&gt;&lt;span style="color:blue;"&gt;where &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'sql_statement_completed'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;and &lt;/span&gt;&lt;span style="color:teal;"&gt;column_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt;&amp;gt; &lt;/span&gt;&lt;span style="color:red;"&gt;'readonly'
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_273D9E28.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_15CD3D50.png" width="367" height="255" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you compare the columns output by the sql_statement_completed Event in Denali CTP1, you will notice that it has significantly more columns in its base column payload, as well as having the statement as a customizable column.&amp;#160; In Denali CTP1, the only thing necessary to get the specific TSQL statement that is executing is to turn collection of the customizable column statement on using the collect_statement column.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;IF &lt;/span&gt;&lt;span style="color:gray;"&gt;EXISTS (&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;1 &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:teal;"&gt;name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;DROP EVENT SESSION &lt;/span&gt;&lt;span style="color:teal;"&gt;SQLStmtEvents &lt;/span&gt;&lt;span style="color:blue;"&gt;ON SERVER
GO
DECLARE &lt;/span&gt;&lt;span style="color:teal;"&gt;@SqlCmd &lt;/span&gt;&lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;) = &lt;/span&gt;&lt;span style="color:red;"&gt;N'
CREATE EVENT SESSION SQLStmtEvents
ON SERVER
ADD EVENT sqlserver.sql_statement_completed
(    SET collect_statement=1
    ACTION (sqlserver.sql_text, sqlserver.tsql_stack)
    WHERE (sqlserver.session_id = '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;@@SPID &lt;/span&gt;&lt;span style="color:blue;"&gt;AS NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;))+&lt;/span&gt;&lt;span style="color:red;"&gt;')    ),
ADD EVENT sqlserver.sql_statement_starting
(    SET collect_statement=1
    ACTION (sqlserver.sql_text, sqlserver.tsql_stack)
    WHERE (sqlserver.session_id = '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;@@SPID &lt;/span&gt;&lt;span style="color:blue;"&gt;AS NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;))+&lt;/span&gt;&lt;span style="color:red;"&gt;')    )
ADD target package0.ring_buffer
WITH (MAX_DISPATCH_LATENCY=5SECONDS, TRACK_CAUSALITY=ON)'&lt;/span&gt;&lt;span style="color:gray;"&gt;;
&lt;/span&gt;&lt;span style="color:blue;"&gt;EXEC&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;@SqlCmd&lt;/span&gt;&lt;span style="color:gray;"&gt;);
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
ALTER EVENT SESSION &lt;/span&gt;&lt;span style="color:teal;"&gt;SQLStmtEvents
&lt;/span&gt;&lt;span style="color:blue;"&gt;ON SERVER
STATE&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:teal;"&gt;START&lt;/span&gt;&lt;span style="color:gray;"&gt;;
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO

SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;* 
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;objects

&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;* 
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM master&lt;/span&gt;&lt;span style="color:gray;"&gt;..&lt;/span&gt;&lt;span style="color:teal;"&gt;spt_values
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;N'P'

&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;*
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;INFORMATION_SCHEMA&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;TABLES
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;With this turned on, all we have to do is query the Event Data and parse out the statement column to know the specific statement that was executing.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Extract the Event information from the Event Session 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;&lt;span style="color:teal;"&gt;event_name&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;timestamp&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:teal;"&gt;cpu&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:teal;"&gt;duration&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:teal;"&gt;reads&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:teal;"&gt;writes&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;state&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:blue;"&gt;statement&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:teal;"&gt;activity_id&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:teal;"&gt;event_sequence
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;event_name&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEADD&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;hh&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
            &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEDIFF&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;hh&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;GETUTCDATE&lt;/span&gt;&lt;span style="color:gray;"&gt;(), &lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@timestamp)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'datetime2'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[timestamp]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;cpu&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[cpu]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[duration]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;reads&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[reads]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;writes&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[writes]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;state&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[state]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;statement&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(max)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;[statement]&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;1&lt;span style="color:gray;"&gt;, &lt;/span&gt;36&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS uniqueidentifier&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;&lt;span style="color:teal;"&gt;activity_id&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUBSTRING&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;value&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;attach_activity_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;38&lt;span style="color:gray;"&gt;, &lt;/span&gt;10&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS int&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;&lt;span style="color:teal;"&gt;event_sequence
    &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(   &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:teal;"&gt;XEvent&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;query&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;event_data 
        &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;target_data &lt;/span&gt;&lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;TargetData 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;&lt;span style="color:teal;"&gt;st 
            &lt;/span&gt;&lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;&lt;span style="color:teal;"&gt;s 
                &lt;/span&gt;&lt;span style="color:blue;"&gt;ON &lt;/span&gt;&lt;span style="color:teal;"&gt;s&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:teal;"&gt;st&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;event_session_address 
            &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:teal;"&gt;name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'SQLStmtEvents' 
              &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;target_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
        &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;Data 
        &lt;/span&gt;&lt;span style="color:green;"&gt;-- Split out the Event Nodes 
        &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;&lt;span style="color:teal;"&gt;TargetData&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;nodes &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;XEventData &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;XEvent&lt;/span&gt;&lt;span style="color:gray;"&gt;)   
    ) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;tab &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;event_data&lt;/span&gt;&lt;span style="color:gray;"&gt;)
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;results
&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="code"&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_2477E935.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_5747EFA9.png" width="644" height="102" /&gt;&lt;/a&gt; &lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;The new statement column in Denali CTP 1 eliminates the need to do offset parsing of the sql_text Action entirely.&amp;#160; Knowing that, it really became clear to me that the addition of the offset information in the Event’s base column payload was really useless, and for that I submitted a different Connect feedback item &lt;a href="https://connect.microsoft.com/SQLServer/feedback/details/639818/extended-events-remove-data-from-event-output-that-is-available-by-actions"&gt;Extended Events - Remove data from Event output that is available by Actions&lt;/a&gt;.&amp;#160; You might ask why does this matter?&amp;#160; It matters because for everytime the Event fires, this information is included in the Event Data for the Event.&amp;#160; Since Event Data is materialized as XML, this becomes needless bloat of the Event Data output for the Event and it really is useless information.&amp;#160; If you really wanted to collect the offset information, you could add the tsql_stack Action to the Events to collect it, so there is no reason for the Event to carry this information by default.&lt;/p&gt;

&lt;p&gt;So there you have it.&amp;#160; How to parse the sqlserver.sql_text Action in SQL Server 2008 using offset information to isolate the actual executing statement from a multi-statement batch using a work around, and why its not necessary to do this in SQL Server Denali going forward. &lt;/p&gt;</description></item><item><title>Downgrading a database : &amp;quot;You can't get there from here!&amp;quot;</title><link>http://sqlblog.com/blogs/aaron_bertrand/archive/2011/01/21/downgrading-a-database-you-can-t-get-there-from-here.aspx</link><pubDate>Fri, 21 Jan 2011 23:45:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32831</guid><dc:creator>AaronBertrand</dc:creator><description>&lt;p&gt;I see this question a lot: "I have a SQL Server 2008 R2 database.&amp;nbsp; Can I attach it to a SQL Server 2008 SP2 instance?"&lt;/p&gt;
&lt;p&gt;Part of this stems from the confusion over exactly what 2008 R2 is in the first place.&amp;nbsp; It is not a service pack to SQL Server 2008; it is its own, full-fledged version.&amp;nbsp; A lot of people don't fully realize this because of various reasons, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;they're on software assurance, so the upgrade to 2008 R2 was covered by their 2008 licenses, and they therefore didn't really realize it was a full version;&lt;/li&gt;
&lt;li&gt;they're not running 2008 R2 in production, but they do have it in development, and didn't notice the @@VERSION change; or,&lt;/li&gt;
&lt;li&gt;they're confused by the horrible naming choice.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;But to answer the question: No, you cannot backup/restore or detach/attach a SQL Server 2008 R2 database to any previous version, nor can you log ship or mirror in that direction.&amp;nbsp; That is also true in going from Denali to 2008 R2/2008/2005, or from 2008 to 2005, or anything from the last 6 years to 2000 - you just can't do it.&amp;nbsp; A lot of people expect to be able to just set the compatibility level lower, however that is not the answer.&amp;nbsp; It is the database version and the internal file/page structures that matter here; compatibility level just tells the parser and engine how to handle certain features.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;font size="4"&gt;What About Same Version, Lower Service Pack?&lt;/font&gt; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;Well, I should have known this question would come up too.&amp;nbsp; Let's say you are building your database in SQL Server 2008 SP2 and you are ready to deploy it to production, but production is still at SP1.&amp;nbsp; You want to get the code to production but the cycle to introduce SP2 there is far too long.&amp;nbsp; (Now, of course, and with the understanding that hardware equivalency is
 tougher, there should be a QA environment that matches production 
exactly in terms of software / configuration / version.&amp;nbsp; So it shouldn't
 be going from dev to production in this manner, but I understand this 
is the reality for many people.)&lt;/p&gt;
&lt;p&gt;That aside, can you do it?&amp;nbsp; Yes.&amp;nbsp; I set out to prove this.&amp;nbsp; In a VM I laid down three instances of SQL Server 2008: one at RTM, one at SP1, and one at SP2.&amp;nbsp; I created two databases in SP2: SP2DB, and SP2DB_15K.&amp;nbsp; I created one database in SP1: SP1DB. I then took backups of SP1DB and SP2DB, and tried restoring them on the RTM instance.&amp;nbsp; This worked fine and I was able to access the databases. &lt;br&gt;&lt;/p&gt;
&lt;p&gt;On the SP2 instance, I ran the following command, to enable 15K partitions for the SP2DB_15K database:&lt;/p&gt;

&lt;blockquote&gt;
&lt;table bgcolor="#eeeeee" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;pre style="padding:10px 20px;font-size:12px;font-family:consolas,lucida console,courier new,courier;-moz-background-inline-policy:continuous;"&gt;&lt;font color="blue"&gt;EXEC&lt;/font&gt; dbo.sp_db_increased_partitions &lt;font color="red"&gt;'SP2DB_15K'&lt;font color="gray"&gt;,&lt;/font&gt; 'ON'&lt;font color="gray"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;br&gt;&lt;font color="blue"&gt;GO&lt;/font&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/blockquote&gt; 



&lt;p&gt;Then I backed up the database and tried to restore it on the RTM instance.&amp;nbsp; I received the following error:&lt;/p&gt;


&lt;blockquote&gt;
&lt;table bgcolor="#eeeeee" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div style="padding:10px 20px;font-size:12px;font-family:consolas,lucida console,courier new,courier;-moz-background-inline-policy:continuous;color:red;"&gt;Msg 3169, Level 16, State 1, Line 1&lt;br&gt;The database was backed up on a server running version 10.00.4000. That version is incompatible with this server, which is running version 10.00.1600. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server.&lt;br&gt;Msg 3013, Level 16, State 1, Line 1&lt;br&gt;RESTORE DATABASE is terminating abnormally.&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/blockquote&gt; 


&lt;p&gt;If I tried to restore it on the SP1 instance, I received an almost identical error (predictably, the only thing that changes is the version string):&lt;/p&gt;



&lt;blockquote&gt;
&lt;table bgcolor="#eeeeee" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div style="padding:10px 20px;font-size:12px;font-family:consolas,lucida console,courier new,courier;-moz-background-inline-policy:continuous;color:red;"&gt;Msg 3169, Level 16, State 1, Line 2&lt;br&gt;The database was backed up on a server running version 10.00.4000. That version is incompatible with this server, which is running version 10.00.2531. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server.&lt;br&gt;Msg 3013, Level 16, State 1, Line 2&lt;br&gt;RESTORE DATABASE is terminating abnormally.
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/blockquote&gt; 



&lt;p&gt;So, this exception aside, the answer is, yes, at least in SQL Server 2008, you can take a backup or detached database and restore it on an earlier service pack or RTM.&amp;nbsp; Will this always be true?&amp;nbsp; It's tough to say.&amp;nbsp; Denali SP1 may introduce some change to the internal structure or database version, optional or otherwise, that will prevent it from being restored on RTM, just like our exception above.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;font size="4"&gt;Going Forward Always Works, Right?&lt;/font&gt; &lt;br&gt;&lt;/p&gt;
&lt;p&gt;As for the other direction, it is usually fine to backup/restore, detach/attach, log ship or mirror from an older version to a newer version; however, there are exceptions.&amp;nbsp; For example, Denali does not support the 80 compatibility level, so restoring or attaching a SQL Server 2000 database on a Denali instance is out of the question (I &lt;a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2010/11/18/sql-server-v-next-denali-restoring-a-sql-server-2000-database.aspx" title="http://sqlblog.com/blogs/aaron_bertrand/archive/2010/11/18/sql-server-v-next-denali-restoring-a-sql-server-2000-database.aspx" target="_blank"&gt;blogged about this here in November&lt;/a&gt;).&amp;nbsp; Another example is with SQL Server 2008 SP2 - if you have enabled support for 15,000 partitions, the internal database version is upgraded to 662, and you cannot then migrate to SQL Server 2008 R2 because R2 does not understand that version (it is expecting 661) - in this case you will have to wait until 2008 R2 SP1, when support for 15K partitions is added and the database versions will once again have an upgrade path.&amp;nbsp; Here is what happens when I try to restore the SP2DB_15K database on an R2 instance:&lt;/p&gt;


&lt;blockquote&gt;
&lt;table bgcolor="#eeeeee" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div style="padding:10px 20px;font-size:12px;font-family:consolas,lucida console,courier new,courier;-moz-background-inline-policy:continuous;color:red;"&gt;Msg 3169, Level 16, State 1, Line 1&lt;br&gt;The database was backed up on a server running version 10.00.4000. That version is incompatible with this server, which is running version 10.50.1746. Either restore the database on a server that supports the backup, or use a backup that is compatible with this server.&lt;br&gt;Msg 3013, Level 16, State 1, Line 1&lt;br&gt;RESTORE DATABASE is terminating abnormally.
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/blockquote&gt; 


&lt;p&gt;(Note that this doesn't happen with the SP2DB database, which did not have 15K partitions enabled.) &lt;br&gt;&lt;/p&gt;
&lt;p&gt;It does work on Denali, however; here is what happens when I restore the SP2DB_15K database on a Denali CTP1 instance:&lt;/p&gt;


&lt;blockquote&gt;
&lt;table bgcolor="#eeeeee" cellpadding="0" cellspacing="0"&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;div style="padding:10px 20px;font-size:12px;font-family:consolas,lucida console,courier new,courier;-moz-background-inline-policy:continuous;"&gt;Processed 160 pages for database 'SP2DB_15K', file 'SP2DB_15K' on file 1.&lt;br&gt;Processed 2 pages for database 'SP2DB_15K', file 'SP2DB_15K_log' on file 1.&lt;br&gt;Converting database 'SP2DB_15K' from version 662 to the current version 684.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 662 to version 668.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 668 to version 669.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 669 to version 670.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 670 to version 671.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 671 to version 672.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 672 to version 673.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 673 to version 674.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 674 to version 675.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 675 to version 676.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 676 to version 677.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 677 to version 678.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 678 to version 679.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 679 to version 680.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 680 to version 681.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 681 to version 682.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 682 to version 683.&lt;br&gt;Database 'SP2DB_15K' running the upgrade step from version 683 to version 684.&lt;br&gt;RESTORE DATABASE successfully processed 162 pages in 0.021 seconds (60.174 MB/sec).
&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/blockquote&gt; &lt;p&gt;And the messaging is similar for the other databases from the 2008 instance, except their version starts at 661 instead of 662.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;font size="4"&gt;But I'm Still Stuck!&lt;br&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;So, you have a database that has been upgraded to 2008 R2 and you need to get it back onto 2008 or 2005?&amp;nbsp; There is no straight path for this scenario; it's kind of like &lt;a href="http://www.cartogrammar.com/blog/you-cant-get-there-from-here/" title="http://www.cartogrammar.com/blog/you-cant-get-there-from-here/" target="_blank"&gt;driving in Boston&lt;/a&gt;.&amp;nbsp; Assuming you aren't using any features that are exclusive to the newer version (and that you can suspend activity against the newer database temporarily), you can use a schema comparison tool like &lt;a href="http://www.red-gate.com/products/sql-development/sql-compare/" title="http://www.red-gate.com/products/sql-development/sql-compare/" target="_blank"&gt;Red Gate's SQL Compare&lt;/a&gt;, to build the modules and schema in an empty database on the older version, then use &lt;a href="http://msdn.microsoft.com/en-us/library/bb522535.aspx" title="http://msdn.microsoft.com/en-us/library/bb522535.aspx" target="_blank"&gt;Integration Services&lt;/a&gt; to migrate the data.&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Using Extended Events in SQL Server Denali CTP1 to Map out the TransactionLog SQL Trace Event EventSubClass Values</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2011/01/03/using-extended-events-in-sql-server-denali-ctp1-to-map-out-the-transactionlog-sql-trace-event-eventsubclass-values.aspx</link><pubDate>Mon, 03 Jan 2011 06:39:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32239</guid><dc:creator>jmkehayias</dc:creator><description>&lt;P&gt;John Sansom (&lt;A href="http://www.johnsansom.com/" target=_blank&gt;Blog&lt;/A&gt;|&lt;A href="http://twitter.com/JohnSansom" target=_blank&gt;Twitter&lt;/A&gt;) asked on the &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/174cefc8-52b8-4bc2-9c00-d92f84031007/" target=_blank&gt;MSDN Forums&lt;/A&gt; about the meaning/description for the numeric values returned by the EventSubClass column of the TransactionLog SQL Trace Event.&amp;nbsp; John pointed out that this information is not available for this Event like it is for the other events in the Books Online Topic (&lt;A href="http://msdn.microsoft.com/en-us/library/ms190391.aspx"&gt;TransactionLog Event Class&lt;/A&gt;), or in the &lt;A href="http://msdn.microsoft.com/en-us/library/ms178608(v=sql.90).aspx"&gt;sys.trace_subclass_values&lt;/A&gt; DMV.&amp;nbsp; John wanted to know if there was a way to determine this information.&amp;nbsp; I did some looking and found an old SQL Server 2000 BOL topic, &lt;A href="http://technet.microsoft.com/en-us/library/aa173909(SQL.80).aspx"&gt;Transactions Data Columns&lt;/A&gt; gave more information about what the EventSubClass means and defined the column as:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Type of transaction log event, such as BEGINXACT(null).&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;After seeing this, I knew it would be possible to map this out using the new sqlserver.transaction_log Event in Extended Events, which I blogged about last month in my blog post, &lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/22/an-xevent-a-day-22-of-31-the-future-fn-dblog-no-more-tracking-transaction-log-activity-in-denali.aspx"&gt;An XEvent a Day (22 of 31) – The Future – fn_dblog() No More? Tracking Transaction Log Activity in Denali&lt;/A&gt;.&amp;nbsp; To start with I created a database with database_id = 5 on my VM that I would run a number of test workloads against.&amp;nbsp; Then I created a filtered Extended Events Session for the sqlserver.transaction_log Event in Extended Events in a SQL Server Denali CTP1 VM on my laptop for the sqlserver.transaction_log Event with a Predicate on database_id = 5 for the Event.&amp;nbsp; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;CREATE EVENT SESSION &lt;/SPAN&gt;tranlog
&lt;SPAN style="COLOR:blue;"&gt;ON SERVER
ADD EVENT &lt;/SPAN&gt;sqlserver&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;transaction_log
&lt;SPAN style="COLOR:gray;"&gt;(    &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ACTION &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;sqlserver&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;event_sequence&lt;SPAN style="COLOR:gray;"&gt;)
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;WHERE &lt;/SPAN&gt;database_id &lt;SPAN style="COLOR:gray;"&gt;= &lt;/SPAN&gt;5&lt;SPAN style="COLOR:gray;"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;ADD target &lt;/SPAN&gt;package0&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;ring_buffer
&lt;SPAN style="COLOR:blue;"&gt;WITH &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;MAX_DISPATCH_LATENCY &lt;SPAN style="COLOR:gray;"&gt;= &lt;/SPAN&gt;5SECONDS&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;EVENT_RETENTION_MODE&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;NO_EVENT_LOSS&lt;SPAN style="COLOR:gray;"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
ALTER EVENT SESSION &lt;/SPAN&gt;tranlog
&lt;SPAN style="COLOR:blue;"&gt;ON SERVER
STATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;=&lt;/SPAN&gt;START
&lt;SPAN style="COLOR:blue;"&gt;GO&lt;/SPAN&gt;&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I then created a SQL Trace in Profiler that also captured the TransactionLog Event with all of the available columns into a Trace Table named TranLogTrace in the master database that also had a filter on DatabaseID = 5.&amp;nbsp; Then I ran a couple of workload samples against the demo database (Note: These tests do not necessarily represent a complete workload.) &lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;CREATE TABLE &lt;/SPAN&gt;Test &lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;rowid &lt;SPAN style="COLOR:blue;"&gt;INT IDENTITY PRIMARY KEY&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
BEGIN TRANSACTION
GO
INSERT INTO &lt;/SPAN&gt;Test &lt;SPAN style="COLOR:blue;"&gt;DEFAULT VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;;
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO &lt;/SPAN&gt;100
&lt;SPAN style="COLOR:blue;"&gt;ROLLBACK
GO
BEGIN TRANSACTION
GO
INSERT INTO &lt;/SPAN&gt;Test &lt;SPAN style="COLOR:blue;"&gt;DEFAULT VALUES&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;;
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO &lt;/SPAN&gt;100
&lt;SPAN style="COLOR:blue;"&gt;COMMIT
GO&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;Based on this admittedly, overly simplistic test, the following mappings to of the EventSubClass of the SQL Trace TransactionLog using the following the parsing of the Extended Event Session Data as a comparison against the SQL Trace TransactionLog Event Data can be made:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;TABLE style="WIDTH:291pt;BORDER-COLLAPSE:collapse;" cellSpacing=0 cellPadding=0&gt;





&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:#ddd9c3;WIDTH:73pt;HEIGHT:15pt;BORDER-TOP:windowtext 0.5pt solid;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl64&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;EventSubClass&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:#ddd9c3;WIDTH:130pt;BORDER-LEFT-COLOR:windowtext;BORDER-TOP:windowtext 0.5pt solid;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl64&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;operation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:#ddd9c3;WIDTH:88pt;BORDER-LEFT-COLOR:windowtext;BORDER-TOP:windowtext 0.5pt solid;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl64&gt;&lt;STRONG&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;context&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;257&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_FORMAT_PAGE&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;HEAP&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;266&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_FORMAT_PAGE&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;IAM&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;514&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_INSERT_ROWS&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;CLUSTERED&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;515&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_INSERT_ROWS&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;INDEX_LEAF&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;787&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_DELETE_ROWS&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;MARK_AS_GHOST&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;1026&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_MODIFY_ROW&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;CLUSTERED&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;1034&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_MODIFY_ROW&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;IAM&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;1035&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_MODIFY_ROW&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;PFS&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;1044&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_MODIFY_ROW&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;BOOT_PAGE&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;4866&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_ROOT_CHANGE&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;CLUSTERED&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;32768&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_BEGIN_XACT&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;33024&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_COMMIT_XACT&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;33280&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_ABORT_XACT&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;35072&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_HOBT_DDL&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;35840&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_HOBT_DELTA&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;36096&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_LOCK_XACT&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;45056&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_CREATE_ALLOCCHAIN&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT:15pt;"&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BORDER-LEFT:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;HEIGHT:15pt;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;56576&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;LOP_INVALIDATE_CACHE&lt;/SPAN&gt;&lt;/TD&gt;
&lt;TD style="BORDER-BOTTOM:windowtext 0.5pt solid;BACKGROUND-COLOR:transparent;BORDER-TOP-COLOR:windowtext;BORDER-LEFT-COLOR:windowtext;BORDER-RIGHT:windowtext 0.5pt solid;" class=xl63&gt;&lt;SPAN style="FONT-FAMILY:calibri;"&gt;NULL&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;This is no way a complete mapping of the to entire subset of EventSubClass value’s of the SQL Trace Event, but it shows that there is a mechanism available through Extended Events that can map this kind of information out.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;While I was playing with this, I did some testing along the lines of the &lt;A href="http://social.msdn.microsoft.com/Forums/en-US/sqldatabaseengine/thread/174cefc8-52b8-4bc2-9c00-d92f84031007/" target=_blank&gt;original question of the MSDN Forums post&lt;/A&gt;, and there is nothing in the TransactionLog Event that you could key on to know the log truncated.&amp;nbsp; No Transaction Log record is generated that specifically says the log truncated, it opens a transaction, writes to the boot_page, and closes the transaction all in different log records.&amp;nbsp; Keep in mind that the boot page gets written to by a number of other operations in SQL Server, so keying on it is not the answer.&amp;nbsp; For example, if the log is failing to truncate because there is an open transaction and it has to grow, the growth would trigger a write to the boot page.&amp;nbsp; Attempting to key in on TransactionLog Events in SQL Trace that write to the Boot Page alone would be short sighted, and incorrect in this type of analysis alone.&lt;/P&gt;</description></item><item><title>An XEvent a Day (31 of 31) – Event Session DDL Events</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/31/an-xevent-a-day-31-of-31-event-session-ddl-events.aspx</link><pubDate>Fri, 31 Dec 2010 19:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32198</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;To close out this month’s series on Extended Events we’ll look at the DDL Events for the Event Session DDL operations, and how those can be used to track changes to Event Sessions and determine all of the possible outputs that could exist from an Extended Event Session.&amp;#160; One of my least favorite quirks about Extended Events is that there is no way to determine the Events and Actions that may exist inside a Target, except to parse all of the the captured data.&amp;#160; Information about the Event Session does exist in the &lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/04/an-xevent-a-day-4-31-querying-the-session-definition-and-active-session-dmv-s.aspx"&gt;Session Definition Catalog Views and Active Session DMV’s&lt;/a&gt;, but as you change an Event Sessions Events and Actions while it is running, the information in these change as well, so it is possible that a Target has Events and Actions that are not returned by the current information available about the Event Session.&amp;#160; This is where the DDL Events for the Event Session DDL operations can be useful, if the appropriate framework is deployed.&lt;/p&gt;  &lt;p&gt;The DDL Events for Extended Events are not currently documented in the Books Online.&amp;#160; I only recently learned about them from Mike Wachal during a discussion about what I thought was missing from Extended Events.&amp;#160; This is simply an oversight in the documentation, and something that Mike has stated will be fixed, it doesn’t mean that the DDL Events are undocumented and subject to change without notice like other undocumented features of SQL Server.&amp;#160; We can find the DDL Events for Extended Events in the sys.event_notification_event_types.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT
    type&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:teal;"&gt;parent_type
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;event_notification_event_types
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name &lt;/span&gt;&lt;span style="color:gray;"&gt;LIKE &lt;/span&gt;&lt;span style="color:red;"&gt;'%SESSION%'
&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_2FD260B8.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_0D2E223D.png" width="341" height="101" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These can be used just like any other DDL Event to create a DDL Trigger or Event Notification that takes action when one of the DDL operations occurs.&amp;#160; We can use this to log the DDL to track our changes over time, and we can also use it to create a tracking table of the possible outputs from our Event Session, ensuring that we know what information it may have collected when we parse the Event data from the Targets.&amp;#160; We can also use this information to simplify the generation of our XQuery XPATH statements to parse the data from the Targets with a little extra work.&amp;#160; &lt;/p&gt;

&lt;p&gt;In all of my servers, I have a standard database named sqladmin that I keep DBA related information and objects.&amp;#160; For the examples, I will create this database and use it in all the code.&amp;#160; If you have a different database, the scripts can easily be changed to create the objects in that database.&amp;#160; The first thing we’ll do is create our database, and two tables, one for tracking the DDL operations and the other for tracking all of the possible outputs for our Event Session.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE DATABASE &lt;/span&gt;sqladmin
&lt;span style="color:blue;"&gt;GO
USE &lt;/span&gt;sqladmin
&lt;span style="color:blue;"&gt;GO
CREATE TABLE &lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_DDLOperations
&lt;span style="color:gray;"&gt;( &lt;/span&gt;DDLEventData &lt;span style="color:blue;"&gt;XML&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
  &lt;/span&gt;ChangeDate &lt;span style="color:blue;"&gt;DATETIME DEFAULT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
  &lt;/span&gt;LoginName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;DEFAULT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;SUSER_SNAME&lt;/span&gt;&lt;span style="color:gray;"&gt;()),
  &lt;/span&gt;ProgramName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;DEFAULT&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;program_name&lt;/span&gt;&lt;span style="color:gray;"&gt;())
);
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
CREATE TABLE &lt;/span&gt;XEvents_SessionOutputs
&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;EventSessionName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;EventName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;EventID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;ColumnID &lt;span style="color:blue;"&gt;INT&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;ColumnName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;NodeType &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;DataType &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;XMLLocation &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;),
    &lt;/span&gt;TypePrecidence &lt;span style="color:blue;"&gt;INT
&lt;/span&gt;&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;The XEvents_SessionOutputs table will have multiple rows for each Event Session defined on the server that track the EventName, the output ColumnName, the NodeType for the data element in the Event XML, the SQL DataType returned by the output, the XMLLocation for where the data of interest exists, and a TypePrecidence value that can be used when multiple Events return the same Data Element with different DataTypes, ensuring that we can pick the most compatible DataType for the output column.&amp;#160; The table also tracks the Event ID in the Event Session for the Event, the Column ID for the output column so that grouping and ordering can be performed during code generation from this table.&lt;/p&gt;

&lt;p&gt;To get the SQL DataType that an output returns, we have to look at the output type_name in the Extended Events metadata for the output column or Action.&amp;#160; To make this easier to do and allow for code reuse, I create a view that maps the type_name in Extended Events to corresponding SQL DataType.&amp;#160; Since Maps can be a type_name in Extended Events, the view queries the sys.dm_xe_map_values DMV and calculates the maximum length of the map_value column for each Map, and then uses the nvarchar datatype and rounds the length up to the nearest power of 10 (ok, it doesn’t actually round but that is the effect of the math operations).&amp;#160; For the actual Event data columns in the base payload, the type_name is transposed to the equivalent SQL DataType that is compatible with XQuery.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE VIEW &lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XETypeToSQLType 
&lt;span style="color:blue;"&gt;AS
    SELECT 
        &lt;/span&gt;XETypeName &lt;span style="color:gray;"&gt;= &lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;name&lt;span style="color:gray;"&gt;, 
        &lt;/span&gt;SQLTypeName &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar('&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;LEN&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;map_value&lt;span style="color:gray;"&gt;))-(&lt;/span&gt;&lt;span style="color:magenta;"&gt;MAX&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;LEN&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;map_value&lt;span style="color:gray;"&gt;))%&lt;/span&gt;10&lt;span style="color:gray;"&gt;) + &lt;/span&gt;10 &lt;span style="color:blue;"&gt;AS VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;4&lt;span style="color:gray;"&gt;))+&lt;/span&gt;&lt;span style="color:red;"&gt;')'&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;XMLLocation &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'text'&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;TypePrecidence &lt;span style="color:gray;"&gt;= &lt;/span&gt;5
    &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns &lt;/span&gt;oc
    &lt;span style="color:gray;"&gt;LEFT JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_map_values &lt;/span&gt;mv
        &lt;span style="color:blue;"&gt;ON &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;type_package_guid &lt;span style="color:gray;"&gt;= &lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;object_package_guid
            &lt;span style="color:gray;"&gt;AND &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
    &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;column_type &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'data'
      &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;name &lt;span style="color:gray;"&gt;IS NOT NULL
    &lt;/span&gt;&lt;span style="color:blue;"&gt;GROUP BY &lt;/span&gt;mv&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
&lt;span style="color:blue;"&gt;UNION &lt;/span&gt;&lt;span style="color:gray;"&gt;ALL
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;XETypeName &lt;span style="color:gray;"&gt;= &lt;/span&gt;o&lt;span style="color:gray;"&gt;.&lt;/span&gt;name&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;SQLTypeName &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;CASE 
                            WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;IN (&lt;/span&gt;&lt;span style="color:red;"&gt;'int8'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int16'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int32'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint8'&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
                                    &lt;/span&gt;&lt;span style="color:red;"&gt;'uint16'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint32'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'float32'&lt;/span&gt;&lt;span style="color:gray;"&gt;) 
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:red;"&gt;'int'
                            &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;IN (&lt;/span&gt;&lt;span style="color:red;"&gt;'int64'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint64'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'float64'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'
                            &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'boolean'
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(10)' &lt;/span&gt;&lt;span style="color:green;"&gt;--true/false returned
                            &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'guid'
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;&lt;span style="color:red;"&gt;'uniqueidentifier'
                            &lt;/span&gt;&lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'
                        &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;XMLLocation &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'value'&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;TypePrecidence &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;CASE 
                            WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;IN (&lt;/span&gt;&lt;span style="color:red;"&gt;'int8'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int16'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int32'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint8'&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
                                    &lt;/span&gt;&lt;span style="color:red;"&gt;'uint16'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint32'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'float32'&lt;/span&gt;&lt;span style="color:gray;"&gt;) 
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;1
                            &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;IN (&lt;/span&gt;&lt;span style="color:red;"&gt;'int64'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'uint64'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'float64'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;2
                            &lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'boolean'
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;3 &lt;span style="color:green;"&gt;--true/false returned
                            &lt;/span&gt;&lt;span style="color:blue;"&gt;WHEN &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'guid'
                                &lt;/span&gt;&lt;span style="color:blue;"&gt;THEN &lt;/span&gt;3
                            &lt;span style="color:blue;"&gt;ELSE &lt;/span&gt;5
                         &lt;span style="color:blue;"&gt;END
    FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_objects &lt;/span&gt;o
    &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;object_type &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'type'
      &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:magenta;"&gt;TYPE_NAME &lt;/span&gt;&lt;span style="color:gray;"&gt;!= &lt;/span&gt;&lt;span style="color:red;"&gt;'null'
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Using this view, we can create another view that queries the Session Definition Catalog Views, to retrieve the output columns for an Event Session in a format that matches our XEvents_SessionOutputs table.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE VIEW &lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XESession_OutputsFromDMVs
&lt;span style="color:blue;"&gt;AS
        &lt;/span&gt;&lt;span style="color:green;"&gt;-- Find a list of all the possible output columns
        &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
            &lt;/span&gt;ses&lt;span style="color:gray;"&gt;.&lt;/span&gt;name &lt;span style="color:blue;"&gt;AS &lt;/span&gt;EventSessionName&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;name &lt;span style="color:blue;"&gt;AS &lt;/span&gt;EventName&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_id &lt;span style="color:blue;"&gt;AS &lt;/span&gt;EventID&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;column_id &lt;span style="color:blue;"&gt;AS &lt;/span&gt;ColumnID&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;name &lt;span style="color:blue;"&gt;AS &lt;/span&gt;ColumnName&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;&lt;span style="color:red;"&gt;'data' &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;NodeType&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;SQLTypeName &lt;span style="color:blue;"&gt;AS &lt;/span&gt;DataType&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;TypePrecidence
        &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;server_event_sessions &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;ses
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;server_event_session_events &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;sese
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;ses&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_packages &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;p 
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;package &lt;span style="color:gray;"&gt;= &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;oc 
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
                &lt;span style="color:gray;"&gt;AND &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;object_package_guid &lt;span style="color:gray;"&gt;= &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;guid
        &lt;/span&gt;&lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;XETypeToSQLType &lt;span style="color:blue;"&gt;AS &lt;/span&gt;xetst
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;XETypeName
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;oc&lt;span style="color:gray;"&gt;.&lt;/span&gt;column_type &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'data'
    &lt;/span&gt;&lt;span style="color:blue;"&gt;UNION
        SELECT 
            &lt;/span&gt;ses&lt;span style="color:gray;"&gt;.&lt;/span&gt;name&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;name&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_id&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;999 &lt;span style="color:blue;"&gt;AS &lt;/span&gt;column_id&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;name&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;&lt;span style="color:red;"&gt;'action'&lt;/span&gt;&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;SQLTypeName&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;,
            &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;TypePrecidence
        &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;server_event_sessions &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;ses
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;server_event_session_events &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;sese
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;ses&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;server_event_session_actions &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;sesa
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;ses&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_id
                &lt;span style="color:gray;"&gt;AND &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;sese&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_id
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_packages &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;p
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;package &lt;span style="color:gray;"&gt;= &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_objects &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;o
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;guid &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;o&lt;span style="color:gray;"&gt;.&lt;/span&gt;package_guid
                &lt;span style="color:gray;"&gt;AND &lt;/span&gt;sesa&lt;span style="color:gray;"&gt;.&lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;o&lt;span style="color:gray;"&gt;.&lt;/span&gt;name
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;XETypeToSQLType &lt;span style="color:blue;"&gt;AS &lt;/span&gt;xetst
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;o&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;xetst&lt;span style="color:gray;"&gt;.&lt;/span&gt;XETypeName
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;o&lt;span style="color:gray;"&gt;.&lt;/span&gt;object_type &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'action'
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;We can then create a Server Level DDL Trigger for the DDL_EVENT_SESSION_EVENTS group that will log the DDL operation to the XEvents_DDLOperations table, and at the same time populate the output information in the XEvents_SessionOutputs table when an Event Session is created, add any new outputs when an Event Session is altered, and delete the Event Session information when an Event Session is dropped.&amp;#160; By adding new outputs when a Event Session is altered, we maintain a record of the original outputs, even if the Event was dropped from the Event Session.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE TRIGGER &lt;/span&gt;XEvents_DDLTrigger
&lt;span style="color:blue;"&gt;ON &lt;/span&gt;&lt;span style="color:gray;"&gt;ALL &lt;/span&gt;&lt;span style="color:blue;"&gt;SERVER 
FOR &lt;/span&gt;DDL_EVENT_SESSION_EVENTS
&lt;span style="color:blue;"&gt;AS
BEGIN
    SET NOCOUNT ON&lt;/span&gt;&lt;span style="color:gray;"&gt;;
    &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@EventData &lt;span style="color:blue;"&gt;XML &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:magenta;"&gt;EVENTDATA&lt;/span&gt;&lt;span style="color:gray;"&gt;();
    &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT INTO &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_DDLOperations &lt;span style="color:gray;"&gt;(&lt;/span&gt;DDLEventData&lt;span style="color:gray;"&gt;)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@EventData&lt;span style="color:gray;"&gt;);

    &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@EventType &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) = &lt;/span&gt;@EventData&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(EVENT_INSTANCE/EventType)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(256)'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@SessionName &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) = &lt;/span&gt;@EventData&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(EVENT_INSTANCE/ObjectName)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(256)'&lt;/span&gt;&lt;span style="color:gray;"&gt;)

    &lt;/span&gt;&lt;span style="color:blue;"&gt;IF &lt;/span&gt;@EventType &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'CREATE_EVENT_SESSION'
    &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN
        INSERT INTO &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_SessionOutputs 
            &lt;span style="color:gray;"&gt;(&lt;/span&gt;EventSessionName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnName&lt;span style="color:gray;"&gt;, &lt;/span&gt;NodeType&lt;span style="color:gray;"&gt;,
             &lt;/span&gt;DataType&lt;span style="color:gray;"&gt;, &lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;, &lt;/span&gt;TypePrecidence&lt;span style="color:gray;"&gt;)
        &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;EventSessionName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnName&lt;span style="color:gray;"&gt;, &lt;/span&gt;NodeType&lt;span style="color:gray;"&gt;,
             &lt;/span&gt;DataType&lt;span style="color:gray;"&gt;, &lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;, &lt;/span&gt;TypePrecidence
        &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XESession_OutputsFromDMVs
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;EventSessionName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@SessionName
    &lt;span style="color:blue;"&gt;END

    IF &lt;/span&gt;@EventType &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ALTER_EVENT_SESSION'
    &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN
        &lt;/span&gt;&lt;span style="color:green;"&gt;-- Add any new outputs to the Table
        &lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT INTO &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_SessionOutputs
            &lt;span style="color:gray;"&gt;(&lt;/span&gt;EventSessionName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventName&lt;span style="color:gray;"&gt;, &lt;/span&gt;EventID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnID&lt;span style="color:gray;"&gt;, &lt;/span&gt;ColumnName&lt;span style="color:gray;"&gt;, &lt;/span&gt;NodeType&lt;span style="color:gray;"&gt;,
             &lt;/span&gt;DataType&lt;span style="color:gray;"&gt;, &lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;, &lt;/span&gt;TypePrecidence&lt;span style="color:gray;"&gt;)
        &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventSessionName&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventName&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventID&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;ColumnID&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;ColumnName&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;NodeType&lt;span style="color:gray;"&gt;,
             &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;DataType&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;XMLLocation&lt;span style="color:gray;"&gt;, &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;TypePrecidence
        &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XESession_OutputsFromDMVs vdmv
        &lt;span style="color:gray;"&gt;LEFT JOIN &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_SessionOutputs xeso
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventSessionName &lt;span style="color:gray;"&gt;= &lt;/span&gt;xeso&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventSessionName
                &lt;span style="color:gray;"&gt;AND &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventName &lt;span style="color:gray;"&gt;= &lt;/span&gt;xeso&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventName
                &lt;span style="color:gray;"&gt;AND &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;ColumnName &lt;span style="color:gray;"&gt;= &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;ColumnName
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;vdmv&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventSessionName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@SessionName
          &lt;span style="color:gray;"&gt;AND &lt;/span&gt;xeso&lt;span style="color:gray;"&gt;.&lt;/span&gt;EventSessionName &lt;span style="color:gray;"&gt;IS NULL
    &lt;/span&gt;&lt;span style="color:blue;"&gt;END

    IF &lt;/span&gt;@EventType &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'DROP_EVENT_SESSION'
    &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN
        &lt;/span&gt;&lt;span style="color:green;"&gt;-- Delete the Output data for the Event Session
        &lt;/span&gt;&lt;span style="color:blue;"&gt;DELETE &lt;/span&gt;sqladmin&lt;span style="color:gray;"&gt;.&lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;XEvents_SessionOutputs
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;EventSessionName &lt;span style="color:gray;"&gt;= &lt;/span&gt;@SessionName
    &lt;span style="color:blue;"&gt;END
END
GO
&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;If we recreate the TrackResourceWaits Event Session from yesterday’s post and then query the XEvents_SessionOutputs table, we can see the outputs that we can expect from that Event Session:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:gray;"&gt;*
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:teal;"&gt;sqladmin&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;dbo&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;XEvents_SessionOutputs
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:teal;"&gt;EventSessionName &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'TrackResourceWaits'

&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_3AF3015D.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_5A35A830.png" width="644" height="195" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Using this information, we can also write a query to generate our XQuery statements for each of the outputs, as well as a column definition stub if we wanted to create a table to hold this information for analysis.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;&lt;span style="color:red;"&gt;'event_data.value(''(event/'&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:teal;"&gt;NodeType&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;'[@name=&amp;quot;'&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnName&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;'&amp;quot;]/'&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:teal;"&gt;XMLLocation&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;')[1]'', '''&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:teal;"&gt;DataType&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;''') AS '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:magenta;"&gt;QUOTENAME&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnName&lt;/span&gt;&lt;span style="color:gray;"&gt;)+&lt;/span&gt;&lt;span style="color:red;"&gt;',' &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;XQuery&lt;/span&gt;&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;QUOTENAME&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnName&lt;/span&gt;&lt;span style="color:gray;"&gt;)+&lt;/span&gt;&lt;span style="color:red;"&gt;' '&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:teal;"&gt;DataType&lt;/span&gt;&lt;span style="color:gray;"&gt;+&lt;/span&gt;&lt;span style="color:red;"&gt;', ' &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnDefinition
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM
&lt;/span&gt;&lt;span style="color:gray;"&gt;(
    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;ROW_NUMBER&lt;/span&gt;&lt;span style="color:gray;"&gt;() &lt;/span&gt;&lt;span style="color:blue;"&gt;OVER &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;PARTITION BY &lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnName &lt;/span&gt;&lt;span style="color:blue;"&gt;ORDER BY &lt;/span&gt;&lt;span style="color:teal;"&gt;TypePrecidence &lt;/span&gt;&lt;span style="color:blue;"&gt;DESC&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;partitionid&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;EventSessionName&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;EventID&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnID&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnName&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;NodeType&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;DataType&lt;/span&gt;&lt;span style="color:gray;"&gt;,
        &lt;/span&gt;&lt;span style="color:teal;"&gt;XMLLocation
    &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:teal;"&gt;sqladmin&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;dbo&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;XEvents_SessionOutputs
&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;&lt;span style="color:teal;"&gt;tab
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:teal;"&gt;EventSessionName &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'TrackResourceWaits'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;partitionid &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;1
&lt;span style="color:blue;"&gt;ORDER BY &lt;/span&gt;&lt;span style="color:teal;"&gt;EventID&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:teal;"&gt;ColumnID&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_7FBF2591.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_0A1049F2.png" width="644" height="215" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The information in the XQuery column can be copied and pasted into our TSQL Script for parsing the Event Data from the ring_buffer, pair_matching, or asynchronous_file_target Targets.&amp;#160; You could also use this as the basis for writing your own Extended Events Target Data code generator, similar to &lt;a href="http://sqlblog.com/blogs/adam_machanic/archive/2010/05/08/extended-events-code-generator-v1-001-a-quick-fix.aspx" target="_blank"&gt;the one that Adam Machanic&lt;/a&gt; created a year ago.&lt;/p&gt;

&lt;p&gt;That’s it for this months series on Extended Events.&amp;#160; You can find links to all of the posts on the round up post from December 1, &lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/01/a-xevent-a-day-31-days-of-extended-events.aspx"&gt;An XEvent A Day: 31 days of Extended Events&lt;/a&gt;.&amp;#160; Hopefully its been informative, and you now have a better understanding of how Extended Events can be used inside of SQL Server 2008, 2008R2, and in Denali CTP1.&lt;/p&gt;</description></item><item><title>An XEvent a Day (30 of 31) – Tracking Session and Statement Level Waits</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/30/an-xevent-a-day-30-of-31-tracking-session-and-statement-level-waits.aspx</link><pubDate>Fri, 31 Dec 2010 02:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32175</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;While attending PASS Summit this year, I got the opportunity to hang out with Brent Ozar (&lt;a href="http://www.brentozar.com/" target="_blank"&gt;Blog&lt;/a&gt;|&lt;a href="http://twitter.com/BrentO" target="_blank"&gt;Twitter&lt;/a&gt;) one afternoon while he did some work for Yanni Robel (&lt;a href="http://sqlscribbles.com/" target="_blank"&gt;Blog&lt;/a&gt;|&lt;a href="http://twitter.com/YanniRobel" target="_blank"&gt;Twitter&lt;/a&gt;).&amp;#160; After looking at the wait stats information, Brent pointed out some potential problem points, and based on that information I pulled up my code for my PASS session the next day on Wait Statistics and Extended Events and made some changes to one of the demo’s so that the Event Session only focused on those potentially problematic waits that had been identified, and sent Brent the DDL so that he could give Extended Events a shot.&amp;#160; Within a few minutes, we were able track down to the statement level in a couple of stored procedures, the causes of those waits, and after some analysis Brent was able to offer some suggestions to Yanni about how to reduce the waits.&lt;/p&gt;  &lt;p&gt;Understanding how SQL Server waits to continue execution can be key to improving performance since time spent waiting is time lost during the execution of a SQL Statement.&amp;#160; I love looking at wait statistics and the chapter that I wrote for &lt;a href="http://www.amazon.com/Professional-Server-2008-Internals-Troubleshooting/dp/0470484284/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1293754853&amp;amp;sr=8-1" target="_blank"&gt;SQL Server 2008 Internals and Troubleshooting&lt;/a&gt; was SQL Server Waits and Extended Events.&amp;#160; Information about wait statistics has been available in SQL Server for a long time, and many of the vendors that develop monitoring applications for SQL Server have polling methods that query sys.dm_os_waiting_tasks or sys.sysprocesses to capture wait information about the tasks that are currently active in the system.&amp;#160; However one of the shortcomings of a polling method is that it misses a lot of the wait information because it is a point in time snapshot only.&amp;#160; If the polling interval is every second, only the active waits that exist at that second are captured, and any waits that occur between the polling interval is missed.&amp;#160; This information is still accumulated in sys.dm_os_wait_stats, but it is impossible to track it back to the statement level from that DMV.&lt;/p&gt;  &lt;p&gt;Extended Events offers us the ability to capture information about waits without missing any of the information.&amp;#160; Already in this series we’ve seen how to use Extended Events with the &lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/07/An-XEvent-a-Day-_2800_7-of-31_2900_-_2D00_-Targets-Week-_2D00_-Bucketizers.aspx" target="_blank"&gt;Bucketizer Target&lt;/a&gt; to count the occurrences of waits by type.&amp;#160; This isn’t really a great use of Extended Events since sys.dm_os_wait_stats counts the occurrences of the wait types already, and a differential analysis of the information contained in sys.dm_os_wait_stats can provide this information.&amp;#160; The purpose of that example was to discuss the bug that existed in the RTM release of SQL Server 2008 more than it was to provide a sensible use for the target.&amp;#160; However, if we wanted to break our waits down by database, we could bucket on the database_id, and begin to understand which database had the most waits associated with it, but not by the individual wait type.&amp;#160; To get to that level of information, we need to collect all of the waits and the associated information for them to do further analysis.&lt;/p&gt;  &lt;p&gt;There are two Events in Extended Events associated with wait types; sqlos.wait_info and sqlos.wait_info_external.&amp;#160; Looking at the description of the Events in the Metadata DMV’s we can get an idea of when each Event will fire. &lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;name&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;description 
FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_objects
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;LIKE &lt;/span&gt;&lt;span style="color:red;"&gt;'wait_info%'&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_346A9227.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:block;float:none;margin-left:auto;border-top:0px;margin-right:auto;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_66EDEF99.png" width="788" height="63" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The sqlos.wait_info_external Event will fire for wait types that begin with PREEMPTIVE_ in the name, and the sqlos.wait_info Event will fire for the other wait types that occur on the server.&amp;#160; Glenn Alan Berry (&lt;a href="http://sqlserverperformance.wordpress.com/" target="_blank"&gt;Blog&lt;/a&gt;|&lt;a href="http://twitter.com/glennalanberry" target="_blank"&gt;Twitter&lt;/a&gt;) has a great script that filters queries sys.dm_os_wait_stats and filters out common waits that are not generally problematic.&amp;#160; You can find his script on his blog post &lt;a href="http://sqlserverperformance.wordpress.com/2010/12/29/updated-sql-2005-and-2008-diagnostic-queries/"&gt;Updated SQL 2005 and 2008 Diagnostic Queries&lt;/a&gt;.&amp;#160; You can use this script to identify the most common waits on a server, and then use that information to build an Event Session that captures the session and statement information for those individual wait types.&amp;#160; In SQL Server 2008, there are 484 wait types listed in sys.dm_os_wait_stats and there are 599 map_value’s for the wait_types Map in sys.dm_xe_map_values.&amp;#160; The reason this is different is that the Map was created from the header file for the wait types and there are padded values that exist in the Map that don’t really correspond to wait types that exist in SQL Server.&amp;#160; However, there are also a couple of Maps for the wait_types that don’t match the wait type in sys.dm_os_wait_stats, the most notable being the ASYNC_NETWORK_IO to NETWORK_IO.&lt;/p&gt;

&lt;p&gt;To build the Event Session, we just need to query sys.dm_map_values for our wait_types and use the map_key's in the Predicate definition of the sqlos.wait_info or sqlos.wait_info_external Event as appropriate.&amp;#160; We can also do the same thing to build a generic Event Session that tracks the most common resource related waits.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;map_key&lt;span style="color:gray;"&gt;, &lt;/span&gt;map_value 
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_map_values
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'wait_types'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;AND ((&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;0 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;22&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- LCK_ waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;31 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;38&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- LATCH_ waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;47 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;54&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- PAGELATCH_ waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;63 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;70&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- PAGEIOLATCH_ waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;96 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;100&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- IO (Disk/Network) waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;107&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;113&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- SOS_WORKER waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;120&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- SOS_SCHEDULER_YIELD waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;178&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- WRITELOG waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;174 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;map_key &lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;177&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- FCB_REPLICA_ waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;186&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- CMEMTHREAD waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;187&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- CXPACKET waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;207&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- TRACEWRITE waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;269&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_MUTEX waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;283&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_QUERY_COMPILE waits
            &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;map_key &lt;span style="color:gray;"&gt;= &lt;/span&gt;284&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_SMALL_QUERY waits
        &lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once we have the list of map_key’s defined, we can do a replace in SSMS and change map_key to wait_type and define the predicate for the sqlos.wait_info Event for our Event Session.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE EVENT SESSION &lt;/span&gt;&lt;span style="color:teal;"&gt;[TrackResourceWaits] &lt;/span&gt;&lt;span style="color:blue;"&gt;ON SERVER 
ADD EVENT  &lt;/span&gt;&lt;span style="color:teal;"&gt;sqlos&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_info
&lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Capture the database_id, session_id, plan_handle, and sql_text
    &lt;/span&gt;&lt;span style="color:blue;"&gt;ACTION&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;sqlserver&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;database_id&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;sqlserver&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;session_id&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;sqlserver&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;sql_text&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;span style="color:teal;"&gt;sqlserver&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;plan_handle&lt;/span&gt;&lt;span style="color:gray;"&gt;)
    &lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE
        &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;opcode &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;1 &lt;span style="color:green;"&gt;--End Events Only
            &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;duration &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; 10&lt;/span&gt;0 &lt;span style="color:green;"&gt;-- had to accumulate 100ms of time
            &lt;/span&gt;&lt;span style="color:gray;"&gt;AND ((&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;0 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;22&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- LCK_ waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;31 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;38&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- LATCH_ waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;47 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;54&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- PAGELATCH_ waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;63 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;70&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- PAGEIOLATCH_ waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;96 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;100&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- IO (Disk/Network) waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;107&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;113&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- SOS_WORKER waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;120&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- SOS_SCHEDULER_YIELD waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;178&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- WRITELOG waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;gt; &lt;/span&gt;174 &lt;span style="color:gray;"&gt;AND &lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;&amp;lt; &lt;/span&gt;177&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- FCB_REPLICA_ waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;186&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- CMEMTHREAD waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;187&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- CXPACKET waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;207&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- TRACEWRITE waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;269&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_MUTEX waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;283&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_QUERY_COMPILE waits
                    &lt;/span&gt;&lt;span style="color:gray;"&gt;OR (&lt;/span&gt;&lt;span style="color:teal;"&gt;wait_type &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;284&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:green;"&gt;-- RESOURCE_SEMAPHORE_SMALL_QUERY waits
                &lt;/span&gt;&lt;span style="color:gray;"&gt;)
        )
)
&lt;/span&gt;&lt;span style="color:blue;"&gt;ADD TARGET &lt;/span&gt;&lt;span style="color:teal;"&gt;package0&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:teal;"&gt;ring_buffer&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;SET &lt;/span&gt;&lt;span style="color:teal;"&gt;max_memory&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;4096&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:teal;"&gt;EVENT_RETENTION_MODE&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:teal;"&gt;ALLOW_SINGLE_EVENT_LOSS&lt;/span&gt;&lt;span style="color:gray;"&gt;,
      &lt;/span&gt;&lt;span style="color:teal;"&gt;MAX_DISPATCH_LATENCY&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;5 &lt;span style="color:teal;"&gt;SECONDS&lt;/span&gt;&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;Now that we have the Event Session defined, we can start it as needed to collect the resource wait information for our system.&amp;#160; The only concern with this Event Session is the Target being used.&amp;#160; If the Event Session is going to run for a long period of time, or if the waits on the server being monitored occur in large quantities, the Target should be changed away from the ring_buffer to the asynchronous_file_target.&amp;#160; I configured this session to only collect waits that exceed 100ms in duration.&amp;#160; If you want waits that have shorter durations this can easily be changed.&amp;#160; If you set the duration to be &amp;gt; 0 a lot of 1-5ms waits will be collected that aren’t generally interesting.&amp;#160; To query the wait information from this Event Session using the ring_buffer:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Extract the Event information from the Event Session 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEADD&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, 
        &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEDIFF&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;GETUTCDATE&lt;/span&gt;&lt;span style="color:gray;"&gt;(), &lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@timestamp)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'datetime2'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[timestamp]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
        &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;session_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[session_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;wait_type&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[wait_type]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;opcode&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[opcode]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[duration]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;max_duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[max_duration]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;total_duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[total_duration]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;signal_duration&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[signal_duration]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;completed_count&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[completed_count]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;plan_handle&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[plan_handle]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;sql_text&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(4000)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[sql_text]
&lt;span style="color:blue;"&gt;FROM 
&lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;.&lt;/span&gt;query&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'.'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data 
    &lt;span style="color:blue;"&gt;FROM 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;(    &lt;/span&gt;&lt;span style="color:green;"&gt;-- Cast the target_data to XML 
        &lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;target_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;TargetData 
        &lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_session_targets &lt;/span&gt;st 
        &lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_sessions &lt;/span&gt;s 
            &lt;span style="color:blue;"&gt;ON &lt;/span&gt;s&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:blue;"&gt;address &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;st&lt;span style="color:gray;"&gt;.&lt;/span&gt;event_session_address 
        &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'TrackResourceWaits' 
          &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;target_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'ring_buffer'
    &lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;Data 
    &lt;span style="color:green;"&gt;-- Split out the Event Nodes 
    &lt;/span&gt;&lt;span style="color:gray;"&gt;CROSS APPLY &lt;/span&gt;TargetData&lt;span style="color:gray;"&gt;.&lt;/span&gt;nodes &lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'RingBufferTarget/event'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;XEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;XEvent&lt;span style="color:gray;"&gt;)   
) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;tab &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;In the result set, you will notice that some of the wait_info Events do not have an associated session_id, database_id, plan_handle, or sql_text value.&amp;#160; Depending on where the wait actually occurs in code, this information is not available to the firing Event, for example, the NETWORK_IO Event generally does not successfully collect these Actions.&lt;/p&gt;

&lt;p&gt;While collecting session and statement level waits like this is certainly interesting, there are some considerations that have to be made whenever you look at wait information like this.&amp;#160; The first consideration is that, while a specific session or statement waited on a resource, that doesn’t necessarily mean that the problem exists within that session or statement.&amp;#160; Take for example a query that has to wait 500ms on ASYNC_IO_COMPLETION waits.&amp;#160; At the same time that query is executing there are 10 DSS queries running that scan large ranges of data from the database data files and generate a lot of IO activity.&amp;#160; Where exactly is the problem?&amp;#160; The root problem is that there is a disk IO bottleneck, but not necessarily related to the query that is waiting on disk IO, it could be another query performing Table Scan that is leading to the heavy IO activity.&lt;/p&gt;</description></item><item><title>An XEvent a Day (29 of 31) – The Future – Looking at Database Startup in Denali</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/29/an-xevent-a-day-29-of-31-the-future-looking-at-database-startup-in-denali.aspx</link><pubDate>Thu, 30 Dec 2010 02:30:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32128</guid><dc:creator>jmkehayias</dc:creator><description>&lt;P&gt;As I have said previously in this series, one of my favorite aspects of Extended Events is that it allows you to look at what is going on under the covers in SQL Server, at a level that has never previously been possible.&amp;nbsp; SQL Server Denali CTP1 includes a number of new Events that expand on the information that we can learn about how SQL Server operates and in today’s blog post we’ll look at how we can use those Events to look at what happens when a database starts up inside of SQL Server.&lt;/P&gt;
&lt;P&gt;First lets create our Event Session, which will collect a large number of events that relate to the operations that occur when a database starts in SQL Server.&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;DECLARE &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;@sqlcmd &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;nvarchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;max&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) =
&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE
name=''MonitorStartupLogRecovery'')
   DROP EVENT SESSION [MonitorStartupLogRecovery] ON SERVER;
CREATE EVENT SESSION [MonitorStartupLogRecovery]
ON SERVER
ADD EVENT sqlserver.database_started 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.databases_log_file_used_size_changed 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.databases_log_flush 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.databases_log_flush_wait 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.file_read 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.file_read_completed 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.file_write_completed 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.file_written 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_block_cache 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_block_consume 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_blocks_uncache 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_cache_buffer_refcounter_change 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_consumer_act 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_flush_complete 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_flush_requested 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_flush_start 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.log_single_record 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.new_log_interest_flip 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.redo_single_record 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.redo_target_set 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;')),
ADD EVENT sqlserver.transaction_log 
(WHERE (database_id = ' &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;+ &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DB_ID&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'AdventureWorks2008R2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS varchar&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;3&lt;SPAN style="COLOR:gray;"&gt;)) + &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'))
ADD TARGET package0.asynchronous_file_target(
     SET filename=''C:\SQLBlog\MonitorStartupLogRecovery.xel'',
         metadatafile=''C:\SQLBlog\MonitorStartupLogRecovery.xem'')
WITH (MAX_MEMORY = 8192KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, STARTUP_STATE = ON)'
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;EXEC&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;@sqlcmd&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;With the Event Session created, we can make some changes that write to our test database to see what happens when the database is recovered at startup. We are going to make two changes to the database.&amp;nbsp; First we’ll begin a transaction and create a table with 10 rows of data in it without committing the transaction.&amp;nbsp; &lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;USE &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;AdventureWorks2008R2
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Begin a Transaction and leave it open
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;BEGIN TRANSACTION
&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Create the First Table
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT TOP &lt;/SPAN&gt;10 &lt;SPAN style="COLOR:gray;"&gt;*
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INTO &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;TestTable
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;Sales&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;SalesOrderDetail sod
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Now in a New Query Window, we’ll create a second table with 10 rows of data without opening a transaction, and then force a dirty shutdown of the Database Engine.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;USE &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;AdventureWorks2008R2
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Create a Second Table
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT TOP &lt;/SPAN&gt;10 &lt;SPAN style="COLOR:gray;"&gt;*
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INTO &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;TestTable2
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;Sales&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;SalesOrderDetail sod
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO
&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Flush changes to data file
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CHECKPOINT
GO
&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Force Shutdown the Engine
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SHUTDOWN&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Once SHUTDOWN is issued, the process terminates, and the Database Engine will need to be restarted from the Services Snapin, the SQL Server Configuration Manager, or through SSMS.&amp;nbsp; When the Engine starts up, the Event Session will become active, and the Events will be logged to the package0.asynchronous_file_target for analysis.&amp;nbsp; Once recovery completes, we can drop the Event Session from the Server, so that the buffers flush, and we can then begin our analysis of the collected information.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;USE &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;tempdb
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;GO

&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Read the Raw Event data into a table
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CAST&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS XML&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INTO &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;TargetEvents
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;sys&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;fn_xe_file_target_read_file&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'C:\SQLBlog\MonitorStartupLogRecovery*.xel'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'C:\SQLBlog\MonitorStartupLogRecovery*.xem'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, null, null)

&lt;/SPAN&gt;&lt;SPAN style="COLOR:green;"&gt;-- Fetch the Event Data from the Raw Event Data into another table
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/@name)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'varchar(50)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_name&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DATEADD&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;hh&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
            &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;DATEDIFF&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;hh&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;GETUTCDATE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(), &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;CURRENT_TIMESTAMP&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;), 
            &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/@timestamp)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'datetime2'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[timestamp]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;COALESCE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="database_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;), 
             &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/action[@name="database_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;)) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;database_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="count"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[count]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="start_log_block_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[start_log_block_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="is_read_ahead"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[is_read_ahead]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="private_consumer_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[private_consumer_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="mode"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[mode]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="file_handle"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[file_handle]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="offset"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[offset]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="file_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[file_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="filegroup_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[filegroup_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="path"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[path]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="duration"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[duration]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="io_data"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[io_data]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="resource_type"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[resource_type]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="owner_type"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[owner_type]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="transaction_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[transaction_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="lockspace_workspace_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[lockspace_workspace_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="lockspace_sub_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[lockspace_sub_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="lockspace_nest_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[lockspace_nest_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="resource_0"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[resource_0]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="resource_1"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[resource_1]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="resource_2"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[resource_2]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="object_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[object_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="associated_object_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[associated_object_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="resource_description"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[resource_description]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="database_name"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[database_name]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="log_block_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[log_block_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="log_block_size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[log_block_size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="from_disk"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[from_disk]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="incomplete"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[incomplete]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="cache_buffer_pointer"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[cache_buffer_pointer]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="consumer_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[consumer_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="old_weight"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[old_weight]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="new_weight"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[new_weight]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="new_position"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[new_position]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="last_log_block_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[last_log_block_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="weight"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[weight]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="address"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[address]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="type"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[type]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="current_count"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[current_count]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="change_type"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[change_type]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="activity_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[activity_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="write_size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[write_size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="rows"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[rows]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="pending_writes"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[pending_writes]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="pending_bytes"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[pending_bytes]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="reason"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[reason]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="waiters"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[waiters]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="error"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[error]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="slot_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[slot_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="used_size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[used_size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="reservation_size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'bigint'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[reservation_size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="log_op_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[log_op_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="log_op_name"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[log_op_name]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="interest"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[interest]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="cache_type"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[cache_type]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="keys"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[keys]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="stop_mark"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[stop_mark]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="operation"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[operation]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="success"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[success]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="index_id"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[index_id]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="log_record_size"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[log_record_size]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="context"]/text)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[context]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="replication_command"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'int'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[replication_command]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;,
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_data&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;.&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;value&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'(event/data[@name="transaction_start_time"]/value)[1]'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'nvarchar(4000)'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[transaction_start_time]
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;INTO &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;Results
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;TargetEvents
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Now we can begin to analyze the information that we collected by querying the Results table.&amp;nbsp; Looking at the Results as a whole, we can see the database opened by reading the first page of the database and then the database boot page (page_id=9) and page 32 of the primary data file.&amp;nbsp; Then the engine scans each of the VLF’s of the transaction log.&amp;nbsp; We can tell that the log reads are scans of the VLF’s by looking at the DBCC LOGINFO information for the database and comparing the file_read offsets from the Event Session to the StartOffset of each of the VLF’s in the DBCC LOGINFO output.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;DBCC &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;LOGINFO
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_7CF47A85.png"&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_7A6B48C7.png" width=573 height=256&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_name&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;timestamp&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;database_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;file_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;mode&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;offset&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;CASE WHEN &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;file_id &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;= &lt;/SPAN&gt;1 &lt;SPAN style="COLOR:blue;"&gt;THEN &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;offset&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;/&lt;/SPAN&gt;8192 &lt;SPAN style="COLOR:blue;"&gt;ELSE &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;NULL &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;END AS &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;page_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_block_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_block_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;start_log_block_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;last_log_block_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;from_disk&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;consumer_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;activity_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_op_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_op_name&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;change_type&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;operation&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;object_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;index_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_record_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;slot_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;used_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;reservation_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;write_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;rows&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;pending_writes&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;pending_bytes&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;context&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;waiters
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;Results
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_52C4CC9D.png"&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_7AA7CBFC.png" width=661 height=501&gt;&lt;/A&gt;&amp;nbsp; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;After the startup scans the VLF’s 120K of information is read from the log file, and the log buffers start to be consumed to determine the redo start point for recovery.&amp;nbsp; We can filter our Event data to remove Events that while interesting are not necessary for our analysis at the moment, as well as to reduce the number of columns being returned from the data set.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR:blue;"&gt;SELECT 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_name&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;timestamp&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;file_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;mode&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;offset&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_block_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;COALESCE&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_op_name&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;operation&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;as &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;[operation]&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;slot_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, 
    &lt;/SPAN&gt;&lt;SPAN style="COLOR:magenta;"&gt;object_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;index_id&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;log_record_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;context&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;write_size&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;rows
FROM &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;Results
&lt;/SPAN&gt;&lt;SPAN style="COLOR:blue;"&gt;WHERE &lt;/SPAN&gt;&lt;SPAN style="COLOR:teal;"&gt;event_name &lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;NOT IN (&lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'log_consumer_act'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'log_single_record'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'log_cache_buffer_refcounter_change'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;, &lt;/SPAN&gt;&lt;SPAN style="COLOR:red;"&gt;'file_read'&lt;/SPAN&gt;&lt;SPAN style="COLOR:gray;"&gt;) 
&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_209D7C53.png"&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_06C94624.png" width=627 height=351&gt;&lt;/A&gt; &lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With the filtered results, we can see the log reads into cache and the setting of the redo target.&amp;nbsp; If we scroll down further, we can get a better picture of what is happening.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_58038D81.png" target=_blank&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_12EAC04B.png" width=644 height=321&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;The last active log blog was consumed, and the redo target was set at that log_block_id.&amp;nbsp; Then the log is reread starting at offset 318976 and the blocks get cached and the redo operations begin against the database.&amp;nbsp; Scrolling through the results further, we can see that the redo operations continue as the log blocks increase up to the Checkpoint operation that was executed immediately before the Shutdown of the instance occurred, at the log block that was set as the redo target originally.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_3B39F29F.png" target=_blank&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_684EDF6D.png" width=644 height=250&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;At this point the data file begins to be read so that the undo operations can be performed before making the database available.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_2D1B03A2.png" target=_blank&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_5E3A3E42.png" width=644 height=163&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;After the undo completes the database_started Event is raised and that database becomes available for use.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://sqlblog.com/blogs/jonathan_kehayias/image_0A76C527.png" target=_blank&gt;&lt;IMG style="BORDER-BOTTOM:0px;BORDER-LEFT:0px;DISPLAY:inline;BORDER-TOP:0px;BORDER-RIGHT:0px;" title=image border=0 alt=image src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_74ACDCC9.png" width=644 height=167&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;To validate that the changes we see occurring after the redo operations and before the database_started Event, we can set the database OFFLINE, recreate our Event Session, and then bring the database back ONLINE again, and then compare the logged Events when no changes have occurred to our original Events when known changes have occurred.&amp;nbsp; I am not going to do that in this blog post, but will instead leave that up to the reader to investigate on their own.&lt;/P&gt;</description></item><item><title>An XEvent a Day (28 of 31) – Tracking Page Compression Operations</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/28/an-xevent-a-day-28-of-31-tracking-page-compression-operations.aspx</link><pubDate>Wed, 29 Dec 2010 02:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:32072</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;The Database Compression feature in SQL Server 2008 Enterprise Edition can provide some significant reductions in storage requirements for SQL Server databases, and in the right implementations and scenarios performance improvements as well.&amp;#160; There isn’t really a whole lot of information about the operations of database compression that is documented as being available in the DMV’s or SQL Trace.&amp;#160; Paul Randal pointed out on Twitter today that sys.dm_db_index_operational_stats() provides the page_compression_attempt_count and page_compression_success_count available.&amp;#160; Beyond that the only other documented information for monitoring Data Compression are the Page Compression Attempts/sec and Pages Compressed/sec Performance Counters of the SQL Server:Access Methods object in Perfmon (&lt;a title="http://msdn.microsoft.com/en-us/library/cc280449.aspx" href="http://msdn.microsoft.com/en-us/library/cc280449.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc280449.aspx&lt;/a&gt;).&amp;#160; &lt;/p&gt;  &lt;p&gt;There is one thing in common about the documented methods of monitoring Data Compression, and that is they all only deal with Page compression, and not Row compression, and in Extended Events we find the same commonality as there are no Row compression Events in Extended Events.&amp;#160; There are two Page compression Events in Extended Events; sqlserver.page_compression_attempt_failed and sqlserver.page_compression_tracing.&amp;#160; These two Events can be used to track Page compression operations at multiple levels, including database, object, index, and even down to the individual page. The sqlserver.page_compression_tracing Event provides Start and End tracing of Page compression operations inside of the Database Engine and returns the database_id, index_id, rowset_id, page_id, and duration of the compression operation.&amp;#160; The sqlserver.page_compression_attempt_failed is really poorly named, and doesn’t provide information about failures in the sense that something broke, but provides information for why a page compression attempt did not actually change the compression of the data in the page.&amp;#160; It also returns the database_id, index_id, rowset_id, and page_id for the compression attempt, and it also includes a failure_reason column which correlates to the page_compression_failure_reason Map Value.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Get the payload information for the Events 
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;column_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;name&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;type_name
&lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_xe_object_columns
&lt;/span&gt;&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_name &lt;/span&gt;&lt;span style="color:gray;"&gt;IN (&lt;/span&gt;&lt;span style="color:red;"&gt;'page_compression_tracing'&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
                      &lt;/span&gt;&lt;span style="color:red;"&gt;'page_compression_attempt_failed'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
  AND &lt;/span&gt;column_type &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'data'&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_30ADD76D.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_27719C2C.png" width="540" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To demonstrate how these Events function, I am going to use the LineItem table from the TPC-H Benchmark that was created by Quest Benchmark Factory using Level 2 for the table sizing, which makes the table just at 1.8GB in size.&amp;#160; All of the indexes on the table will be rebuilt using PAGE compression, and then 10,000 rows will be added to the table.&amp;#160; To setup the environment, first load the TPC-H LineItem table with the appropriate seed of data, this can be done with the free trial version of Benchmark Factory.&amp;#160; Then rebuild all of the indexes on the LineItem table using PAGE compression, and review the PAGE compression statistics from sys.dm_db_index_operational_stats for the database and object.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;USE &lt;/span&gt;[TPCH]
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Rebuild the indexes with Page compression 
&lt;/span&gt;&lt;span style="color:blue;"&gt;ALTER INDEX &lt;/span&gt;&lt;span style="color:gray;"&gt;ALL &lt;/span&gt;&lt;span style="color:blue;"&gt;ON &lt;/span&gt;dbo&lt;span style="color:gray;"&gt;.&lt;/span&gt;H_Lineitem &lt;span style="color:blue;"&gt;REBUILD WITH &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;DATA_COMPRESSION &lt;span style="color:gray;"&gt;= &lt;/span&gt;PAGE&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Look at the compression information in sys.dm_db_index_operational_stats
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;index_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_attempt_count&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;,
    (&lt;/span&gt;page_compression_attempt_count &lt;span style="color:gray;"&gt;- &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;page_compression_failure_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_db_index_operational_stats&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;db_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'TPCH'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'H_Lineitem'&lt;/span&gt;&lt;span style="color:gray;"&gt;), null, null)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_4DD37F77.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_4D674C82.png" width="644" height="71" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once the table and its indexes have been rebuilt using PAGE compression, we can then create our Event Session, start it, and add 10,000 rows to the LineItem table.&amp;#160; After we add the rows, we can then check the page compression statistics in sys.dm_db_index_operational_stats, and drop our Event Session from the server. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Create an Event Session to Track the Failed attempts
&lt;/span&gt;&lt;span style="color:blue;"&gt;CREATE EVENT SESSION &lt;/span&gt;PageCompressionTracing
&lt;span style="color:blue;"&gt;ON SERVER
ADD EVENT &lt;/span&gt;sqlserver&lt;span style="color:gray;"&gt;.&lt;/span&gt;page_compression_attempt_failed&lt;span style="color:gray;"&gt;,
&lt;/span&gt;&lt;span style="color:blue;"&gt;ADD EVENT &lt;/span&gt;sqlserver&lt;span style="color:gray;"&gt;.&lt;/span&gt;page_compression_tracing
&lt;span style="color:blue;"&gt;ADD TARGET &lt;/span&gt;package0&lt;span style="color:gray;"&gt;.&lt;/span&gt;asynchronous_file_target&lt;span style="color:gray;"&gt;(
     &lt;/span&gt;&lt;span style="color:blue;"&gt;SET filename&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;'C:\SQLBlog\PageCompressionTracing.xel'&lt;/span&gt;&lt;span style="color:gray;"&gt;,
         &lt;/span&gt;metadatafile&lt;span style="color:gray;"&gt;=&lt;/span&gt;&lt;span style="color:red;"&gt;'C:\SQLBlog\PageCompressionTracing.xem'&lt;/span&gt;&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;MAX_MEMORY &lt;span style="color:gray;"&gt;= &lt;/span&gt;8MB&lt;span style="color:gray;"&gt;, &lt;/span&gt;EVENT_RETENTION_MODE &lt;span style="color:gray;"&gt;= &lt;/span&gt;ALLOW_SINGLE_EVENT_LOSS&lt;span style="color:gray;"&gt;, &lt;/span&gt;MAX_DISPATCH_LATENCY&lt;span style="color:gray;"&gt;=&lt;/span&gt;5SECONDS&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Start the Event Session
&lt;/span&gt;&lt;span style="color:blue;"&gt;ALTER EVENT SESSION &lt;/span&gt;PageCompressionTracing
&lt;span style="color:blue;"&gt;ON SERVER
STATE&lt;/span&gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt;START
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Insert 10000 rows into the H_Lineitem table
&lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT INTO &lt;/span&gt;H_Lineitem
    &lt;span style="color:gray;"&gt;(&lt;/span&gt;l_orderkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_partkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_suppkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_linenumber&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_quantity&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_extendedprice&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_discount&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_tax&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_returnflag&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_linestatus&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_shipdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_commitdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_receiptdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_shipinstruct&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_shipmode&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_comment&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT TOP &lt;/span&gt;10000 
     l_orderkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_partkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_suppkey&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_linenumber&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_quantity&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_extendedprice&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_discount&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_tax&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_returnflag&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_linestatus&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_shipdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_commitdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_receiptdate&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_shipinstruct&lt;span style="color:gray;"&gt;, &lt;/span&gt;l_shipmode&lt;span style="color:gray;"&gt;, 
     &lt;/span&gt;l_comment
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;H_Lineitem
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Look at the compression information in sys.dm_db_index_operational_stats
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;index_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_attempt_count&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;,
    (&lt;/span&gt;page_compression_attempt_count &lt;span style="color:gray;"&gt;- &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;page_compression_failure_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_db_index_operational_stats&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;db_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'TPCH'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'H_Lineitem'&lt;/span&gt;&lt;span style="color:gray;"&gt;), null, null)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Drop the Event Session
&lt;/span&gt;&lt;span style="color:blue;"&gt;DROP EVENT SESSION &lt;/span&gt;PageCompressionTracing
&lt;span style="color:blue;"&gt;ON SERVER
GO&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_0CC50013.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_0C58CD1E.png" width="644" height="70" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now we can parse the Events that were captured by our Event Session and compare the information presented by sys.dm_db_index_operational_stats() with what was collected by Extended Events.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:green;"&gt;-- Create our result Analysis database
&lt;/span&gt;&lt;span style="color:blue;"&gt;CREATE DATABASE &lt;/span&gt;[PageCompTestResults]
&lt;span style="color:blue;"&gt;GO
USE &lt;/span&gt;[PageCompTestResults]
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Create intermediate temp table for raw event data
&lt;/span&gt;&lt;span style="color:blue;"&gt;CREATE TABLE &lt;/span&gt;RawEventData
&lt;span style="color:gray;"&gt;(&lt;/span&gt;Rowid &lt;span style="color:blue;"&gt;int identity primary key&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;event_data &lt;span style="color:blue;"&gt;xml&lt;/span&gt;&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Read the file data into intermediate temp table
&lt;/span&gt;&lt;span style="color:blue;"&gt;INSERT INTO &lt;/span&gt;RawEventData &lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;)
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;CAST&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data &lt;span style="color:blue;"&gt;AS XML&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_data
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;fn_xe_file_target_read_file&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'C:\SQLBlog\PageCompressionTracing*.xel'&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
                                     &lt;/span&gt;&lt;span style="color:red;"&gt;'C:\SQLBlog\PageCompressionTracing*.xem'&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
                                     null, null)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Fetch the Event Data from the Event Session Target
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;RowID&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@name)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'varchar(50)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;event_name&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEADD&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, 
            &lt;/span&gt;&lt;span style="color:magenta;"&gt;DATEDIFF&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;hh&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:magenta;"&gt;GETUTCDATE&lt;/span&gt;&lt;span style="color:gray;"&gt;(), &lt;/span&gt;&lt;span style="color:magenta;"&gt;CURRENT_TIMESTAMP&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
            &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/@timestamp)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'datetime2'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[timestamp]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;COALESCE&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;), 
             &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;database_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;)) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;file_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[file_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;page_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[page_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;rowset_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'bigint'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[rowset_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/data[@name=&amp;quot;failure_reason&amp;quot;]/text)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'nvarchar(150)'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[failure_reason]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;system_thread_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[system_thread_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;scheduler_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[scheduler_id]&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;event_data&lt;span style="color:gray;"&gt;.&lt;/span&gt;value&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'(event/action[@name=&amp;quot;cpu_id&amp;quot;]/value)[1]'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'int'&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;AS &lt;/span&gt;[cpu_id]
&lt;span style="color:blue;"&gt;INTO &lt;/span&gt;ParsedResults
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;RawEventData
&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;After parsing out the data, we can begin to really leverage the information we’ve gathered.&amp;#160; If we join the ParsedResults table to sys.partitions for our TPCH database by rowset_id = hobt_id, we can get the object_id and index_id and aggregate the failure reasons up to the object and index level.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;index_id&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;failure_reason&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;COUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;(*) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;failure_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;TPCH&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;partitions &lt;/span&gt;p
&lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;ParsedResults pr
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;rowset_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;hobt_id
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;event_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'page_compression_attempt_failed'
&lt;/span&gt;&lt;span style="color:blue;"&gt;GROUP BY     &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;index_id&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;failure_reason
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Look at the compression information in sys.dm_db_index_operational_stats
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;index_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_attempt_count&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;,
    (&lt;/span&gt;page_compression_attempt_count &lt;span style="color:gray;"&gt;- &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;page_compression_failure_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_db_index_operational_stats&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;db_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'TPCH'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'H_Lineitem'&lt;/span&gt;&lt;span style="color:gray;"&gt;), null, null)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_1DC92DF6.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_591C93B4.png" width="644" height="214" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With this we can se that the Extended Events sqlserver.page_compression_attempt_failed Event tracks failures and attempts that are not counted in sys.dm_db_index_operational_stats().&amp;#160; The PageModCountBelowThreshold failure isn’t really a failed attempt at compression.&amp;#160; This reason shows that the page was evaluated for recalculation, and the modified counter for the page hadn’t passed the internal threshold for recalculation so the actual compression operation wasn’t performed.&amp;#160; If we look at the sqlserver.page_compression_tracing Event information, we can see how the numbers begin to come together to match what is output by sys.dm_db_index_operational_stats().&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;index_id&lt;span style="color:gray;"&gt;,
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;COUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;(*) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;attempt_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;TPCH&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;partitions &lt;/span&gt;p
&lt;span style="color:gray;"&gt;JOIN &lt;/span&gt;ParsedResults pr
    &lt;span style="color:blue;"&gt;ON &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;rowset_id &lt;span style="color:gray;"&gt;= &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;hobt_id
&lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;event_name &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'page_compression_tracing'
  &lt;/span&gt;&lt;span style="color:gray;"&gt;AND &lt;/span&gt;opcode &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'Begin'
&lt;/span&gt;&lt;span style="color:blue;"&gt;GROUP BY     &lt;/span&gt;pr&lt;span style="color:gray;"&gt;.&lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;p&lt;span style="color:gray;"&gt;.&lt;/span&gt;index_id
&lt;span style="color:blue;"&gt;GO
&lt;/span&gt;&lt;span style="color:green;"&gt;-- Look at the compression information in sys.dm_db_index_operational_stats
&lt;/span&gt;&lt;span style="color:blue;"&gt;SELECT 
    &lt;/span&gt;database_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;index_id&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_attempt_count&lt;span style="color:gray;"&gt;, 
    &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;,
    (&lt;/span&gt;page_compression_attempt_count &lt;span style="color:gray;"&gt;- &lt;/span&gt;page_compression_success_count&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;as &lt;/span&gt;page_compression_failure_count
&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;&lt;span style="color:green;"&gt;sys&lt;/span&gt;&lt;span style="color:gray;"&gt;.&lt;/span&gt;&lt;span style="color:green;"&gt;dm_db_index_operational_stats&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:magenta;"&gt;db_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'TPCH'&lt;/span&gt;&lt;span style="color:gray;"&gt;), &lt;/span&gt;&lt;span style="color:magenta;"&gt;object_id&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:red;"&gt;'H_Lineitem'&lt;/span&gt;&lt;span style="color:gray;"&gt;), null, null)
&lt;/span&gt;&lt;span style="color:blue;"&gt;GO&lt;/span&gt;&lt;/pre&gt;
  &lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/blockquote&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_5124F152.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_02B05EE8.png" width="644" height="152" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We have 193 attempts by this Event, and we have 72 PageModCountBelowThreshold failures, matching our actual attempts of 121 from the DMF.&amp;#160; We can then subtract out the other failures and get the 93 successful operations matching the DMF as well.&lt;/p&gt;</description></item><item><title>An XEvent a Day (27 of 31) – The Future - Tracking Page Splits in SQL Server Denali CTP1</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/27/tracking-page-splits-in-sql-server-denali-ctp1.aspx</link><pubDate>Tue, 28 Dec 2010 02:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:29426</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;Nearly two years ago Kalen Delaney blogged about &lt;a href="http://sqlblog.com/blogs/kalen_delaney/archive/2008/12/20/splitting-a-page-into-multiple-pages.aspx" target="_blank"&gt;Splitting a page into multiple pages&lt;/a&gt;, showing how page splits occur inside of SQL Server.&amp;#160; Following her blog post, Michael Zilberstein wrote a post, &lt;a href="http://sqlblog.com/blogs/michael_zilberstein/archive/2009/02/05/11734.aspx" target="_blank"&gt;Monitoring Page Splits with Extended Events&lt;/a&gt;, that showed how to see the sqlserver.page_split Events using Extended Events.&amp;#160; Eladio Rincón also blogged about &lt;a href="http://msmvps.com/blogs/eladio_rincon/archive/2008/12/07/using-xevents-extended-events-in-sql-server-2008-to-detect-which-queries-are-causing-page-splits.aspx" target="_blank"&gt;Using XEvents (Extended Events) in SQL Server 2008 to detect which queries are causing Page Splits&lt;/a&gt;, but not in relation to Kalen’s blog post.&amp;#160; Both of these blog posts demonstrate how to get the sqlserver.page_split Events, but as discussed in the comments section of Michael Zilberstein’s blog post, the Event fires for all page splits and Adam Machanic and I talked after Eladio’s blog post and opened a connect item to have the sqlserver.page_split Event extended in the product so that you know what kind of split is actually occurring.&lt;/p&gt;  &lt;p&gt;&lt;a title="https://connect.microsoft.com/SQLServer/feedback/details/388482/sql-server-extended-events-page-split-event-additions" href="https://connect.microsoft.com/SQLServer/feedback/details/388482/sql-server-extended-events-page-split-event-additions"&gt;https://connect.microsoft.com/SQLServer/feedback/details/388482/sql-server-extended-events-page-split-event-additions&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The CTP1 release of Denali has significant changes to the sqlserver.page_split Event, that makes it easier to find the splitting object as well the type of split that is occurring.&amp;#160; Before we look at that, I am going to show the code required to get the object and index information from SQL Server 2008, which is based on Adam’s comments to use sys.dm_os_buffer_descriptors.&amp;#160; For the examples in this blog post I am going use Kalen’s multipage split example from her blog post referenced above.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre style="font-size:12px;"&gt;&lt;font color="green"&gt;-- Create the table &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;USE &lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET NOCOUNT ON&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;IF &lt;/font&gt;&lt;font color="gray"&gt;EXISTS (&lt;/font&gt;&lt;font color="blue"&gt;SELECT &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;sys.tables&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'split_page'&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;DROP TABLE &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;CREATE TABLE &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;id &lt;/font&gt;&lt;font color="blue"&gt;INT &lt;/font&gt;&lt;font color="#434343"&gt;IDENTITY&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;2&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;PRIMARY KEY&lt;/font&gt;&lt;font color="gray"&gt;,&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;id2 bigint &lt;/font&gt;&lt;font color="blue"&gt;DEFAULT &lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;,&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;data1 &lt;/font&gt;&lt;font color="blue"&gt;VARCHAR&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;33&lt;/font&gt;&lt;font color="gray"&gt;) NULL, &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;data2 &lt;/font&gt;&lt;font color="blue"&gt;VARCHAR&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;8000&lt;/font&gt;&lt;font color="gray"&gt;) NULL);&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- fill page until no more rows fit&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;INSERT INTO &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;/font&gt;&lt;font color="blue"&gt;DEFAULT VALUES&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO 385&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- verify that there is only one data page &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DBCC &lt;/font&gt;&lt;font color="black"&gt;IND&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;, -&lt;/font&gt;&lt;font color="black"&gt;1&lt;/font&gt;&lt;font color="gray"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Create MonitorPageSplits Extended Event Session &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;IF &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;1 &lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;/font&gt;&lt;font color="black"&gt;sys.server_event_sessions &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'MonitorPageSplits'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;IS &lt;/font&gt;&lt;font color="gray"&gt;NOT NULL &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;DROP &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;GO &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;CREATE &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ADD &lt;/font&gt;&lt;font color="black"&gt;EVENT sqlserver.page_split &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;( &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;ACTION &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;sqlserver.database_id&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;sqlserver.sql_text&lt;/font&gt;&lt;font color="gray"&gt;)&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;sqlserver.database_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;2 &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ADD &lt;/font&gt;&lt;font color="black"&gt;TARGET package0.ring_buffer &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;WITH&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;MAX_DISPATCH_LATENCY &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;1 SECONDS&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Start the MonitorPageSplits Event Session &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ALTER &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER STATE &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;start&lt;/font&gt;&lt;font color="gray"&gt;; &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Now insert one more row, this time filling the VARCHARs to the maximum length. &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET IDENTITY_INSERT &lt;/font&gt;&lt;font color="black"&gt;split_page&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;INSERT INTO &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;id&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;id2&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;data1&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;data2&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;111&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="magenta"&gt;REPLICATE&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'a'&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;33&lt;/font&gt;&lt;font color="gray"&gt;), &lt;/font&gt;&lt;font color="magenta"&gt;REPLICATE&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'b'&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;8000&lt;/font&gt;&lt;font color="gray"&gt;);&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET IDENTITY_INSERT &lt;/font&gt;&lt;font color="black"&gt;split_page&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;OFF&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ALTER &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DROP &lt;/font&gt;&lt;font color="black"&gt;EVENT sqlserver.page_split&lt;/font&gt;&lt;font color="gray"&gt;; &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Wait to allow dispatch to complete&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;WAITFOR &lt;/font&gt;&lt;font color="black"&gt;DELAY &lt;/font&gt;&lt;font color="red"&gt;'00:00:01.000' &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;oTab.&lt;/font&gt;&lt;font color="gray"&gt;*&lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;p.index_id&lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_NAME&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;i.name&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;FROM&lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;(&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;XEvent&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.query&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'.'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(@timestamp)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'datetime'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="magenta"&gt;FILE_ID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''file_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;page_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''page_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;database_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(action[@name=''database_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;sql_text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(action[@name=''sql_text'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'varchar(max)'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;( &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="magenta"&gt;CAST&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;target_data &lt;/font&gt;&lt;font color="blue"&gt;AS XML&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;target_data &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;/font&gt;&lt;font color="black"&gt;sys.dm_xe_session_targets xst &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.dm_xe_sessions xs &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;xs.address &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;xst.event_session_address &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;xs.name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'MonitorPageSplits' &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;tab &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;target_data&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;CROSS &lt;/font&gt;&lt;font color="black"&gt;APPLY target_data.nodes&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'/RingBufferTarget/event'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;EventNodes&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;XEvent&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;oTab&lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.dm_os_buffer_descriptors &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;obd&lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;obd.database_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;oTab.database_id&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;AND &lt;/font&gt;&lt;font color="black"&gt;obd.&lt;/font&gt;&lt;font color="magenta"&gt;FILE_ID &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;oTab.&lt;/font&gt;&lt;font color="magenta"&gt;FILE_ID&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;AND &lt;/font&gt;&lt;font color="black"&gt;obd.page_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;oTab.page_id&lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.allocation_units au&lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;au.allocation_unit_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;obd.allocation_unit_id&lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.partitions p &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;p.partition_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;au.container_id&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.indexes i&lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;i.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;AND &lt;/font&gt;&lt;font color="black"&gt;p.index_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;i.index_id&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- verify that there is only one data page &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DBCC &lt;/font&gt;&lt;font color="black"&gt;IND&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;, -&lt;/font&gt;&lt;font color="black"&gt;1&lt;/font&gt;&lt;font color="gray"&gt;);&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;The above code creates a table in tempdb, loads one page of data in it exactly as in Kalen’s blog post, and then creates an Event Session for the sqlserver.page_split Event in tempdb, that also collects the sqlserver.database_id and sqlserver.sql_text actions when the Event fires.&amp;#160; After triggering the page split, it drops the Event from the Event Session and then uses WAITFOR DELAY to allow the events to be buffered to the package0.ring_buffer Target.&amp;#160; Then it shreds the XML and joins to the DMV’s to get the object and index names.&amp;#160; The output of running the above script in SQL Server 2008 should be similar to the following, showing 10 split events and 10 additional pages in the database table.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_0636E815.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image_thumb_13E9A41D.png" width="644" height="364" /&gt;&lt;/a&gt; .&amp;#160; &lt;/p&gt;

&lt;p&gt;Note that the only two columns returned by the sqlserver.page_split Event are the file_id and page_id.&amp;#160; In SQL Server Denali CTP1, the sqlserver.page_split event now has a much larger Event payload associated with it.&amp;#160; It now returns the file_id, page_id, database_id (as a part of the event, not requiring an action), rowset_id, splitOperation, new_page_file_id, and the new_page_page_id associated with the page_split Event.&amp;#160;&amp;#160; This makes the Event much more useful and allows it to be used without having to query the buffer descriptors to find the object association.&amp;#160; The following demo is identical to the demo for SQL Server 2008 listed above with the exception of that the XQuery is slightly different (a requirement to pull the new information from the XML).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;/p&gt;

  &lt;pre style="font-size:12px;"&gt;&lt;font color="green"&gt;-- Create the table &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;USE &lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET NOCOUNT ON&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;IF &lt;/font&gt;&lt;font color="gray"&gt;EXISTS (&lt;/font&gt;&lt;font color="blue"&gt;SELECT &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;sys.tables&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'split_page'&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;DROP TABLE &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;CREATE TABLE &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;id &lt;/font&gt;&lt;font color="blue"&gt;INT &lt;/font&gt;&lt;font color="#434343"&gt;IDENTITY&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="black"&gt;2&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;PRIMARY KEY&lt;/font&gt;&lt;font color="gray"&gt;,&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;id2 bigint &lt;/font&gt;&lt;font color="blue"&gt;DEFAULT &lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;,&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;data1 &lt;/font&gt;&lt;font color="blue"&gt;VARCHAR&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;33&lt;/font&gt;&lt;font color="gray"&gt;) NULL, &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;data2 &lt;/font&gt;&lt;font color="blue"&gt;VARCHAR&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;8000&lt;/font&gt;&lt;font color="gray"&gt;) NULL);&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- fill page until no more rows fit&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;INSERT INTO &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;/font&gt;&lt;font color="blue"&gt;DEFAULT VALUES&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO 385&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- verify that there is only one data page &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DBCC &lt;/font&gt;&lt;font color="black"&gt;IND&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;, -&lt;/font&gt;&lt;font color="black"&gt;1&lt;/font&gt;&lt;font color="gray"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Create MonitorPageSplits Extended Event Session &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;IF &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;1 &lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;/font&gt;&lt;font color="black"&gt;sys.server_event_sessions &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'MonitorPageSplits'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;IS &lt;/font&gt;&lt;font color="gray"&gt;NOT NULL &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;DROP &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;GO &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;CREATE &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ADD &lt;/font&gt;&lt;font color="black"&gt;EVENT sqlserver.page_split &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;( &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;ACTION &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;sqlserver.database_id&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;sqlserver.sql_text&lt;/font&gt;&lt;font color="gray"&gt;)&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;sqlserver.database_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;2 &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ADD &lt;/font&gt;&lt;font color="black"&gt;TARGET package0.ring_buffer &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;WITH &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;MAX_DISPATCH_LATENCY &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;1 SECONDS&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Start the MonitorPageSplits Event Session &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ALTER &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER STATE &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;start&lt;/font&gt;&lt;font color="gray"&gt;; &lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- Now insert one more row, this time filling the VARCHARs to the maximum length. &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET IDENTITY_INSERT &lt;/font&gt;&lt;font color="black"&gt;split_page&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;INSERT INTO &lt;/font&gt;&lt;font color="black"&gt;split_page &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;id&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;id2&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;data1&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;data2&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="black"&gt;111&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;0&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="magenta"&gt;REPLICATE&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'a'&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;33&lt;/font&gt;&lt;font color="gray"&gt;), &lt;/font&gt;&lt;font color="magenta"&gt;REPLICATE&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'b'&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;8000&lt;/font&gt;&lt;font color="gray"&gt;);&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SET IDENTITY_INSERT &lt;/font&gt;&lt;font color="black"&gt;split_page&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;OFF&lt;/font&gt;&lt;font color="gray"&gt;;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO &lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;ALTER &lt;/font&gt;&lt;font color="black"&gt;EVENT SESSION MonitorPageSplits &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;SERVER &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DROP &lt;/font&gt;&lt;font color="black"&gt;EVENT sqlserver.page_split&lt;/font&gt;&lt;font color="gray"&gt;; &lt;br /&gt;&lt;/font&gt;&lt;font color="red"&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="black"&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="black"&gt;event_time&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(@timestamp)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'datetime'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;orig_file_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''file_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;orig_page_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''page_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;database_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''database_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;index_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;p.index_id&lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_NAME&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_NAME&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;/font&gt;&lt;font color="gray"&gt;)&lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;index_name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;i.name&lt;br /&gt;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;rowset_id&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''rowset_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'bigint'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;splitOperation&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''splitOperation'']/text)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'varchar(255)'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;new_page_file_id&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''new_page_file_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;new_page_page_id&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''new_page_page_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'int'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&amp;#160; , &lt;/font&gt;&lt;font color="black"&gt;sql_text&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(action[@name=''sql_text'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'varchar(max)'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;( &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;SELECT &lt;/font&gt;&lt;font color="magenta"&gt;CAST&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;target_data &lt;/font&gt;&lt;font color="blue"&gt;AS XML&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;target_data &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;FROM &lt;/font&gt;&lt;font color="black"&gt;sys.dm_xe_session_targets xst &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.dm_xe_sessions xs &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;xs.address &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;xst.event_session_address &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;WHERE &lt;/font&gt;&lt;font color="black"&gt;xs.name &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="red"&gt;'MonitorPageSplits' &lt;br /&gt;&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;tab &lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;target_data&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;CROSS &lt;/font&gt;&lt;font color="black"&gt;APPLY target_data.nodes&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'/RingBufferTarget/event'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;/font&gt;&lt;font color="blue"&gt;AS &lt;/font&gt;&lt;font color="black"&gt;EventNodes&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;XEvent&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.allocation_units au&lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;au.container_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;XEvent.value&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="red"&gt;'(data[@name=''rowset_id'']/value)[1]'&lt;/font&gt;&lt;font color="gray"&gt;,&lt;/font&gt;&lt;font color="red"&gt;'bigint'&lt;/font&gt;&lt;font color="gray"&gt;) &lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.partitions p &lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;p.partition_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;au.container_id&amp;#160; &lt;br /&gt;&lt;/font&gt;&lt;font color="magenta"&gt;LEFT &lt;/font&gt;&lt;font color="blue"&gt;JOIN &lt;/font&gt;&lt;font color="black"&gt;sys.indexes i&lt;br /&gt;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="blue"&gt;ON &lt;/font&gt;&lt;font color="black"&gt;p.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;i.&lt;/font&gt;&lt;font color="magenta"&gt;OBJECT_ID&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="gray"&gt;AND &lt;/font&gt;&lt;font color="black"&gt;p.index_id &lt;/font&gt;&lt;font color="blue"&gt;= &lt;/font&gt;&lt;font color="black"&gt;i.index_id&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font color="green"&gt;-- View the Page allocations &lt;br /&gt;&lt;/font&gt;&lt;font color="blue"&gt;DBCC &lt;/font&gt;&lt;font color="black"&gt;IND&lt;/font&gt;&lt;font color="gray"&gt;(&lt;/font&gt;&lt;font color="black"&gt;tempdb&lt;/font&gt;&lt;font color="gray"&gt;, &lt;/font&gt;&lt;font color="black"&gt;split_page&lt;/font&gt;&lt;font color="gray"&gt;, -&lt;/font&gt;&lt;font color="black"&gt;1&lt;/font&gt;&lt;font color="gray"&gt;);&lt;/font&gt;&lt;/pre&gt;

  &lt;p&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you run the above demo the output should be similar to the below (if you click on the picture, it will open up larger).&amp;#160; One thing that should become immediately obvious is that the same demo in Denali is doing 1/3rd of the page splits that occur in SQL Server 2008.&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image3_30D2C8F2.png" target="_blank"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="image" border="0" alt="image" src="http://sqlblog.com/blogs/jonathan_kehayias/image3_thumb_1CB9AC69.png" width="644" height="337" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The old_page_id and new_page_id tell where the page originated and moved to, and the splitOperation tells the type of split.&amp;#160; In this case only two of the type of splits are occurring; SPLIT_FOR_ROOT_NODE which occurs when the first page allocated is split into multiple pages, and SPLIT_FOR_INSERT which occurs as the inserts continue and the pages are split to accommodate the data.&amp;#160; There are a number of additional split operations that exist in SQL Server Denali CTP1 including, SPLIT_FOR_DELETE, SPLIT_FOR_GHOST, SPLIT_FOR_INTERNAL_NODE, and SPLIT_FOR_UPDATE.&amp;#160; I’ve tried to figure out how to correlate the output from DBCC IND with the data held in the Event Session for page splits to correlate the old_page_id and new_page_id to identify problematic splits, but haven’t finalized validation of my tests yet (hopefully I can finish this work and I’ll write an update to this blog post showing how to do this at some point in the near future).&amp;#160; One item that I have noted in my testing is that mid-page splits generally generate multiple sqlserver.page_split Events in the same operation, similar to the demonstrations used in this example, where as end-page splits for identity and sequential GUID inserts do not.&amp;#160; I am not certain that this is a valid conclusion to come to at this point and have further testing to do to investigate page splits more.&lt;/p&gt;</description></item><item><title>An XEvent a Day (26 of 31) – Configuring Session Options</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/12/26/an-xevent-a-day-26-of-31-configuring-session-options.aspx</link><pubDate>Mon, 27 Dec 2010 02:00:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:31977</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;There are 7 Session level options that can be configured in Extended Events that affect the way an Event Session operates.&amp;#160; These options can impact performance and should be considered when configuring an Event Session.&amp;#160; I have made use of a few of these periodically throughout this months blog posts, and in today’s blog post I’ll cover each of the options separately, and provide further information about their usage.&amp;#160; Mike Wachal from the Extended Events team at Microsoft, talked about the Session options on his blog post, &lt;a href="http://sqlblog.com/blogs/extended_events/archive/2010/03/31/option-trading-getting-the-most-out-of-the-event-session-options.aspx"&gt;Option Trading: Getting the most out of the event session options&lt;/a&gt;, and I’d recommend giving it a read for additional information as well.&lt;/p&gt;  &lt;h2&gt;EVENT_RETENTION_MODE&lt;/h2&gt;  &lt;p&gt;The EVENT_RETENTION_MODE option specifies how the Event Session handles Event loss when Events generate faster than they can be dispatched to the Targets.&amp;#160; There are three possible values for this option; ALLOW_SINGLE_EVENT_LOSS, ALLOW_MULTIPLE_EVENT_LOSS, and NO_EVENT_LOSS.&amp;#160; This option directly affects the possible impact that an Event Session may have on the performance of a system while the Event Session is active.&amp;#160; A trade off occurs between performance impact and the guarantee whether all Events are captured or not.&lt;/p&gt;  &lt;h3&gt;ALLOW_SINGLE_EVENT_LOSS &lt;/h3&gt;  &lt;p&gt;The ALLOW_SINGLE_EVENT_LOSS value is the system &lt;strong&gt;default&lt;/strong&gt; for all Event Sessions where the EVENT_RETENTION_MODE is not explicitly specified as a part of the Event Session definition.&amp;#160; This value allows single events to be dropped and lost from the session when the memory buffers for the Event Session are full and dispatch to the Targets can not keep up with the Event generation.&amp;#160; &lt;/p&gt;  &lt;h3&gt;ALLOW_MULTIPLE_EVENT_LOSS&lt;/h3&gt;  &lt;p&gt;The ALLOW_MULTIPLE_EVENT_LOSS value allows an entire memory buffer containing multiple events to be dropped and lost when the memory buffers are full and the Events are generating faster than the buffers can be dispatched to the Targets.&amp;#160; This can minimize the performance impact on the server at the trade off that many Events could potentially be lost, with the number of Events lost depending on the size of the Events being generated, the configuration of the MAX_MEMORY session option, and the MEMORY_PARTITION_MODE session option.&amp;#160; &lt;/p&gt;  &lt;h3&gt;NO_EVENT_LOSS&lt;/h3&gt;  &lt;p&gt;The NO_EVENT_LOSS value guarantees that all Events that fire are captured, but at the expense of possible system performance degradation when the Event Session is active.&amp;#160; If the memory buffers are all full and an Event fires, the task firing the Event will wait until space is available in a memory buffer for the Event to be buffered.&amp;#160; This option value is not recommended by the Extended Events team at Microsoft for most Event Sessions and should be used with extreme caution and only when it is absolutely necessary that every Event be captured, even at the expense of degraded performance of the system.&lt;/p&gt;  &lt;h2&gt;MAX_DISPATCH_LATENCY&lt;/h2&gt;  &lt;p&gt;The MAX_DISPATCH_LATENCY option specifies the time in seconds that Events are held in a memory buffer that is not full before being dispatched to the asynchronous session Targets.&amp;#160; The &lt;strong&gt;default&lt;/strong&gt; value if the MAX_DISPATCH_LATENCY is not explicitly defined in the Session definition is 30 seconds, and the option has a minimum value of 1 second.&amp;#160; If a value of 0 or INFINITE is specified, the Events held in a memory buffer will not be dispatched until the memory buffer becomes full.&lt;/p&gt;  &lt;h2&gt;MAX_EVENT_SIZE&lt;/h2&gt;  &lt;p&gt;The MAX_EVENT_SIZE option specifies the maximum size in kilobytes or megabytes an individual Event can be.&amp;#160; The &lt;strong&gt;default &lt;/strong&gt;value for this option when it is not explicitly set in the Session definition is 0KB, allowing the maximum Event size to be the size of a single memory buffer in the Event Session.&amp;#160; This option can be explicitly set to allow Events that are larger than a single memory buffer to be captured by the Event Session.&amp;#160; The minimum value for this option is 64KB.&lt;/p&gt;  &lt;h2&gt;MAX_MEMORY&lt;/h2&gt;  &lt;p&gt;The MAX_MEMORY option specifies the amount of memory in kilobytes or megabytes that is allocated to the memory buffers for the Event Session.&amp;#160; The value of this options is divided evenly amongst the memory buffers that are created for the Event Session based on the configuration of the MEMORY_PARTITION_MODE session option.&amp;#160; The MAX_MEMORY option can be used to increase the memory available for buffering Events when a large number of Events are expected to fire, minimizing Event loss due to full memory buffers.&amp;#160; The &lt;strong&gt;default &lt;/strong&gt;value for this option is 4 megabytes (MB) or 4096 kilobytes (KB).&amp;#160; &lt;/p&gt;  &lt;p&gt;Mike Wachal blogged about this option on the Extended Events blog &lt;a href="http://sqlblog.com/blogs/extended_events/archive/2010/06/29/take-it-to-the-max-and-beyond.aspx"&gt;Take it to the MAX (and beyond)&lt;/a&gt;, and again in response to a number of questions that I sent him early on in this blog series when I was working on a large NUMA based server, &lt;a href="http://sqlblog.com/blogs/extended_events/archive/2010/12/08/session-memory-who-s-this-guy-named-max-and-what-s-he-doing-with-my-memory.aspx"&gt;Session memory – who’s this guy named Max and what’s he doing with my memory?&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;MEMORY_PARTITION_MODE&lt;/h2&gt;  &lt;p&gt;The MEMORY_PARTITION_MODE option specifies how the memory buffers for the Event Session are created and/or partitioned.&amp;#160; For servers with multiple processors and/or multiple NUMA nodes the memory buffers can become a bottleneck performance wise if multiple CPU’s are firing Events and have to wait on a memory buffer to buffer the Event information being collected.&amp;#160; There are three values for this option; NONE, PER_NODE, and PER_CPU.&amp;#160; &lt;/p&gt;  &lt;h3&gt;NONE &lt;/h3&gt;  &lt;p&gt;The NONE value specifies that a single set of memory buffers will be created for the Event Session.&amp;#160; In this configuration, three memory buffers are created for the Event Session, and the memory for the Event Session is divided evenly, to the nearest 64KB boundary, amongst the three memory buffers.&amp;#160; This is the &lt;strong&gt;default &lt;/strong&gt;value for an Event Session if the MEMORY_PARTITION_MODE is not explicitly defined.&lt;/p&gt;  &lt;h3&gt;PER_NODE&lt;/h3&gt;  &lt;p&gt;The PER_NODE value specifies that a separate set of three memory buffers will be created.&amp;#160; In this configuration, three memory buffers are created for each NUMA node that exists for the SQL Server Instance, and the memory is divided evenly, to the nearest 64KB boundary, amongst all of the memory buffers.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;h3&gt;PER_CPU&lt;/h3&gt;  &lt;p&gt;The PER_CPU value specifies that a set of memory buffers is created for each CPUs/Scheduler that is assigned to the SQL Server Instance.&amp;#160; In this configuration, the number of memory buffers is 2.5 times the number of CPUs/Schedulers available, and the memory is divided evenly, to the nearest 64KB boundary, amongst all of the memory buffers.&lt;/p&gt;  &lt;h2&gt;STARTUP_STATE&lt;/h2&gt;  &lt;p&gt;The STARTUP_STATE option specifies whether an Event Session automatically starts in an Active state when the SQL Server Instance starts up.&amp;#160; There are two valid values for this option, ON and OFF, with OFF being the &lt;strong&gt;default&lt;/strong&gt;.&lt;/p&gt;  &lt;h2&gt;TRACK_CAUSALITY&lt;/h2&gt;  &lt;p&gt;The TRACK_CAUSALITY option specifies whether causality tracking across multiple Events is turned ON or OFF.&amp;#160; The &lt;strong&gt;default&lt;/strong&gt; configuration for this option is OFF.&amp;#160; When TRACK_CAUSALITY is turned on, an additional Action, package0.attach_activity_id, is added to each Event that fires in the Event Session.&amp;#160; This Action is a combination GUID and sequence number that allows related Events to be tracked for cause and effect analysis of the Events that fired in the order in which they have fired.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;I should make note of the fact that in many cases, the options specified in the blog posts, may not be appropriate for a production implementation, and may have been made based on the fact that I just didn’t want to wait over multiple test cycles for Events to dispatch to the Targets.&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>