<?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 tags 'Database Administration', 'SQL Server 2008 R2', and 'SQL Server 2008'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Database+Administration,SQL+Server+2008+R2,SQL+Server+2008&amp;orTags=0</link><description>Search results matching tags 'Database Administration', 'SQL Server 2008 R2', and 'SQL Server 2008'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><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>Policy Based Management and the Unknown LoginMode</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/09/15/policy-based-management-and-the-unknown-loginmode.aspx</link><pubDate>Wed, 15 Sep 2010 05:47:10 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:28778</guid><dc:creator>jmkehayias</dc:creator><description>&lt;p&gt;The topic of this post comes from a question on the MSDN Forums, and had it not been for some advice from Buck Woody (&lt;a href="http://sqlblog/blogs/buck_woody" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/buckwoody" target="_blank"&gt;twitter&lt;/a&gt;), I never would have known the answer.&amp;#160; Lately I’ve been doing a lot of work with Policy Based Management, in particular, working with Lara Rubbelke’s (&lt;a href="http://sqlblog.com/blogs/lara_rubbelke" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/SQLGal" target="_blank"&gt;twitter&lt;/a&gt;) &lt;a href="http://epmframework.codeplex.com/" target="_blank"&gt;Enterprise Policy Management Framework&lt;/a&gt; which is a free download from Codeplex and builds on &lt;a href="http://msdn.microsoft.com/en-us/library/dd938891(SQL.100).aspx" target="_blank"&gt;SQL Server 2008 Policy Based Management&lt;/a&gt;, &lt;a href="http://technet.microsoft.com/en-us/scriptcenter/powershell.aspx" target="_blank"&gt;Powershell&lt;/a&gt;, and the &lt;a href="http://msdn.microsoft.com/en-us/library/bb677306.aspx" target="_blank"&gt;Management Data Warehouse&lt;/a&gt; to provide an Enterprise level solution for managing SQL Server 2000, 2005, and 2008 from a &lt;a href="http://sqlserverpedia.com/wiki/Central_Management_Server" target="_blank"&gt;Central Management Server&lt;/a&gt;.&amp;#160; One of the great things about this is that it uses features that are already built into SQL Server 2008, it is easy to get up and running right out of the box, and it is highly extensible and configurable to meet the requirements of almost any environment.&lt;/p&gt;  &lt;p&gt;Now that I have gotten the &lt;strike&gt;butt kissing&lt;/strike&gt; acknowledgements out of the way, lets talk for a minute about Policy Based Management and the question that was posed, ultimately leading to the purpose behind this blog post.&amp;#160; The question on the forums post was:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;While working on Policy based managements, I found an option unknown in the authentication mode.&amp;#160; &lt;br /&gt;I have heard windows/mixed and sql server authentication. Whats this unknown authentication type. Any thoughts from experts.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you’ve never worked with Policy Based Management before, you probably don’t know that it is driven by the &lt;a href="http://msdn.microsoft.com/en-us/library/ms212724.aspx" target="_blank"&gt;SQL Management Object (SMO)&lt;/a&gt; libraries that ship with SQL Server and are accessible through .NET.&amp;#160; These are the same libraries on top of which SQL Server Management Studio are built, and they provide a common interface through which you can access SQL Server and perform a number of management tasks in a programmatic manner.&amp;#160; To be honest I had never looked at the particular facet that was in question here so I jumped onto my SQL Server 2008 test VM and took a quick look at it in SSMS, but alas its not quite that simple.&amp;#160; To find the specific object that was being asked about here you have to know at a basic level where you might set the Authentication Mode for SQL Server in SSMS, which happens to be on the Server Properties dialog under the Security tree option, so I scrolled down and found the Server Security facet and opened its Properties dialog:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_0E4A01E7.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_48291F06.png" width="644" height="350" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So looking at this I could see that the actual property being referenced is the LoginMode property, so I jumped into IE to search my favorite search engine &lt;strike&gt;Google&lt;/strike&gt; Bing (ok its really Google, but I just typed it into the search box in IE which took me to Bing) and did a search for “smo server loginmode” which provided me with a link to the BOL topic &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.server.loginmode(SQL.100).aspx" target="_blank"&gt;Server.LoginMode Property&lt;/a&gt;.&amp;#160; If you look at the Property Value for this entry it contains a link to the BOL Topic for the &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.serverloginmode(v=SQL.100).aspx" target="_blank"&gt;ServerLoginMode Enumeration&lt;/a&gt;, which has included in it, an Unknown Enumeration value for the LoginMode property.&amp;#160; Where, you might ask, do you find this in Policy Based Management?&amp;#160; I am glad you asked.&lt;/p&gt;  &lt;p&gt;To see the available options for the LoginMode in Policy Based Management, right click on the Server Security facet, and select New Condition:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_0FBAF82E.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_4F18ABBE.png" width="244" height="156" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Add a Name to the Condition, which I have called “Authentication Mode Not Unknown” and then in the Expression region click the drop down for Field (or click the ellipsis) and select @LoginMode.&amp;#160; Then click the dropdown for Value, and the last option listed is Unknown.&amp;#160; For the sake of brevity, change the operator to !=, and select the Unknown value type and then click on OK to create this condition on the server, which we will use later on.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_4DD412DF.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_72852A56.png" width="644" height="452" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Once you create a Condition, if you refresh the Conditions folder under Management&amp;gt;Policy Management in SSMS you will see the Condition we just created.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_5693F55E.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_0093F387.png" width="244" height="155" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;My first response to the question was that the facet just offers up the options that are available in the SMO Enumeration as possible values, but that didn’t really answer the problem that the poster had for the question, and the response back was:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;I am not clear with you answer.        &lt;br /&gt;correct me If I am wrong. Unknown option will not work in this scenario. Guessing it's a bug.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;My response to this was the well coined phrase by Paul Randal (&lt;a href="http://sqlskills.com/BLOGS/PAUL" target="_blank"&gt;blog&lt;/a&gt;|&lt;a href="http://twitter.com/paulrandal" target="_blank"&gt;twitter&lt;/a&gt;), “It Depends”.&amp;#160; Does Unknown actually apply here?&amp;#160; Its a possible value for the SMO Enumeration so its certainly not a bug, Microsoft didn’t decide to just put an arbitrary “Unknown” value in the SMO Enumeration for nothing.&amp;#160; However, to understand why “Unknown” is a possible valid value for this facet, you have to know a bit more about how the LoginMode property in SQL Server is actually configured.&amp;#160; Its not implemented like a lot of the other configuration properties for the SQL Server Instance, that being a sp_configure option that is stored in the engine, it is instead implemented as a registry key that is editable through means outside of SQL Server and therefore can be set to values that are not applicable and could be in fact “Unknown”.&amp;#160; &lt;/p&gt;  &lt;p&gt;To see this, connect to any SQL Server, 2000, 2005, or 2008 instance in SSMS and right click on the Server Node in Object Explorer.&amp;#160; Open the Properties Dialog and then click on Security in the treeview on the left hand side.&amp;#160; Change the Login Mode configuration option from whatever it is currently set to to the other option and then click on the Script Button at the top of the dialog box.&amp;#160; When you do this, a script similar to the following will be generated, relative of course to the instance to which you connected:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;USE [master]      &lt;br /&gt;GO       &lt;br /&gt;EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2       &lt;br /&gt;GO&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can also see this value by running the Windows Registry Editor (regedit) and navigating to the corresponding key entry for the SQL Server Instance you are looking at.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Fair Warning:&amp;#160; DO NOT just arbitrarily play with the above TSQL command, the Server Properties Dialog, or the Windows Registry Editor (regedit) on a production or otherwise important server in your workplace, you can screw it up!!!&amp;#160; If you break something based on the information in this blog post it is your problem, not mine.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Since there are a few different ways to set values for this registry key, and none of them implement any sort of validity checks, it is very understandable that an invalid value can be set for it.&amp;#160; To validate this, because I &lt;strike&gt;love to break things&lt;/strike&gt; wanted to ensure that I was providing a valid response, I decided to play around on my 2008 VM for a second and used a PowerShell script to validate the SMO Enumeration output for ServerLoginMode under various values for this registry key.&amp;#160; What I found was the following mappings between the registry key value and the ServerLoginMode Enumeration output:&lt;/p&gt;  &lt;div align="center"&gt;   &lt;table cellspacing="0" cellpadding="2" align="center"&gt;       &lt;tr&gt;         &lt;td&gt;0&lt;/td&gt;          &lt;td&gt;Normal&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;1&lt;/td&gt;          &lt;td&gt;Integrated&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;2&lt;/td&gt;          &lt;td&gt;Mixed&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;3+&lt;/td&gt;          &lt;td&gt;Unknown&lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/div&gt;  &lt;p&gt;The PowerShell Script I used to test this was really simple:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.SqlServer.SMO&amp;quot;)&amp;#160; | Out-Null      &lt;br /&gt;$smosvr = New-Object ('Microsoft.SqlServer.Management.Smo.Server') &amp;quot;.&amp;quot;       &lt;br /&gt;$smosvr.LoginMode &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So how does this play into Policy Based Management?&amp;#160; I am glad you asked.&amp;#160; Consider for a moment that you have a large SQL Server environment consisting of a few hundred SQL Servers with varying versions from 2000 to 2008 R2, and you wanted to check to see if any of them had an incorrect value setup for the LoginMode Server Security Property.&amp;#160; Using the previously created Condition from this blog post, we can easily define a Policy that can be used inside of the Enterprise Policy Management Framework to look for servers that have an invalid registry key value set for the LoginMode Server Property.&amp;#160; To do this we simply have to define a Policy on the Condition so that we can evaluate our servers for Unknown Authentication Modes and plan to correct them according to our established configuration.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_5F344DEA.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_6FEBD2CB.png" width="580" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Once we create the Policy, we can validate that it exists by refreshing the Policies folder under Management &amp;gt; Policy Management in SSMS.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_502CD336.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_19DBAB27.png" width="244" height="103" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To test out our new Policy and Condition, we can do a simple evaluation on our test server by right clicking the Policy and selecting Evaluate from the context menu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_1F4A1BCB.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_7CA5DD4F.png" width="229" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;If the server is properly configured, the Result Dialog will show up with all green in it showing that the Policy passed Evaluation on a properly configured server:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_1B101E39.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_71B8D63A.png" width="538" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now that we have validated that the Policy indeed returns correctly for a valid configuration, we need to set an invalid value for the registry key so that we can validate that the Policy fails for an invalid or “Unknown” value for the LoginMode on the server. To set an invalid value, we can simply change the TSQL query from above &lt;font color="#ff0000"&gt;&lt;strong&gt;(READ THE FAIR WARNING) &lt;/strong&gt;&lt;/font&gt;&lt;font color="#000000"&gt;and execute the query:&lt;/font&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;USE [master]      &lt;br /&gt;GO       &lt;br /&gt;EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 4       &lt;br /&gt;GO&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now with an invalid value set, we can go back and re-evaluate the Policy and make sure that it fails, which it should if you set things up correctly.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_423A41A1.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_664F7663.png" width="538" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;One of the best parts about using Policy Based Management is that you don’t have to just accept that “Ok, it failed” you can actually click on View Details for the specific instance of a failure, you can see the actual results that were evaluated against the condition to determine the specific cause of the failure.&amp;#160; In this case, the output of the SMO Enumeration is “Unknown” in violation of our specific Condition, resulting in a Policy failure for this instance of SQL.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/image_301DD847.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_15713C2E.png" width="536" height="484" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Hopefully you found this post to be &lt;strike&gt;the best post you’ve read all week&lt;/strike&gt; really insightful into not only how Policy Based Management actually works, but also into how you can leverage some of the existing features in the SQL Server 2008 product set to learn more about your environment, and provide a better level of service, as well as gain in depth information about your servers configurations.&lt;/p&gt;</description></item></channel></rss>