<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/6.11.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>SQL Server &#38; BI Blog by Andreas Wolter - Category: "SQL Server 2014"</title>
		<link>https://www.insidesql.org/blogs/andreaswolter/</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2" />
		<description>InsideSQL.org Blogs - Blogs über SQL Server</description>
		<language>en-EU</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=6.11.7-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Dieser Blog ist umgezogen // This Blog has moved: http://andreas-wolter.com/blog/</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2017/09/blog-umgezogen-this-blog-moved-andreas-wolter-com</link>
			<pubDate>Wed, 20 Sep 2017 10:41:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">Seminare</category>
<category domain="alt">SQLPASS</category>
<category domain="alt">Tracing &amp; Monitoring</category>
<category domain="alt">Analysis Services</category>
<category domain="alt">Extended Events</category>
<category domain="alt">Conferences</category>
<category domain="alt">Oracle</category>
<category domain="alt">Security</category>
<category domain="alt">Locking &amp; Blocking</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">SQL Server 2014</category>
<category domain="alt">Indexing</category>
<category domain="alt">Columnstore Index</category>
<category domain="alt">APS/Parallel Data Warehouse</category>
<category domain="alt">Reporting Services</category>
<category domain="alt">Integration Services</category>
<category domain="main">Miscellaneous</category>
<category domain="alt">Geospatial</category>
<category domain="alt">Certification, MCM &amp; MCSM, MVP</category>
<category domain="alt">In-Memory OLTP / XTP, HTAP</category>
<category domain="alt">Surveys / Umfragen</category>
<category domain="alt">Scripts</category>
<category domain="alt">HADR, AlwaysOn</category>
<category domain="alt">MDW</category>
<category domain="alt">Storage Engine</category>
<category domain="alt">Trivia</category>
<category domain="alt">Azure</category>
<category domain="alt">Performance</category>
<category domain="alt">SQL Server 2016</category>
<category domain="alt">Patching</category>			<guid isPermaLink="false">3918@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;&lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;http://andreas-wolter.com/blog/&lt;/a&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Liebe Leser&lt;br /&gt; dieser Blog ist hiermit nur noch „Archiv“ und wird nicht mehr weiter gepflegt.&lt;br /&gt; Seit August 2017 finden sich neue Artikel ausschließlich unter der &lt;strong&gt;neuen URL:&lt;br /&gt; &lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;http://andreas-wolter.com/blog/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Dear Readers&lt;br /&gt; this blog is now merely an „archive“ and no longer being updated.&lt;br /&gt; Since August 2017 new articles are exclusively available under the &lt;strong&gt;new URL:&lt;br /&gt; &lt;a href=&quot;http://andreas-wolter.com/en/blog/&quot;&gt;http://andreas-wolter.com/en/blog/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Die aufwändige Mehrsprachigkeit (Deutsch und Englisch professionell manuell übersetzt) wird beibehalten – aber Layout-technisch anders gelöst. Damit dürfte ich immer noch den einzigen mehrsprachigen IT-Blog weltweit betreiben.&lt;br /&gt; Ich hoffe, das neue Design gefällt Ihnen.&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;The complex multilingualism (German and English professionally manually translated) is being continued – but solved differently in terms of layout. With that I most likely still operate the only multilingual IT-Blog worldwide.&lt;br /&gt; I hope you like the new design.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class=&quot;image_block&quot;&gt;&lt;a href=&quot;http://andreas-wolter.com/blog/&quot;&gt;&lt;img class=&quot;loadimg&quot; src=&quot;http://www.insidesql.org/blogs/media/blogs/andreaswolter/quick-uploads/p3918/170918_website_blog.jpg?mtime=1505903940&quot; alt=&quot;&quot; width=&quot;800&quot; height=&quot;552&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;Mein aktueller Artikel, der erstmalig ausschließlich auf der neuen Website zu finden ist, lautet: &lt;strong&gt;&lt;a href=&quot;http://andreas-wolter.com/optimierung-von-workflows-mit-inmemory-objekten/&quot;&gt;Optimieren von Workflows mit In-Memory und nativ kompilierten Objekten - oder wie es nicht funktioniert&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td width=&quot;302&quot;&gt;
&lt;p&gt;My currently last article, which is exclusively available at the new website for the first time, is &lt;strong&gt;&lt;a href=&quot;http://andreas-wolter.com/en/optimizing-workflows/&quot;&gt;Optimizing workflows with In-Memory and Natively Compiled Objects - or how it does not work&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Cu at my new Blog&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p><a href="http://andreas-wolter.com/blog/">http://andreas-wolter.com/blog/</a></p>
<table>
<tbody>
<tr>
<td width="302">
<p>Liebe Leser<br /> dieser Blog ist hiermit nur noch „Archiv“ und wird nicht mehr weiter gepflegt.<br /> Seit August 2017 finden sich neue Artikel ausschließlich unter der <strong>neuen URL:<br /> <a href="http://andreas-wolter.com/blog/">http://andreas-wolter.com/blog/</a></strong></p>
</td>
<td width="302">
<p>Dear Readers<br /> this blog is now merely an „archive“ and no longer being updated.<br /> Since August 2017 new articles are exclusively available under the <strong>new URL:<br /> <a href="http://andreas-wolter.com/en/blog/">http://andreas-wolter.com/en/blog/</a></strong></p>
</td>
</tr>
<tr>
<td width="302">
<p>Die aufwändige Mehrsprachigkeit (Deutsch und Englisch professionell manuell übersetzt) wird beibehalten – aber Layout-technisch anders gelöst. Damit dürfte ich immer noch den einzigen mehrsprachigen IT-Blog weltweit betreiben.<br /> Ich hoffe, das neue Design gefällt Ihnen.</p>
</td>
<td width="302">
<p>The complex multilingualism (German and English professionally manually translated) is being continued – but solved differently in terms of layout. With that I most likely still operate the only multilingual IT-Blog worldwide.<br /> I hope you like the new design.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<div class="image_block"><a href="http://andreas-wolter.com/blog/"><img class="loadimg" src="http://www.insidesql.org/blogs/media/blogs/andreaswolter/quick-uploads/p3918/170918_website_blog.jpg?mtime=1505903940" alt="" width="800" height="552" /></a></div>
<p> </p>
<table>
<tbody>
<tr>
<td width="302">
<p>Mein aktueller Artikel, der erstmalig ausschließlich auf der neuen Website zu finden ist, lautet: <strong><a href="http://andreas-wolter.com/optimierung-von-workflows-mit-inmemory-objekten/">Optimieren von Workflows mit In-Memory und nativ kompilierten Objekten - oder wie es nicht funktioniert</a></strong></p>
</td>
<td width="302">
<p>My currently last article, which is exclusively available at the new website for the first time, is <strong><a href="http://andreas-wolter.com/en/optimizing-workflows/">Optimizing workflows with In-Memory and Natively Compiled Objects - or how it does not work</a></strong></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Cu at my new Blog</p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2017/09/blog-umgezogen-this-blog-moved-andreas-wolter-com#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3918</wfw:commentRss>
		</item>
				<item>
			<title>Upcoming conferences end of 2014: Microsoft Technical Server Summit, MVP Summit, PASS Summit, Microsoft Technical Summit</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2014/10/upcoming-conferences-2014-microsoft-technical-server-summit-mvp-summit-pass-summit-microsoft-technical-summit</link>
			<pubDate>Wed, 15 Oct 2014 15:36:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">SQLPASS</category>
<category domain="main">Conferences</category>
<category domain="alt">SQL Server 2014</category>
<category domain="alt">In-Memory OLTP / XTP, HTAP</category>			<guid isPermaLink="false">3732@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(DE)&lt;br /&gt; Das Jahresende nähert sich in raschen Schritten. In den nächsten 3 Monaten stehen wieder mehrere Konferenzauftritte an.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(EN)&lt;br /&gt; The end of year is approaching fast. For the next three months, several conferences are scheduled.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Nach der Vorstellung des SQL Server 2014 (&lt;strong&gt;&lt;a href=&quot;http://basta.net/2014/sessions/sql-server-2014-highlights-der-datenbank-engine-im-ueberblick&quot; target=&quot;_blank&quot;&gt;SQL Server 2014 - Highlights in der Datenbank-Engine im Überblick&lt;/a&gt;&lt;/strong&gt;) auf der BASTA im September in Mainz, geht es weiter im Oktober auf dem &lt;strong&gt;Microsoft Technical Server Summit &lt;/strong&gt;in Düsseldorf mit einem Vortrag zu &lt;a href=&quot;https://server-summit.de/Site/Home/Agenda&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Neue Speicherformen in SQL Server 2014&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;After the introduction of SQL Server 2014 at the BASTA in September in Mainz/Germany, I am continuing in October with a presentation on &lt;a href=&quot;https://server-summit.de/Site/Home/Agenda&quot;&gt;&lt;strong&gt;New Storage-Types in SQL Server 2014&lt;/strong&gt;&lt;/a&gt; at the &lt;strong&gt;Microsoft Technical Server Summit &lt;/strong&gt;Düsseldorf/Germany:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1410_Microsoft_Technical_Server_Summit.png&quot; alt=&quot;&quot; width=&quot;431&quot; height=&quot;127&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p align=&quot;left&quot;&gt;Clustered Columnstore für DW und In-Memory OLTP - technische Hintergründe und Herausforderungen&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;Mit dem SQL Server 2014 kommt eine komplett neue Storage-Engine in den SQL Server: XTP mit Memory-optimierten Tabellen &amp;amp; Indexen. Und bereits seit der Version 2012 ist auch das ColumnStore-Format in die Engine integriert, welche in 2014 entscheidende Verbesserungen erfährt. In dieser Session wird der Microsoft Certified Master, Andreas Wolter, die technischen Hintergründe der neuen Speicherformen- &amp;amp; Engines beleuchten und ihre Vorteile demonstrieren. Ebenfalls aufgezeigt werden die technischen Herausforderungen dieser teilweise noch brandneuen Technologien, so dass Sie ein gutes Verständnis für die jeweils optimalen Einsatzszenarien und möglichen Migrationsaufwand mitnehmen können.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Anfang November folgt dann das alljährliche Highlight: Nach dem &lt;strong&gt;&lt;a href=&quot;http://mvp.microsoft.com/en-us/summit.aspx&quot;&gt;MVP Summit&lt;/a&gt;&lt;/strong&gt;, wo ich hoffe die neuesten Entwicklungen hinsichtlich der nächsten Version des SQL Server zu erfahren, bin ich wie seit 2009 jedes Jahr auf dem &lt;strong&gt;PASS Summit in Seattle/USA&lt;/strong&gt;.&lt;br /&gt; Der Summit ist die erste Anlaufstelle für alle diejenigen, die immer auf dem Neusten Stand sein möchten. Was hier verkündet wird, wird die Inhalte der nächsten 1-2 Jahre auf anderen, kleineren Konferenzen und den Regionalgruppen der PASS weltweit bestimmen.&lt;br /&gt; Dazu kommt der wertvolle direkte Kontakt zu den Entwicklern des SQL Servers vor Ort.&lt;br /&gt; Auch dieses Jahr trage ich wieder selber vor, allerdings nur einen Kurzvortrag, und zwar zu dem &lt;a href=&quot;http://www.sqlpass.org/summit/2014/Sessions/Details.aspx?sid=6927&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Reporting Services Map Reports &amp;amp; Dynamic ZOomiNG&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;This is followed by the annual highlight at the beginning of November: After the &lt;strong&gt;&lt;a href=&quot;http://mvp.microsoft.com/en-us/summit.aspx&quot;&gt;MVP Summit&lt;/a&gt;&lt;/strong&gt;, at which I’m hoping to learn about the most recent developments in terms of the forthcoming SQL Server, I will be attending the &lt;strong&gt;PASS Summit in Seattle/USA&lt;/strong&gt;, which has become an annual habit since 2009.&lt;br /&gt; The summit is the first point of contact for all those who want to always be up-to-date.  The topics raised here will determine the content of the next one to two years at other, smaller-scale conferences as well at the regional groups of PASS worldwide.&lt;/p&gt;
&lt;p&gt;Furthermore, the summit provides the valuable opportunity to connect directly with the developers of SQL Server on site.&lt;/p&gt;
&lt;p&gt;This year, too, I will be presenting myself; however, just a short presentation, which will be on &lt;a href=&quot;http://www.sqlpass.org/summit/2014/Sessions/Details.aspx?sid=6927&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Reporting Services Map Reports &amp;amp; Dynamic ZOomiNG&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1410_PASS_Summit_20141.png&quot; alt=&quot;&quot; width=&quot;348&quot; height=&quot;100&quot; /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p align=&quot;left&quot;&gt;Reporting Services Map Reports &amp;amp; Dynamic ZOomiNG:&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;With the advent of Power Map, Reporting Services maps seem even more static than they already were. But do maps really have to be that static?&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;While we will not be able to spin the globe within a report, there are at least a few ways to get some action inside a map.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;In this session, we will look at an implementation of how to dynamically zoom in and out of a reporting services map without the use of subreports. Add this to your tool kit to increase the interactive experience of your geospatial reports.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Kaum zurück in Deutschland bin ich in Berlin auf dem &lt;strong&gt;Microsoft Technical Summit&lt;/strong&gt;, wo auch der neue CEO von Microsoft, &lt;strong&gt;Satya Nadella&lt;/strong&gt; eine Keynote halten wird.&lt;br /&gt; Dort werde ich zusammen mit Patrick Heyde, Microsoft (&lt;a href=&quot;http://blogs.technet.com/b/patrick_heyde/&quot; target=&quot;_blank&quot;&gt;Blog&lt;/a&gt;), das neueste zu der nächsten SQL Server Version präsentieren, soweit bis dahin schon für die Öffentlichkeit freigegeben ist. Zusätzlich dazu werde ich einen &lt;strong&gt;&lt;em&gt;Deep Dive-Vortrag in In-Memory&lt;/em&gt;&lt;/strong&gt; geben.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Once back in Germany, my next stop will be the &lt;strong&gt;Microsoft Technical Summit&lt;/strong&gt; in Berlin where Microsoft’s new CEO, &lt;strong&gt;Satya Nadella&lt;/strong&gt;, will be giving a keynote speech.&lt;/p&gt;
&lt;p&gt;There, I will be presenting the latest on the forthcoming SQL Server version together with Patrick Heyde, Microsoft (&lt;a href=&quot;http://blogs.technet.com/b/patrick_heyde/&quot; target=&quot;_blank&quot;&gt;Blog&lt;/a&gt;) - as far as already released for the public. Additionally I will be giving a &lt;strong&gt;&lt;em&gt;Deep Dive-presentation in In-Memory&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;blockquote&gt;
&lt;p align=&quot;left&quot;&gt;Die genauen Inhalte der Session werden kurzfristig bekanntgegeben. Soviel sei verraten: Gezeigt werden Neuigkeiten rund um die nächste Version von SQL Server. Die Szenarien reichen von der Datenbank-Engine bis in die Cloud (Microsoft Azure) und decken On-Premise- und Cloud-Umgebungen ab. Seien sie also gespannt auf die kommenden Möglichkeiten mit On-Premise-, Hybrid- und Cloud-Only-Szenarien.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Im Dezember der würdige Abschluss mit dem alljährlichen &lt;strong&gt;PASS Cam&lt;/strong&gt;p, ebenfalls zum Thema In-Memory: &lt;strong&gt;&lt;em&gt;In-Memory vNext and lessons learned&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Hier spreche ich seit 2011 das 4. Mal in Folge.&lt;strong&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;December will see the worthy finale with the annual &lt;strong&gt;PASS Camp&lt;/strong&gt;, likewise on the topic of In-Memory: &lt;strong&gt;&lt;em&gt;In-Memory vNext and lessons learned.&lt;/em&gt;&lt;/strong&gt; Here I am speaking the fourth time in a row since 2011&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1412_PASS_Camp.png&quot; alt=&quot;&quot; width=&quot;300&quot; height=&quot;38&quot; /&gt;&lt;/p&gt;
&lt;p&gt; I hope to see some of you around somewhere,&lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(DE)<br /> Das Jahresende nähert sich in raschen Schritten. In den nächsten 3 Monaten stehen wieder mehrere Konferenzauftritte an.</p>
</td>
<td valign="top" width="334">
<p>(EN)<br /> The end of year is approaching fast. For the next three months, several conferences are scheduled.</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>Nach der Vorstellung des SQL Server 2014 (<strong><a href="http://basta.net/2014/sessions/sql-server-2014-highlights-der-datenbank-engine-im-ueberblick" target="_blank">SQL Server 2014 - Highlights in der Datenbank-Engine im Überblick</a></strong>) auf der BASTA im September in Mainz, geht es weiter im Oktober auf dem <strong>Microsoft Technical Server Summit </strong>in Düsseldorf mit einem Vortrag zu <a href="https://server-summit.de/Site/Home/Agenda" target="_blank"><strong>Neue Speicherformen in SQL Server 2014</strong></a><strong>:</strong></p>
</td>
<td valign="top" width="334">
<p>After the introduction of SQL Server 2014 at the BASTA in September in Mainz/Germany, I am continuing in October with a presentation on <a href="https://server-summit.de/Site/Home/Agenda"><strong>New Storage-Types in SQL Server 2014</strong></a> at the <strong>Microsoft Technical Server Summit </strong>Düsseldorf/Germany:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p><img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1410_Microsoft_Technical_Server_Summit.png" alt="" width="431" height="127" /></p>
<p> </p>
<blockquote>
<p align="left">Clustered Columnstore für DW und In-Memory OLTP - technische Hintergründe und Herausforderungen</p>
<p align="left">Mit dem SQL Server 2014 kommt eine komplett neue Storage-Engine in den SQL Server: XTP mit Memory-optimierten Tabellen &amp; Indexen. Und bereits seit der Version 2012 ist auch das ColumnStore-Format in die Engine integriert, welche in 2014 entscheidende Verbesserungen erfährt. In dieser Session wird der Microsoft Certified Master, Andreas Wolter, die technischen Hintergründe der neuen Speicherformen- &amp; Engines beleuchten und ihre Vorteile demonstrieren. Ebenfalls aufgezeigt werden die technischen Herausforderungen dieser teilweise noch brandneuen Technologien, so dass Sie ein gutes Verständnis für die jeweils optimalen Einsatzszenarien und möglichen Migrationsaufwand mitnehmen können.</p>
</blockquote>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Anfang November folgt dann das alljährliche Highlight: Nach dem <strong><a href="http://mvp.microsoft.com/en-us/summit.aspx">MVP Summit</a></strong>, wo ich hoffe die neuesten Entwicklungen hinsichtlich der nächsten Version des SQL Server zu erfahren, bin ich wie seit 2009 jedes Jahr auf dem <strong>PASS Summit in Seattle/USA</strong>.<br /> Der Summit ist die erste Anlaufstelle für alle diejenigen, die immer auf dem Neusten Stand sein möchten. Was hier verkündet wird, wird die Inhalte der nächsten 1-2 Jahre auf anderen, kleineren Konferenzen und den Regionalgruppen der PASS weltweit bestimmen.<br /> Dazu kommt der wertvolle direkte Kontakt zu den Entwicklern des SQL Servers vor Ort.<br /> Auch dieses Jahr trage ich wieder selber vor, allerdings nur einen Kurzvortrag, und zwar zu dem <a href="http://www.sqlpass.org/summit/2014/Sessions/Details.aspx?sid=6927" target="_blank"><strong>Reporting Services Map Reports &amp; Dynamic ZOomiNG</strong></a><strong>:</strong></p>
</td>
<td valign="top" width="334">
<p>This is followed by the annual highlight at the beginning of November: After the <strong><a href="http://mvp.microsoft.com/en-us/summit.aspx">MVP Summit</a></strong>, at which I’m hoping to learn about the most recent developments in terms of the forthcoming SQL Server, I will be attending the <strong>PASS Summit in Seattle/USA</strong>, which has become an annual habit since 2009.<br /> The summit is the first point of contact for all those who want to always be up-to-date.  The topics raised here will determine the content of the next one to two years at other, smaller-scale conferences as well at the regional groups of PASS worldwide.</p>
<p>Furthermore, the summit provides the valuable opportunity to connect directly with the developers of SQL Server on site.</p>
<p>This year, too, I will be presenting myself; however, just a short presentation, which will be on <a href="http://www.sqlpass.org/summit/2014/Sessions/Details.aspx?sid=6927" target="_blank"><strong>Reporting Services Map Reports &amp; Dynamic ZOomiNG</strong></a><strong>:</strong></p>
</td>
</tr>
</tbody>
</table>
<p><img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1410_PASS_Summit_20141.png" alt="" width="348" height="100" /></p>
<blockquote>
<p align="left">Reporting Services Map Reports &amp; Dynamic ZOomiNG:</p>
<p align="left">With the advent of Power Map, Reporting Services maps seem even more static than they already were. But do maps really have to be that static?</p>
<p align="left">While we will not be able to spin the globe within a report, there are at least a few ways to get some action inside a map.</p>
<p align="left">In this session, we will look at an implementation of how to dynamically zoom in and out of a reporting services map without the use of subreports. Add this to your tool kit to increase the interactive experience of your geospatial reports.</p>
</blockquote>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Kaum zurück in Deutschland bin ich in Berlin auf dem <strong>Microsoft Technical Summit</strong>, wo auch der neue CEO von Microsoft, <strong>Satya Nadella</strong> eine Keynote halten wird.<br /> Dort werde ich zusammen mit Patrick Heyde, Microsoft (<a href="http://blogs.technet.com/b/patrick_heyde/" target="_blank">Blog</a>), das neueste zu der nächsten SQL Server Version präsentieren, soweit bis dahin schon für die Öffentlichkeit freigegeben ist. Zusätzlich dazu werde ich einen <strong><em>Deep Dive-Vortrag in In-Memory</em></strong> geben.</p>
</td>
<td valign="top" width="334">
<p>Once back in Germany, my next stop will be the <strong>Microsoft Technical Summit</strong> in Berlin where Microsoft’s new CEO, <strong>Satya Nadella</strong>, will be giving a keynote speech.</p>
<p>There, I will be presenting the latest on the forthcoming SQL Server version together with Patrick Heyde, Microsoft (<a href="http://blogs.technet.com/b/patrick_heyde/" target="_blank">Blog</a>) - as far as already released for the public. Additionally I will be giving a <strong><em>Deep Dive-presentation in In-Memory</em></strong>.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<blockquote>
<p align="left">Die genauen Inhalte der Session werden kurzfristig bekanntgegeben. Soviel sei verraten: Gezeigt werden Neuigkeiten rund um die nächste Version von SQL Server. Die Szenarien reichen von der Datenbank-Engine bis in die Cloud (Microsoft Azure) und decken On-Premise- und Cloud-Umgebungen ab. Seien sie also gespannt auf die kommenden Möglichkeiten mit On-Premise-, Hybrid- und Cloud-Only-Szenarien.</p>
</blockquote>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Im Dezember der würdige Abschluss mit dem alljährlichen <strong>PASS Cam</strong>p, ebenfalls zum Thema In-Memory: <strong><em>In-Memory vNext and lessons learned<br /></em></strong>Hier spreche ich seit 2011 das 4. Mal in Folge.<strong><em><br /></em></strong></p>
</td>
<td valign="top" width="334">
<p>December will see the worthy finale with the annual <strong>PASS Camp</strong>, likewise on the topic of In-Memory: <strong><em>In-Memory vNext and lessons learned.</em></strong> Here I am speaking the fourth time in a row since 2011</p>
</td>
</tr>
</tbody>
</table>
<p> <img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2014/10/1412_PASS_Camp.png" alt="" width="300" height="38" /></p>
<p> I hope to see some of you around somewhere,</p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2014/10/upcoming-conferences-2014-microsoft-technical-server-summit-mvp-summit-pass-summit-microsoft-technical-summit#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3732</wfw:commentRss>
		</item>
				<item>
			<title>Artikel „SQL Server 2014 – Neues Fundament“ in iX Ausgabe 5/2014, Richtigstellungen zu In-Memory OLTP und ColumnStore Indexes und warum AlwaysOn nicht gleich Always On ist</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2014/05/artikel-sql-server-2014-richtigstellungen</link>
			<pubDate>Thu, 08 May 2014 08:00:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="main">SQL Server 2014</category>
<category domain="alt">Columnstore Index</category>
<category domain="alt">In-Memory OLTP / XTP, HTAP</category>			<guid isPermaLink="false">3679@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Article “SQL Server 2014 – New Fundament” in iX Issue 5/2014, corrections in In-Memory OLTP and ColumnStore Indexes, and why AlwaysOn is not the same as Always On.&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(DE)&lt;br /&gt; In der &lt;a href=&quot;http://www.heise.de/ix/inhalt/2014/5/56/&quot; target=&quot;_blank&quot;&gt;Mai-Ausgabe der iX&lt;/a&gt; ist auf Seite 56 ein Artikel von mir zu finden, den ich zusammen mit den Kollegen &lt;a href=&quot;http://volkerheck.blogspot.de/&quot; target=&quot;_blank&quot;&gt;Volker Heck&lt;/a&gt; (Cloud- und BI-Part) und &lt;a href=&quot;http://www.dotnet-doktor.de/dotnetdoktor/default.aspx&quot; target=&quot;_blank&quot;&gt;Holger Schwichtenberg&lt;/a&gt; (Lektorat) geschrieben habe.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(EN)&lt;br /&gt; In the &lt;a href=&quot;http://www.heise.de/ix/inhalt/2014/5/56/&quot;&gt;May-issue of the iX&lt;/a&gt;, on page 56, there is an article by me which I wrote together with my colleagues &lt;a href=&quot;http://volkerheck.blogspot.de/&quot; target=&quot;_blank&quot;&gt;Volker Heck&lt;/a&gt; (Cloud- and BI-Part) and &lt;a href=&quot;http://www.dotnet-doktor.de/dotnetdoktor/default.aspx&quot; target=&quot;_blank&quot;&gt;Holger Schwichtenberg&lt;/a&gt; (copy-editing).&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p align=&quot;center&quot;&gt;&lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2017/11/1405_iX_Ausgabe_05_2014.jpg&quot; alt=&quot;&quot; width=&quot;200&quot; height=&quot;282&quot; /&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;In der finalen Version, die ich auch erst am Kiosk zu sehen bekommen habe, sind leider einige Ungenauigkeiten enthalten. Um Missverständnisse auszuschließen, möchte ich diese hier kurz geraderücken, bzw. ein korrektes Verständnis sicherstellen.&lt;/p&gt;
&lt;p&gt;Es geht los mit der Einleitung:&lt;br /&gt; 1)&lt;/p&gt;
&lt;p&gt;„…Nach zwei Jahren Entwicklungszeit stellt Microsoft die neue Version seines Datenbankservers vor...“&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Richtigstellung: &lt;/strong&gt;Ich bin mir nicht sicher, wann der Startschuss für den SQL Server 2014 war, aber ziemlich sicher war das nicht 2 Jahre vor dem Release-Datum (1.4.2014), wie dieser Satz impliziert. Dass die In-Memory OLTP Engine XTP bereits 2009 mit ihrem ersten Patent untermauert wurde, schreibe ich etwas später noch im Artikel. Wann genau feststand, dass es einen SQL Server 2014 geben würde, und der Code entsprechend gebranched wurde, ist mir nicht bekannt. Wenn ich eine &lt;span style=&quot;text-decoration: underline;&quot;&gt;Vermutung&lt;/span&gt; abgeben würde, wäre dies eher ca. 3 Jahre vor dem Release.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Unfortunately, in the final version, which I have actually only set eyes on at the newspaper kiosk, there are a few inaccuracies. In order to avoid misunderstandings, I will correct them here shortly, or rather ensure a correct understanding.&lt;/p&gt;
&lt;p&gt;Starting with the introduction:&lt;br /&gt; 1)&lt;/p&gt;
&lt;p&gt;”…After two years of developing, Microsoft introduces the new version of its database server…”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction: &lt;/strong&gt;I am not sure as to when the starting shot was made for the SQL Server 2014, but it is quite certain that it was not 2 years before the release date (1 April 2014), as implied by this sentence. A little later, in the article I also say that the In-Memory OLTP Engine XTP was confirmed with its first patent already in 2009. I am not aware of when exactly it was certain that there would be a SQL Server 2014, and that the code would be branched accordingly. If I was to &lt;span style=&quot;text-decoration: underline;&quot;&gt;speculate&lt;/span&gt;, I would say it was more like 3 years before its release.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;2)&lt;/p&gt;
&lt;p&gt;„…Wichtigste Neuerung ist das Ablegen relationaler Daten im Hauptspeicher statt auf der Festplatte….“&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Richtigstellung: &lt;/strong&gt;Diejenigen, die sich bereits ein wenig mit dieser neuen Technologie auseinandergesetzt haben, wissen es natürlich: Die Daten werden &lt;span style=&quot;text-decoration: underline;&quot;&gt;sowohl in RAM als auch auf Festplatte&lt;/span&gt; gespeichert – es sei denn man arbeitet mit „Schema_Only“-Tabellen. Später im Artikel wird das auch noch deutlich, mag aber hier verwirren.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;2)&lt;/p&gt;
&lt;p&gt;„…The most important innovation is the storing of relational data in the main storage instead of the hard drive.”&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction: &lt;/strong&gt;Those who have already familiarized themselves a little with this new technology will know of course: The data are stored &lt;span style=&quot;text-decoration: underline;&quot;&gt;both in RAM and in the hard drive&lt;/span&gt; – unless you work with “schema_only”-tables. This will become clear later in the article, but may cause some confusion here.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;3)&lt;/p&gt;
&lt;p&gt;„…Stored Procedures in Maschinensprache&lt;br /&gt; ­­­… „Native Kompilierung“ ... Dafür erzeugt der Server beim ersten Ausführen aus der jeweiligen Prozedur eine DLL. Diese Bibliotheken überstehen den Neustart von Datenbank oder Server jedoch nicht, müssen also danach erneut erstellt werden…“&lt;/p&gt;
&lt;p&gt;Das kann man leicht falsch verstehen. &lt;br /&gt; &lt;strong&gt;Richtigstellung: &lt;/strong&gt;Genau gesagt werden diese DLLs nach jedem Neustart von Datenbank oder Datenbankserver neu generiert (bei erster Verwendung). – Man muss diese DLLs oder gar die Prozeduren also nicht &lt;span style=&quot;text-decoration: underline;&quot;&gt;selber&lt;/span&gt; neu erstellen.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;3)&lt;/p&gt;
&lt;p&gt;             „…Stored Procedures in machine language.“&lt;/p&gt;
&lt;p&gt;… “Native compiling” …”Before the first run, the server produces a DLL from the respective procedure for this. These libraries, however, do not last through the restart of database or server, so they have to be generated again afterwards…”&lt;/p&gt;
&lt;p&gt;This can be easily misunderstood.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction:&lt;/strong&gt; To be precise, these DLLs are regenerated after each restart of the database or database server (at first usage). – Thus, one does not have to generate these DLLs or even the procedures new &lt;span style=&quot;text-decoration: underline;&quot;&gt;oneself&lt;/span&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;4)&lt;/p&gt;
&lt;p&gt;„(Nativ kompilierte Prozeduren)…Solche Prozeduren … erlauben noch nicht alle T-SQL-Sprachelemente. Es fehlen beispielsweise &lt;em&gt;Raiseerror &lt;/em&gt;und &lt;em&gt;Begin Transaction&lt;/em&gt;, einige Funktionen sowie Query Hints.“&lt;/p&gt;
&lt;p&gt;Auch das könnte jemanden auf eine falsche Fährte führen.&lt;br /&gt; &lt;strong&gt;Richtigstellung: &lt;/strong&gt;Besser ausgedrückt: „Zum Beispiel kann man bestimmte Befehle wie &lt;em&gt;Raiseerror&lt;/em&gt; oder &lt;em&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Begin Transaction&lt;/span&gt;&lt;/em&gt;, &lt;span style=&quot;text-decoration: underline;&quot;&gt;anstelle dessen ein „Atomic“-Block erforderlich ist&lt;/span&gt;, nicht nutzen.“ - Der &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn452281%28v=sql.120%29.aspx&quot; target=&quot;_blank&quot;&gt;Atomic-Block&lt;/a&gt; startet bereits eine Transaktion, daher ist ein zusätzliches „Begin Transaction“ ohnehin fehl am Platz. - Einige Query Hints werden übrigens tatsächlich unterstützt.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;4)&lt;/p&gt;
&lt;p&gt;„(Natively complied procedures) … Such procedures … do not yet allow for all T-SQL language elements. For instance, &lt;em&gt;Raiseerror &lt;/em&gt;and &lt;em&gt;Begin Transaction &lt;/em&gt;are missing, as well as a few functions and Query Hints.”&lt;/p&gt;
&lt;p&gt;This, too, could be misleading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction:&lt;/strong&gt; Put more precisely: “For instance, it is not possible to use particular commands such as &lt;em&gt;Raiseerror&lt;/em&gt; or &lt;em&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Begin Transaction, instead of which an “atomic” block is required.”&lt;/span&gt;&lt;/em&gt; The &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn452281%28v=sql.120%29.aspx&quot; target=&quot;_blank&quot;&gt;Atomic-Block&lt;/a&gt; already starts a transaction, so an additional “begin transaction” is superfluous in any case. – By the way, a few Query Hints are actually supported.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;5)&lt;/p&gt;
&lt;p&gt;„(neue Parallelitätskontrolle „multi-versioned, timestamped optimistic concurrency control“)… Dazu ergänzt der Server alle Datensätze um einen bei jeder Änderung automatisch aktualisierten Zeitstempel, anhand dessen er Konflikte erkennt…“&lt;/p&gt;
&lt;p&gt;Das kann man auch leicht falsch interpretieren und einen glauben lassen, dass immer der selbe Datensatz aktualisiert wird. Der Hintergrund von „&lt;strong&gt;multi-versioned&lt;/strong&gt;, timestamped optimistic concurrency control“ ist aber gerade, das es pro Version einen neuen Datensatz gibt, was sich in ausführlichen Tests von Microsoft Research in realitätsnaheren Testreihen (mit komplexeren Transaktionen im Mix mit längeren Lesezugriffen und Hotspot-Szenarien) als effizienter als „Single-version locking“ herausgestellt hat. (Quelle: „High-Performance Concurrency Control Mechanisms for Main-Memory Databases“, Microsoft, University of Wisconsin – Madison)&lt;br /&gt; - Single-Version Locking wird beispielsweise von Oracle TimesTen und IBM’s solidDB eingesetzt.&lt;strong&gt;&lt;br /&gt; &lt;/strong&gt;&lt;strong&gt;Richtigstellung: &lt;/strong&gt;Genauer ist also zu sagen, dass es pro Version einen Datensatz gibt, und die “Alten Versionen” durch ein End-Timestamp als solche markiert werden.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;5)&lt;/p&gt;
&lt;p&gt;„(new concurrency control, „multi-versioned, timestamped optimistic concurrency control“)… For this, the server complements all data sets by an automatically updated timestamp created with each change, with the help of which it recognizes conflicts…”&lt;/p&gt;
&lt;p&gt;This can also be easily misinterpreted and may make believe that always the same data set is being updated. However, the background to “&lt;strong&gt;multi-versioned&lt;/strong&gt;, timestamped optimistic concurrency control” is in fact that there is a new data set per version, which comprehensive tests in realistic test series by Microsoft Research (with more complex transactions combined with longer read access and hotspot scenarios) have shown to be more efficient than “Single-version locking.” (Source: “High-Performance Concurrency Control Mechanisms for Main-Memory Databases,” Microsoft, University of Wisconsin – Madison)&lt;/p&gt;
&lt;p&gt;Single-Version Locking, for example, is applied by Oracle TimesTen and IBM’s solidDB.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction:&lt;/strong&gt; It is thus more precise to say that there is one data set per version, and the “old versions” are marked as such by an end-timestamp.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;6)&lt;/p&gt;
&lt;p&gt;„(Clustered ColumnStore Indexe)…Diese erweiterte Variante der &lt;span style=&quot;text-decoration: underline;&quot;&gt;Hauptspeicher-Index-Technik&lt;/span&gt; wurde für die 2013 erschienene PDW-Variante (Parallel Data Warehouse) des SQL Server 2012 entwickelt und ist dort bereits im Einsatz…“&lt;/p&gt;
&lt;p&gt;Die Wortwahl lässt vermuten, dass diese (Columnstore) Indexe, wie auch bei In-Memory optimierten Tabellen &amp;amp; Indexen, lediglich im Hauptspeicher liegen. Das stimmt natürlich nicht.&lt;br /&gt; &lt;strong&gt;Richtigstellung:&lt;/strong&gt; Besser sollte hier stehen: „Hauptspeicher-&lt;span style=&quot;text-decoration: underline;&quot;&gt;optimierte&lt;/span&gt; Indexe“&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;6)&lt;/p&gt;
&lt;p&gt; “(Clustered ColumnStore Indexes)… This enhanced type of the Main-Memory Index Technique was developed for the PDW-version (Parallel Data Warehouse) of the SQL Server 2012 made available in 2013 and is already being applied there…”&lt;/p&gt;
&lt;p&gt;The choice of words suggests that these (Columnstore) indexes, just as with the In-Memory optimized tables &amp;amp; indexes, are located in the main memory only. This is of course not the case.  &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Correction:&lt;/strong&gt; More precise would be to say: “Main-Memory-&lt;span style=&quot;text-decoration: underline;&quot;&gt;optimized&lt;/span&gt; indexes”&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;7)&lt;/p&gt;
&lt;p&gt;Und last but not least leider hat sich auch in diesem Artikel ein häufiger Fehler eingeschlichen:&lt;/p&gt;
&lt;p&gt;Die Lösung für hohe Verfügbarkeit und Notfallwiederherstellung, welche im SQL Server 2012 neu eingeführt wurde, schreibt sich natürlich „&lt;strong&gt;AlwaysOn&lt;/strong&gt;“, und weder „Always On“ noch „Always-On“.&lt;br /&gt; „Always On“ (mit Leerzeichen) wurde bereits in SQL Server 2005 eingesetzt, um Speicher-Hardware für SQL Server zu zertifizieren. Dazu gehört z.B.:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;die korrekte Umsetzung der API’s, des &lt;em&gt;Write-Ahead Logging&lt;/em&gt; (WAL) Protokolls für sowohl Transaktionsprotokolle als auch Daten- und Backup-Dateien&lt;/li&gt;
&lt;li&gt;der Optionen &lt;em&gt;FILE_FLAG_WRITETHROUGH&lt;/em&gt; und &lt;em&gt;FlushFileBuffers&lt;/em&gt; beim Öffnen von Dateien&lt;/li&gt;
&lt;li&gt;der Unterstützung von asynchronem I/O&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Write ordering&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Das korrekte Übermitteln der Sektor-Größen an die Windows API’s, um &lt;em&gt;Sektor-Größen-Versatz&lt;/em&gt; und &lt;em&gt;Torn Writes&lt;/em&gt; zu verhindern&lt;/li&gt;
&lt;li&gt;Die NTFS-Fähigkeiten wie z.B. &lt;em&gt;Sparse Files, File Streams, Encryption, Compression&lt;/em&gt;, sämtliche Sicherheitseigenschaften&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Über „Always On” lässt sich z.B. hier nachlesen: &lt;a href=&quot;http://www.dell.com/downloads/global/solutions/dell_pv_sql_always_on_tech_note_v_1_5.pdf&quot;&gt;www.dell.com/downloads/global/solutions/&lt;br /&gt; dell_pv_sql_always_on_tech_note_v_1_5.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Im SQL Server 2008 wurde „Always On“ für die gesamte Palette der Hochverfügbarkeitstechniken verwendet. Dazu gehörten Database Mirroring, Log Shipping, Failover Clustering, Peer-to-Peer Replication, Backup und Restore (!), Database Snapshots, selbst Partitionierung und weiteres. (Hier nachzulesen: &lt;a href=&quot;http://www.google.de/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0CDgQFjAB&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2Fc%2Fa%2Ff%2Fcaff7135-8d80-4dad-a104-0da8558d8a0e%2FAvailability%2520DataSheet.pdf&quot; target=&quot;_blank&quot;&gt;High Availability – Always On Technologies&lt;/a&gt;) Das hat also nicht mit dem neuen Features &lt;strong&gt;AlwaysOn&lt;/strong&gt;-Verfügbarkeitsgruppen/Availability Groups und &lt;strong&gt;AlwaysOn&lt;/strong&gt;-Failoverclusterinstanzen zu tun.&lt;br /&gt; Und Feature-Namen werden nicht einfach „eingedeutscht“, genauso wenig wie man &lt;em&gt;SharePoint&lt;/em&gt; auseinanderschreibt – Nein, ich werde das selbst aus Demozwecken nicht tun ;-)&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;7)&lt;/p&gt;
&lt;p&gt;And last but not least, I’m afraid in this article, too, a common mistake has slipped in:&lt;/p&gt;
&lt;p&gt;The solution for high availability and emergency restoration reintroduced in SQL Server 2012 is spelled “&lt;strong&gt;AlwaysOn&lt;/strong&gt;,” of course; – neither “Always On” nor “Always-On.” “Always On” (with space) was already applied in SQL Server 2005 in order to certify storage hardware for SQL Server. It includes, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The correct implementation of the APIs, the Write-Ahead Logging (WAL) protocol for both transaction protocols and data and backup files.&lt;/li&gt;
&lt;li&gt;The options &lt;em&gt;FILE_FLAG_WRITETHROUGH&lt;/em&gt; and &lt;em&gt;FlushFileBuffers &lt;/em&gt;when opening files.&lt;/li&gt;
&lt;li&gt;The support of asynchronous I/O.&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Write ordering.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;The correction transmission of the sector sizes to the Windows APIs in order to avoid &lt;em&gt;sector size mismatches&lt;/em&gt; and &lt;em&gt;Torn Writes&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;The NTFS-abilities such as &lt;em&gt;Sparse Files, File Streams, Encryption, Compression&lt;/em&gt; and all security properties.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can read more on “Always On” here, for example:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.dell.com/downloads/global/solutions/dell_pv_sql_always_on_tech_note_v_1_5.pdf&quot;&gt;www.dell.com/downloads/global/solutions/&lt;br /&gt; dell_pv_sql_always_on_tech_note_v_1_5.pd&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In SQL Server 2008, “Always On” was used for the entire range of high availability techniques. These include Database Mirroring, Log Shipping, Failover Clustering, Peer-to-Peer Replication, Backup and Restore (!), Database Snapshots, even partitioning, and more. (Read more here: &lt;a href=&quot;http://www.google.de/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0CDgQFjAB&amp;amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2Fc%2Fa%2Ff%2Fcaff7135-8d80-4dad-a104-0da8558d8a0e%2FAvailability%2520DataSheet.pdf&quot; target=&quot;_blank&quot;&gt;High Availability – Always On Technologies&lt;/a&gt;) So this does not have anything to do with the new features &lt;strong&gt;AlwaysOn&lt;/strong&gt;-Availability Groups or &lt;strong&gt;AlwaysOn&lt;/strong&gt;-Failoverclusterinstances.&lt;/p&gt;
&lt;p&gt;What is more, feature names are not simply „Germanized,“ just as you do not spell &lt;em&gt;SharePoint&lt;/em&gt; separately – and no, I will not even do this for demonstration purposes ;-).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Soweit habe ich nun meinem &lt;em&gt;Genauigkeitsempfinden&lt;/em&gt; genüge getan ;-)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Da das folgende Diagramm es leider nicht in den Artikel geschafft hat, möchte ich es hier zumindest mit meinen Lesern teilen:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;For now, I feel like I have satisfied my &lt;em&gt;sense of accuracy&lt;/em&gt; ;-)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Since the following graph has unfortunately not made it into the article, I would like to share it with my readers here at least:  &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2017/11/1405_XTP_Benchmark.png&quot; alt=&quot;&quot; width=&quot;466&quot; height=&quot;323&quot; /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Das ist das Ergebnis eines Performance-Vergleiches einer schematisch so gut wie identischen „on-Disk“-Tabelle gegenüber den verschiedenen In-Memory OLTP Varianten. Der Test wurde auf Standard-Hardware durchgeführt: Intel i7-3529 (2,9Ghz), 2 Cores hyperthreaded, 16GB RAM und SSDs. Das Ergebnis kann sich sehen lassen und entspricht Microsofts Versprechung, das neue Hardware nicht zwingend erforderlich ist, um spürbare Performance-Gewinne durch den Einsatz der XTP-Engine zu erhalten.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;This is the result of a performance comparison of a schematically virtually identical “on-disc”-table compared to the different In-Memory OLTP variants. The test was carried out with standard hardware: Intel i7-3529 (2,9Ghz), 2 Cores hyperthreaded, 16GB RAM and SSDs. The result is quite impressive and matches Microsoft’s promise that new hardware is not imperative in order to obtain tangible performance gains through the application of the XTP-Engine.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Und hier sind auch nochmal die begleitenden Links zu dem Artikel:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;These are the corresponding links to the article:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn133181%28v=sql.120%29.aspx&quot;&gt;Liste der unterstützten SQL-Server-Features bei In-Memory-OLTP&lt;/a&gt; / &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn133181%28v=sql.120%29.aspx&quot;&gt;List of the supported SQL-Server-Features in In-Memory-OLTP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://research.microsoft.com/pubs/178758/bw-tree-icde2013-final.pdf&quot;&gt;The Bw-Tree: A B-tree for New Hardware Platforms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn452279%28v=sql.120%29.aspx&quot;&gt;Liste der unterstützten SQL-Befehle bei kompilierten Stored Procedures&lt;/a&gt; / &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn452279%28v=sql.120%29.aspx&quot;&gt;List of supported SQL-commands in compiled Stored Procedures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Microsoft Case Studies&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=710000003117&quot;&gt;http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=710000003117&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012/Ferranti-Computer-Systems/Utilities-ISV-Scales-to-Meet-Customer-Needs-for-Storage-and-Analysis-of-Big-Data/710000003000&quot;&gt;http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012/Ferranti-Computer-Systems/Utilities-ISV-Scales-to-Meet-Customer-Needs-for-Storage-and-Analysis-of-Big-Data/710000003000&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/de-de/library/gg492153%28v=sql.120%29.aspx&quot;&gt;Dokumentation zum Column Store Index&lt;/a&gt; / &lt;a href=&quot;http://msdn.microsoft.com/de-de/library/gg492153%28v=sql.120%29.aspx&quot;&gt;Documentation of Column Store Index&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/dn133176%28v=sql.120%29.aspx&quot;&gt;Buffer Pool Extension&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sqlperformance.com/2013/12/t-sql-queries/a-first-look-at-the-new-sql-server-cardinality-estimator&quot;&gt;Änderungen im Cardinality Estimator&lt;/a&gt; / &lt;a href=&quot;http://www.sqlperformance.com/2013/12/t-sql-queries/a-first-look-at-the-new-sql-server-cardinality-estimator&quot;&gt;Changes in Cardinality Estimator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.windowsazure.com&quot;&gt;Windows Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windowsazure/dn369873.aspx&quot;&gt;Premium Preview for SQL Database Guidance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.microsoft.com/en-us/powerbi/&quot;&gt;PowerBI for Office 365&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Ich hoffe, die genannten Punkte sind für ein besseres Verständnis nicht nur des Artikels sondern auch von SQL Server 2014 allgemein hilfreich.&lt;/p&gt;
&lt;p&gt;Kommentare oder Nachfragen können gern hier über meinen Blog hinterlassen werden.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;I hope the points above are helpful for a better understanding not only of the article but also of SQL Server 2014 in general.&lt;/p&gt;
&lt;p&gt;You are welcome to leave comments or questions in my blog.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas Wolter&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;PS: Leider sind in meiner Master-Class &lt;a href=&quot;http://www.sql-server-master-class.com/#XTC&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Workshop In-Memory OLTP &amp;amp; ColumnStore - New Storage Engines in SQL Server 2014&lt;/strong&gt; (XTC)&lt;/a&gt; keine Plätze mehr verfügbar (!). Im Sommer wird sicher die Entscheidung für eine Neuauflage im 2. Halbjahr 2014 oder doch erst wieder im 1. HJ 2015 fallen. – Im 2. HJ stehen wieder viele Konferenzen, inklusive MVP Summit, PASS Summit und PASS Camp an, so dass es da wirklich eng wird. Aussichtsreicher ist da meist eine Inhouse-Schulung auf Anfrage.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;P.S.: Unfortunately, there are no spots left (!) in my Master-Class &lt;a href=&quot;http://www.sql-server-master-class.com/#XTC&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Workshop In-Memory OLTP &amp;amp; ColumnStore - New Storage Engines in SQL Server 2014 &lt;/strong&gt;(XTC)&lt;/a&gt;. The decision for a remake either in the second half of 2014, or only in the first half of 2015, will probably be made in summer. – For the second half of 2014, many conferences, including MVP Summit, PASS Summit and PASS Camp, are lined up, so it is already quite cramped. The prospects may thus often be better for an in-house-training on request.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Article “SQL Server 2014 – New Fundament” in iX Issue 5/2014, corrections in In-Memory OLTP and ColumnStore Indexes, and why AlwaysOn is not the same as Always On.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(DE)<br /> In der <a href="http://www.heise.de/ix/inhalt/2014/5/56/" target="_blank">Mai-Ausgabe der iX</a> ist auf Seite 56 ein Artikel von mir zu finden, den ich zusammen mit den Kollegen <a href="http://volkerheck.blogspot.de/" target="_blank">Volker Heck</a> (Cloud- und BI-Part) und <a href="http://www.dotnet-doktor.de/dotnetdoktor/default.aspx" target="_blank">Holger Schwichtenberg</a> (Lektorat) geschrieben habe.</p>
</td>
<td valign="top" width="334">
<p>(EN)<br /> In the <a href="http://www.heise.de/ix/inhalt/2014/5/56/">May-issue of the iX</a>, on page 56, there is an article by me which I wrote together with my colleagues <a href="http://volkerheck.blogspot.de/" target="_blank">Volker Heck</a> (Cloud- and BI-Part) and <a href="http://www.dotnet-doktor.de/dotnetdoktor/default.aspx" target="_blank">Holger Schwichtenberg</a> (copy-editing).</p>
</td>
</tr>
</tbody>
</table>
<p align="center"><img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2017/11/1405_iX_Ausgabe_05_2014.jpg" alt="" width="200" height="282" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>In der finalen Version, die ich auch erst am Kiosk zu sehen bekommen habe, sind leider einige Ungenauigkeiten enthalten. Um Missverständnisse auszuschließen, möchte ich diese hier kurz geraderücken, bzw. ein korrektes Verständnis sicherstellen.</p>
<p>Es geht los mit der Einleitung:<br /> 1)</p>
<p>„…Nach zwei Jahren Entwicklungszeit stellt Microsoft die neue Version seines Datenbankservers vor...“</p>
<p><strong>Richtigstellung: </strong>Ich bin mir nicht sicher, wann der Startschuss für den SQL Server 2014 war, aber ziemlich sicher war das nicht 2 Jahre vor dem Release-Datum (1.4.2014), wie dieser Satz impliziert. Dass die In-Memory OLTP Engine XTP bereits 2009 mit ihrem ersten Patent untermauert wurde, schreibe ich etwas später noch im Artikel. Wann genau feststand, dass es einen SQL Server 2014 geben würde, und der Code entsprechend gebranched wurde, ist mir nicht bekannt. Wenn ich eine <span style="text-decoration: underline;">Vermutung</span> abgeben würde, wäre dies eher ca. 3 Jahre vor dem Release.</p>
</td>
<td valign="top" width="334">
<p>Unfortunately, in the final version, which I have actually only set eyes on at the newspaper kiosk, there are a few inaccuracies. In order to avoid misunderstandings, I will correct them here shortly, or rather ensure a correct understanding.</p>
<p>Starting with the introduction:<br /> 1)</p>
<p>”…After two years of developing, Microsoft introduces the new version of its database server…”</p>
<p><strong>Correction: </strong>I am not sure as to when the starting shot was made for the SQL Server 2014, but it is quite certain that it was not 2 years before the release date (1 April 2014), as implied by this sentence. A little later, in the article I also say that the In-Memory OLTP Engine XTP was confirmed with its first patent already in 2009. I am not aware of when exactly it was certain that there would be a SQL Server 2014, and that the code would be branched accordingly. If I was to <span style="text-decoration: underline;">speculate</span>, I would say it was more like 3 years before its release.</p>
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>2)</p>
<p>„…Wichtigste Neuerung ist das Ablegen relationaler Daten im Hauptspeicher statt auf der Festplatte….“</p>
<p><strong>Richtigstellung: </strong>Diejenigen, die sich bereits ein wenig mit dieser neuen Technologie auseinandergesetzt haben, wissen es natürlich: Die Daten werden <span style="text-decoration: underline;">sowohl in RAM als auch auf Festplatte</span> gespeichert – es sei denn man arbeitet mit „Schema_Only“-Tabellen. Später im Artikel wird das auch noch deutlich, mag aber hier verwirren.</p>
</td>
<td valign="top" width="334">
<p>2)</p>
<p>„…The most important innovation is the storing of relational data in the main storage instead of the hard drive.”</p>
<p><strong>Correction: </strong>Those who have already familiarized themselves a little with this new technology will know of course: The data are stored <span style="text-decoration: underline;">both in RAM and in the hard drive</span> – unless you work with “schema_only”-tables. This will become clear later in the article, but may cause some confusion here.</p>
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>3)</p>
<p>„…Stored Procedures in Maschinensprache<br /> ­­­… „Native Kompilierung“ ... Dafür erzeugt der Server beim ersten Ausführen aus der jeweiligen Prozedur eine DLL. Diese Bibliotheken überstehen den Neustart von Datenbank oder Server jedoch nicht, müssen also danach erneut erstellt werden…“</p>
<p>Das kann man leicht falsch verstehen. <br /> <strong>Richtigstellung: </strong>Genau gesagt werden diese DLLs nach jedem Neustart von Datenbank oder Datenbankserver neu generiert (bei erster Verwendung). – Man muss diese DLLs oder gar die Prozeduren also nicht <span style="text-decoration: underline;">selber</span> neu erstellen.</p>
</td>
<td valign="top" width="334">
<p>3)</p>
<p>             „…Stored Procedures in machine language.“</p>
<p>… “Native compiling” …”Before the first run, the server produces a DLL from the respective procedure for this. These libraries, however, do not last through the restart of database or server, so they have to be generated again afterwards…”</p>
<p>This can be easily misunderstood.</p>
<p><strong>Correction:</strong> To be precise, these DLLs are regenerated after each restart of the database or database server (at first usage). – Thus, one does not have to generate these DLLs or even the procedures new <span style="text-decoration: underline;">oneself</span>.</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>4)</p>
<p>„(Nativ kompilierte Prozeduren)…Solche Prozeduren … erlauben noch nicht alle T-SQL-Sprachelemente. Es fehlen beispielsweise <em>Raiseerror </em>und <em>Begin Transaction</em>, einige Funktionen sowie Query Hints.“</p>
<p>Auch das könnte jemanden auf eine falsche Fährte führen.<br /> <strong>Richtigstellung: </strong>Besser ausgedrückt: „Zum Beispiel kann man bestimmte Befehle wie <em>Raiseerror</em> oder <em><span style="text-decoration: underline;">Begin Transaction</span></em>, <span style="text-decoration: underline;">anstelle dessen ein „Atomic“-Block erforderlich ist</span>, nicht nutzen.“ - Der <a href="http://msdn.microsoft.com/en-us/library/dn452281%28v=sql.120%29.aspx" target="_blank">Atomic-Block</a> startet bereits eine Transaktion, daher ist ein zusätzliches „Begin Transaction“ ohnehin fehl am Platz. - Einige Query Hints werden übrigens tatsächlich unterstützt.</p>
</td>
<td valign="top" width="334">
<p>4)</p>
<p>„(Natively complied procedures) … Such procedures … do not yet allow for all T-SQL language elements. For instance, <em>Raiseerror </em>and <em>Begin Transaction </em>are missing, as well as a few functions and Query Hints.”</p>
<p>This, too, could be misleading.</p>
<p><strong>Correction:</strong> Put more precisely: “For instance, it is not possible to use particular commands such as <em>Raiseerror</em> or <em><span style="text-decoration: underline;">Begin Transaction, instead of which an “atomic” block is required.”</span></em> The <a href="http://msdn.microsoft.com/en-us/library/dn452281%28v=sql.120%29.aspx" target="_blank">Atomic-Block</a> already starts a transaction, so an additional “begin transaction” is superfluous in any case. – By the way, a few Query Hints are actually supported.  </p>
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>5)</p>
<p>„(neue Parallelitätskontrolle „multi-versioned, timestamped optimistic concurrency control“)… Dazu ergänzt der Server alle Datensätze um einen bei jeder Änderung automatisch aktualisierten Zeitstempel, anhand dessen er Konflikte erkennt…“</p>
<p>Das kann man auch leicht falsch interpretieren und einen glauben lassen, dass immer der selbe Datensatz aktualisiert wird. Der Hintergrund von „<strong>multi-versioned</strong>, timestamped optimistic concurrency control“ ist aber gerade, das es pro Version einen neuen Datensatz gibt, was sich in ausführlichen Tests von Microsoft Research in realitätsnaheren Testreihen (mit komplexeren Transaktionen im Mix mit längeren Lesezugriffen und Hotspot-Szenarien) als effizienter als „Single-version locking“ herausgestellt hat. (Quelle: „High-Performance Concurrency Control Mechanisms for Main-Memory Databases“, Microsoft, University of Wisconsin – Madison)<br /> - Single-Version Locking wird beispielsweise von Oracle TimesTen und IBM’s solidDB eingesetzt.<strong><br /> </strong><strong>Richtigstellung: </strong>Genauer ist also zu sagen, dass es pro Version einen Datensatz gibt, und die “Alten Versionen” durch ein End-Timestamp als solche markiert werden.</p>
</td>
<td valign="top" width="334">
<p>5)</p>
<p>„(new concurrency control, „multi-versioned, timestamped optimistic concurrency control“)… For this, the server complements all data sets by an automatically updated timestamp created with each change, with the help of which it recognizes conflicts…”</p>
<p>This can also be easily misinterpreted and may make believe that always the same data set is being updated. However, the background to “<strong>multi-versioned</strong>, timestamped optimistic concurrency control” is in fact that there is a new data set per version, which comprehensive tests in realistic test series by Microsoft Research (with more complex transactions combined with longer read access and hotspot scenarios) have shown to be more efficient than “Single-version locking.” (Source: “High-Performance Concurrency Control Mechanisms for Main-Memory Databases,” Microsoft, University of Wisconsin – Madison)</p>
<p>Single-Version Locking, for example, is applied by Oracle TimesTen and IBM’s solidDB.</p>
<p><strong>Correction:</strong> It is thus more precise to say that there is one data set per version, and the “old versions” are marked as such by an end-timestamp.</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>6)</p>
<p>„(Clustered ColumnStore Indexe)…Diese erweiterte Variante der <span style="text-decoration: underline;">Hauptspeicher-Index-Technik</span> wurde für die 2013 erschienene PDW-Variante (Parallel Data Warehouse) des SQL Server 2012 entwickelt und ist dort bereits im Einsatz…“</p>
<p>Die Wortwahl lässt vermuten, dass diese (Columnstore) Indexe, wie auch bei In-Memory optimierten Tabellen &amp; Indexen, lediglich im Hauptspeicher liegen. Das stimmt natürlich nicht.<br /> <strong>Richtigstellung:</strong> Besser sollte hier stehen: „Hauptspeicher-<span style="text-decoration: underline;">optimierte</span> Indexe“</p>
</td>
<td valign="top" width="334">
<p>6)</p>
<p> “(Clustered ColumnStore Indexes)… This enhanced type of the Main-Memory Index Technique was developed for the PDW-version (Parallel Data Warehouse) of the SQL Server 2012 made available in 2013 and is already being applied there…”</p>
<p>The choice of words suggests that these (Columnstore) indexes, just as with the In-Memory optimized tables &amp; indexes, are located in the main memory only. This is of course not the case.  </p>
<p><strong>Correction:</strong> More precise would be to say: “Main-Memory-<span style="text-decoration: underline;">optimized</span> indexes”</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>7)</p>
<p>Und last but not least leider hat sich auch in diesem Artikel ein häufiger Fehler eingeschlichen:</p>
<p>Die Lösung für hohe Verfügbarkeit und Notfallwiederherstellung, welche im SQL Server 2012 neu eingeführt wurde, schreibt sich natürlich „<strong>AlwaysOn</strong>“, und weder „Always On“ noch „Always-On“.<br /> „Always On“ (mit Leerzeichen) wurde bereits in SQL Server 2005 eingesetzt, um Speicher-Hardware für SQL Server zu zertifizieren. Dazu gehört z.B.:</p>
<ul>
<li>die korrekte Umsetzung der API’s, des <em>Write-Ahead Logging</em> (WAL) Protokolls für sowohl Transaktionsprotokolle als auch Daten- und Backup-Dateien</li>
<li>der Optionen <em>FILE_FLAG_WRITETHROUGH</em> und <em>FlushFileBuffers</em> beim Öffnen von Dateien</li>
<li>der Unterstützung von asynchronem I/O</li>
<li><em>Write ordering</em></li>
<li>Das korrekte Übermitteln der Sektor-Größen an die Windows API’s, um <em>Sektor-Größen-Versatz</em> und <em>Torn Writes</em> zu verhindern</li>
<li>Die NTFS-Fähigkeiten wie z.B. <em>Sparse Files, File Streams, Encryption, Compression</em>, sämtliche Sicherheitseigenschaften</li>
</ul>
<p>Über „Always On” lässt sich z.B. hier nachlesen: <a href="http://www.dell.com/downloads/global/solutions/dell_pv_sql_always_on_tech_note_v_1_5.pdf">www.dell.com/downloads/global/solutions/<br /> dell_pv_sql_always_on_tech_note_v_1_5.pdf</a></p>
<p>Im SQL Server 2008 wurde „Always On“ für die gesamte Palette der Hochverfügbarkeitstechniken verwendet. Dazu gehörten Database Mirroring, Log Shipping, Failover Clustering, Peer-to-Peer Replication, Backup und Restore (!), Database Snapshots, selbst Partitionierung und weiteres. (Hier nachzulesen: <a href="http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;cad=rja&amp;uact=8&amp;ved=0CDgQFjAB&amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2Fc%2Fa%2Ff%2Fcaff7135-8d80-4dad-a104-0da8558d8a0e%2FAvailability%2520DataSheet.pdf" target="_blank">High Availability – Always On Technologies</a>) Das hat also nicht mit dem neuen Features <strong>AlwaysOn</strong>-Verfügbarkeitsgruppen/Availability Groups und <strong>AlwaysOn</strong>-Failoverclusterinstanzen zu tun.<br /> Und Feature-Namen werden nicht einfach „eingedeutscht“, genauso wenig wie man <em>SharePoint</em> auseinanderschreibt – Nein, ich werde das selbst aus Demozwecken nicht tun ;-)</p>
</td>
<td valign="top" width="334">
<p>7)</p>
<p>And last but not least, I’m afraid in this article, too, a common mistake has slipped in:</p>
<p>The solution for high availability and emergency restoration reintroduced in SQL Server 2012 is spelled “<strong>AlwaysOn</strong>,” of course; – neither “Always On” nor “Always-On.” “Always On” (with space) was already applied in SQL Server 2005 in order to certify storage hardware for SQL Server. It includes, for example:</p>
<ul>
<li>The correct implementation of the APIs, the Write-Ahead Logging (WAL) protocol for both transaction protocols and data and backup files.</li>
<li>The options <em>FILE_FLAG_WRITETHROUGH</em> and <em>FlushFileBuffers </em>when opening files.</li>
<li>The support of asynchronous I/O.</li>
<li><em>Write ordering.</em></li>
<li>The correction transmission of the sector sizes to the Windows APIs in order to avoid <em>sector size mismatches</em> and <em>Torn Writes</em>.</li>
<li>The NTFS-abilities such as <em>Sparse Files, File Streams, Encryption, Compression</em> and all security properties.</li>
</ul>
<p>You can read more on “Always On” here, for example:</p>
<p><a href="http://www.dell.com/downloads/global/solutions/dell_pv_sql_always_on_tech_note_v_1_5.pdf">www.dell.com/downloads/global/solutions/<br /> dell_pv_sql_always_on_tech_note_v_1_5.pd</a></p>
<p>In SQL Server 2008, “Always On” was used for the entire range of high availability techniques. These include Database Mirroring, Log Shipping, Failover Clustering, Peer-to-Peer Replication, Backup and Restore (!), Database Snapshots, even partitioning, and more. (Read more here: <a href="http://www.google.de/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=2&amp;cad=rja&amp;uact=8&amp;ved=0CDgQFjAB&amp;url=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2Fc%2Fa%2Ff%2Fcaff7135-8d80-4dad-a104-0da8558d8a0e%2FAvailability%2520DataSheet.pdf" target="_blank">High Availability – Always On Technologies</a>) So this does not have anything to do with the new features <strong>AlwaysOn</strong>-Availability Groups or <strong>AlwaysOn</strong>-Failoverclusterinstances.</p>
<p>What is more, feature names are not simply „Germanized,“ just as you do not spell <em>SharePoint</em> separately – and no, I will not even do this for demonstration purposes ;-).</p>
<p> </p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>Soweit habe ich nun meinem <em>Genauigkeitsempfinden</em> genüge getan ;-)</p>
<p> </p>
<p>Da das folgende Diagramm es leider nicht in den Artikel geschafft hat, möchte ich es hier zumindest mit meinen Lesern teilen:</p>
</td>
<td valign="top" width="334">
<p>For now, I feel like I have satisfied my <em>sense of accuracy</em> ;-)</p>
<p> </p>
<p>Since the following graph has unfortunately not made it into the article, I would like to share it with my readers here at least:  </p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> <img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2017/11/1405_XTP_Benchmark.png" alt="" width="466" height="323" /></p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Das ist das Ergebnis eines Performance-Vergleiches einer schematisch so gut wie identischen „on-Disk“-Tabelle gegenüber den verschiedenen In-Memory OLTP Varianten. Der Test wurde auf Standard-Hardware durchgeführt: Intel i7-3529 (2,9Ghz), 2 Cores hyperthreaded, 16GB RAM und SSDs. Das Ergebnis kann sich sehen lassen und entspricht Microsofts Versprechung, das neue Hardware nicht zwingend erforderlich ist, um spürbare Performance-Gewinne durch den Einsatz der XTP-Engine zu erhalten.</p>
</td>
<td valign="top" width="334">
<p>This is the result of a performance comparison of a schematically virtually identical “on-disc”-table compared to the different In-Memory OLTP variants. The test was carried out with standard hardware: Intel i7-3529 (2,9Ghz), 2 Cores hyperthreaded, 16GB RAM and SSDs. The result is quite impressive and matches Microsoft’s promise that new hardware is not imperative in order to obtain tangible performance gains through the application of the XTP-Engine.</p>
</td>
</tr>
<tr>
<td valign="top" width="334">
<p>Und hier sind auch nochmal die begleitenden Links zu dem Artikel:</p>
</td>
<td valign="top" width="334">
<p>These are the corresponding links to the article:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/dn133181%28v=sql.120%29.aspx">Liste der unterstützten SQL-Server-Features bei In-Memory-OLTP</a> / <a href="http://msdn.microsoft.com/en-us/library/dn133181%28v=sql.120%29.aspx">List of the supported SQL-Server-Features in In-Memory-OLTP</a></li>
<li><a href="http://research.microsoft.com/pubs/178758/bw-tree-icde2013-final.pdf">The Bw-Tree: A B-tree for New Hardware Platforms</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dn452279%28v=sql.120%29.aspx">Liste der unterstützten SQL-Befehle bei kompilierten Stored Procedures</a> / <a href="http://msdn.microsoft.com/en-us/library/dn452279%28v=sql.120%29.aspx">List of supported SQL-commands in compiled Stored Procedures</a></li>
<li>Microsoft Case Studies</li>
<ul>
<li><a href="http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=710000003117">http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=710000003117</a></li>
<li><a href="http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012/Ferranti-Computer-Systems/Utilities-ISV-Scales-to-Meet-Customer-Needs-for-Storage-and-Analysis-of-Big-Data/710000003000">http://www.microsoft.com/casestudies/Microsoft-SQL-Server-2012/Ferranti-Computer-Systems/Utilities-ISV-Scales-to-Meet-Customer-Needs-for-Storage-and-Analysis-of-Big-Data/710000003000</a></li>
</ul>
<li><a href="http://msdn.microsoft.com/de-de/library/gg492153%28v=sql.120%29.aspx">Dokumentation zum Column Store Index</a> / <a href="http://msdn.microsoft.com/de-de/library/gg492153%28v=sql.120%29.aspx">Documentation of Column Store Index</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/dn133176%28v=sql.120%29.aspx">Buffer Pool Extension</a></li>
<li><a href="http://www.sqlperformance.com/2013/12/t-sql-queries/a-first-look-at-the-new-sql-server-cardinality-estimator">Änderungen im Cardinality Estimator</a> / <a href="http://www.sqlperformance.com/2013/12/t-sql-queries/a-first-look-at-the-new-sql-server-cardinality-estimator">Changes in Cardinality Estimator</a></li>
<li><a href="http://www.windowsazure.com">Windows Azure</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/windowsazure/dn369873.aspx">Premium Preview for SQL Database Guidance</a></li>
<li><a href="http://www.microsoft.com/en-us/powerbi/">PowerBI for Office 365</a></li>
</ul>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Ich hoffe, die genannten Punkte sind für ein besseres Verständnis nicht nur des Artikels sondern auch von SQL Server 2014 allgemein hilfreich.</p>
<p>Kommentare oder Nachfragen können gern hier über meinen Blog hinterlassen werden.</p>
</td>
<td valign="top" width="334">
<p>I hope the points above are helpful for a better understanding not only of the article but also of SQL Server 2014 in general.</p>
<p>You are welcome to leave comments or questions in my blog.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p>Andreas Wolter</p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>PS: Leider sind in meiner Master-Class <a href="http://www.sql-server-master-class.com/#XTC" target="_blank"><strong>Workshop In-Memory OLTP &amp; ColumnStore - New Storage Engines in SQL Server 2014</strong> (XTC)</a> keine Plätze mehr verfügbar (!). Im Sommer wird sicher die Entscheidung für eine Neuauflage im 2. Halbjahr 2014 oder doch erst wieder im 1. HJ 2015 fallen. – Im 2. HJ stehen wieder viele Konferenzen, inklusive MVP Summit, PASS Summit und PASS Camp an, so dass es da wirklich eng wird. Aussichtsreicher ist da meist eine Inhouse-Schulung auf Anfrage.</p>
</td>
<td valign="top" width="334">
<p>P.S.: Unfortunately, there are no spots left (!) in my Master-Class <a href="http://www.sql-server-master-class.com/#XTC" target="_blank"><strong>Workshop In-Memory OLTP &amp; ColumnStore - New Storage Engines in SQL Server 2014 </strong>(XTC)</a>. The decision for a remake either in the second half of 2014, or only in the first half of 2015, will probably be made in summer. – For the second half of 2014, many conferences, including MVP Summit, PASS Summit and PASS Camp, are lined up, so it is already quite cramped. The prospects may thus often be better for an in-house-training on request.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2014/05/artikel-sql-server-2014-richtigstellungen#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3679</wfw:commentRss>
		</item>
				<item>
			<title>New Permissions in SQL Server 2014: IMPERSONATE ANY LOGIN, SELECT ALL USER SECURABLES, CONNECT ANY DATABASE and the old CONTROL SERVER</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-permissions-sql-server-2014</link>
			<pubDate>Sat, 26 Apr 2014 14:25:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="main">Security</category>
<category domain="alt">SQL Server 2014</category>			<guid isPermaLink="false">3675@https://www.insidesql.org/blogs/</guid>
						<description>&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(DE)&lt;br /&gt; SQL Server 2014 bringt insgesamt 5 neue Berechtigungen. Zwei von diesen sind auf Datenbank-Ebene und nur in der Windows Azure SQL Database Edition verfügbar – nicht im „Box-Produkt“.&lt;br /&gt; (Danke an &lt;a href=&quot;http://www.sommarskog.se/&quot; target=&quot;_blank&quot;&gt;Erland Sommarskog&lt;/a&gt; für die Bestätigung und Hinweis auf die recht versteckte Notiz in der Dokumentation: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms178569%28v=sql.120%29.aspx&quot; target=&quot;_blank&quot;&gt;GRANT Database Permissions&lt;/a&gt;)&lt;br /&gt; Die neuen Berechtigungen sind wie folgt:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(EN)&lt;br /&gt; SQL Server 2014 brings altogether 5 new permissions. Two of those are on database level and only available in the Windows Azure SQL Database Edition – not in the box-version (Thanks &lt;a href=&quot;http://www.sommarskog.se/&quot; target=&quot;_blank&quot;&gt;Erland Sommarskog&lt;/a&gt; for confirming this and pointing me to the quite hidden note in the documentation: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ms178569%28v=sql.120%29.aspx&quot; target=&quot;_blank&quot;&gt;GRANT Database Permissions&lt;/a&gt;)&lt;br /&gt; The new permissions are as follows:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;&lt;strong&gt;Class Desc.&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;&lt;strong&gt;Permission Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt;
&lt;p&gt;&lt;strong&gt;Parent Covering Permission Name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;DATABASE&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;ALTER ANY DATABASE EVENT SESSION&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;AADS&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt;
&lt;p&gt;ALTER ANY EVENT SESSION&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;DATABASE&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;KILL DATABASE CONNECTION&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;KIDC&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt;
&lt;p&gt;ALTER ANY CONNECTION&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;SERVER&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;CONNECT ANY DATABASE&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;CADB&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;SERVER&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;IMPERSONATE ANY LOGIN&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;IAL&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;94&quot;&gt;
&lt;p&gt;SERVER&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;262&quot;&gt;
&lt;p&gt;SELECT ALL USER SECURABLES&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;56&quot;&gt;
&lt;p&gt;SUS&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;271&quot;&gt; &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Und wofür und wie können wir diese neuen Berechtigungen auf Server Ebene verwenden?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPERSONATE ANY LOGIN&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Erinnert Ihr Euch an das Problem mit &lt;strong&gt;&lt;em&gt;CONTROL SERVER&lt;/em&gt;&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt;Das größte Problem war, das dieses Recht auch die &lt;strong&gt;Impersonifizierung eines jeden Kontos, inklusive der Privilegien Erweiterung zum sysadmin erlaubte&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Die Details und auch andere Probleme mit &lt;em&gt;CONTROL SERVER&lt;/em&gt; habe ich hier umfassend dokumentiert:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blogs/andreaswolter/2013/08/control-server-vs-sysadmin-sa-permissions-privilege-escalation-caveats&quot;&gt;&lt;strong&gt;CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SQL Server 2014 gibt uns mit der Einführung der &lt;strong&gt;&lt;em&gt;IMPERSONATE ANY LOGIN&lt;/em&gt;&lt;/strong&gt;-Berechtigung Munition, dieses Problem anzugehen.&lt;/p&gt;
&lt;p&gt;-           Diese Berechtigung erlaubt es, jeden Login &lt;span style=&quot;text-decoration: underline;&quot;&gt;und User&lt;/span&gt; zum impersonieren(!).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Wenn wir dieses mit einem &lt;strong&gt;&lt;em&gt;DENY&lt;/em&gt;&lt;/strong&gt; gegenüber dem Principal mit &lt;em&gt;CONTROL SERVER&lt;/em&gt; Recht verwenden, verhindert es diesen, irgendeinen Login direkt zu impersonifizieren. (Warum sage ich “direkt”? –  Das sehen wir ein Stück weiter unten.)&lt;br /&gt; Also sehen wir uns an, &lt;strong&gt;wie man einen Login mit CONTROL SERVER an einer Pivilegienerweiterung hindert&lt;/strong&gt;, mithilfe der neuen Berechtigung&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;So, what for and how can we use those permissions on Server level?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IMPERSONATE ANY LOGIN&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Do you remember the problem with &lt;strong&gt;&lt;em&gt;CONTROL SERVER&lt;/em&gt;&lt;/strong&gt;?&lt;br /&gt; The biggest flaw of this permission was, that this permission also &lt;strong&gt;allowed Impersonation of any account, including privilege elevation to any sysadmin&lt;/strong&gt;.&lt;br /&gt; I have documented this and other problems with &lt;em&gt;CONTROL SERVER&lt;/em&gt; in detail here:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/blogs/andreaswolter/2013/08/control-server-vs-sysadmin-sa-permissions-privilege-escalation-caveats&quot;&gt;&lt;strong&gt;CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now in SQL Server 2014, by introducing the permission &lt;strong&gt;&lt;em&gt;IMPERSONATE ANY LOGIN&lt;/em&gt;&lt;/strong&gt;, gives us ammunition to tackle this problem.&lt;/p&gt;
&lt;p&gt;-           This Permission permits to impersonate any Login &lt;span style=&quot;text-decoration: underline;&quot;&gt;and User&lt;/span&gt;(!).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If we &lt;strong&gt;&lt;em&gt;DENY&lt;/em&gt;&lt;/strong&gt; this to the Principal with &lt;em&gt;CONTROL SERVER&lt;/em&gt; permission, it prevents him from impersonating any Login &lt;span style=&quot;text-decoration: underline;&quot;&gt;directly&lt;/span&gt;. (Why do I say “directly”? – We’ll see a bit further down.)&lt;/p&gt;
&lt;p&gt;So let’s see &lt;strong&gt;how to prevent a Login with CONTROL SERVER from elevating privileges by impersonating another login &lt;/strong&gt;with help of the new permission:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;USE [master]&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;CREATE LOGIN DBA_TheDude WITH PASSWORD=N&#039;www&#039;, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;CREATE SERVER ROLE [Role_DBA]&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;ALTER SERVER ROLE [Role_DBA]&lt;/p&gt;
&lt;p&gt;ADD MEMBER DBA_TheDude&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;GRANT CONTROL SERVER TO [Role_DBA]&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt;DENY IMPERSONATE ANY LOGIN TO [Role_DBA]&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;CREATE DATABASE ControlServer_Schema_Demo&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;-- ====================&lt;/p&gt;
&lt;p&gt;-- === Test&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;EXECUTE AS LOGIN = &#039;DBA_TheDude&#039;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;-- Attempt impersonation:&lt;/p&gt;
&lt;p&gt;EXECUTE AS LOGIN = &#039;sa&#039;;&lt;/p&gt;
&lt;p&gt;--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Msg 15406, Level 16, State 1, Line 9&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Cannot execute as the server principal because the principal &quot;sa&quot; does not exist, this type of principal cannot be impersonated, or you do not have permission.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;//&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Die Ausführung als Serverprinzipal ist nicht möglich, weil der Prinzipal &#039;sa&#039; nicht vorhanden ist, für diesen Typ von Prinzipal kein Identitätswechsel möglich ist, oder Sie nicht die erforderliche Berechtigung haben.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;USE ControlServer_Schema_Demo&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;EXECUTE AS USER = &#039;dbo&#039;;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;--&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Msg 15517, Level 16, State 1, Line 15&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Cannot execute as the database principal because the principal &quot;dbo&quot; does not exist, this type of principal cannot be impersonated, or you do not have permission.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;//&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;Die Ausführung als Datenbankprinzipal ist nicht möglich, weil der Prinzipal &#039;dbo&#039; nicht vorhanden ist, für diesen Typ von Prinzipal kein Identitätswechsel möglich ist, oder Sie nicht die erforderliche Berechtigung haben.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;strong&gt;Hurra!(?)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Privilege-Escalation&lt;/strong&gt;-Risiko:&lt;/p&gt;
&lt;p&gt;Wirklich? Immer noch?&lt;br /&gt; Natürlich.&lt;br /&gt; &lt;br /&gt; Wir laufen immer noch&lt;strong&gt; unter dem Kontext &lt;em&gt;DBA_TheDude&lt;/em&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Hooray!(?)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Privilege-Escalation&lt;/strong&gt;-risc:&lt;/p&gt;
&lt;p&gt;Really? Still?&lt;br /&gt; Of course.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Still we are running under the context of &lt;em&gt;DBA_TheDude:&lt;/em&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;USE master;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;CREATE LOGIN UtilizeMe WITH PASSWORD=N&#039;www&#039;, DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;GRANT CONTROL SERVER TO UtilizeMe&lt;/p&gt;
&lt;p&gt;GO&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Wir können den Login “UtilizeMe” nicht &lt;strong&gt;&lt;em&gt;impersonifizieren&lt;/em&gt;&lt;/strong&gt;, aber wir können und einfach mit seinem Passwort &lt;strong&gt;&lt;em&gt;anmelden&lt;/em&gt;&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;-           &lt;/strong&gt;Nebenbei ein weiterer Grund, SQL Authentifizierung nicht zu verwenden, da er ansonsten die Credentials eines validen Windows-Login’s finden müsste – viel schwieriger, als einfach seinen eigenen Backdoor-account anzulegen.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;We cannot &lt;strong&gt;&lt;em&gt;Impersonate&lt;/em&gt;&lt;/strong&gt; the “UtilizeMe” Login, but we can just &lt;strong&gt;&lt;em&gt;Log On&lt;/em&gt;&lt;/strong&gt; using his password!&lt;/p&gt;
&lt;p&gt;-           Another reason to not use SQL authentication by the way, as he would then need to find a valid Windows-Login’s Credentials – much harder to just creating his own backdoor-account.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;img src=&quot;http://andreas-wolter.com/wordpress/wp-content/uploads/2017/10/1404_SQL_Server_2014_Logon_Screen_SQL_Authentication.png&quot; alt=&quot;&quot; width=&quot;420&quot; height=&quot;320&quot; /&gt;&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Um also unseren Administrator wirklich daran zu hindern, seine Privilegien zum Sysadmin zu erweitern, müssen wir auch mit &lt;strong&gt;DENY ALTER ANY LOGIN&lt;/strong&gt;  und &lt;strong&gt;ALTER ANY SERVER ROLE&lt;/strong&gt; arbeiten.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;So in order to further prevent our Administrator from elevating privileges to sysadmin, we also need to work with &lt;strong&gt;DENY ALTER &lt;span style=&quot;text-decoration: underline;&quot;&gt;ANY&lt;/span&gt; LOGIN&lt;/strong&gt;  and &lt;strong&gt;ALTER &lt;span style=&quot;text-decoration: underline;&quot;&gt;ANY&lt;/span&gt; SERVER ROLE&lt;/strong&gt;.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Und kann DANN &lt;em&gt;CONTROL SERVER&lt;/em&gt; endlich sicher verwendet werden?&lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;NEIN!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Tatsächlich gibt es noch ein paar andere Dinge, die man tun kann, um die Berechtigungen von einem CONTROL SERVER-berechtigten Konto zu erweitern. Etwas trickreicher vielleicht, aber ein Angreifer mit einem guten Wissen über SQL Server (ich spreche also nicht von „Raketenwissenschaft“), wird in der Lage sein soetwas durchzuführen.&lt;/p&gt;
&lt;p&gt;Mir ist bewusst, dass das “Separation of Duties in SQL Server 2014”-Whitepaper (Enthalten im &lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39269&quot; target=&quot;_blank&quot;&gt;Microsoft® SQL Server® 2014 Product Guide&lt;/a&gt;) die Kombination von GRANT CONTROL SERVER + DENY IMPERSONATE ANY tatschlich als Best Practice listet, aber dennoch…&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Also, empfehle ich die Verwendung in irgendeiner Weise?&lt;br /&gt; Das ist für mich persönlich eine harte Frage, da ich gerne viel weniger Leute sehen würde, die sa/sysadmin für tägliche Aufgaben verwenden/vergeben.&lt;/p&gt;
&lt;p&gt;Leider ist es jedoch weit davon entfernt, perfekt zu sein, und in Sicherhit-belangen, alles, was nicht lupenrein ist, ist ein Risiko.&lt;br /&gt; Aber ich sehe es durchaus als ersten Schritt, um Leute davon abzuhalten, von Anfang an die höchsten Berechtigungen zu verwenden, da viele einfach nicht die Zeit und Kenntnisse haben werden, dort auszubrechen.&lt;br /&gt; Ich empfehle es in Kombination mit soliden Überwachung und Alarmen.&lt;/p&gt;
&lt;p&gt;Wer das also anstelle von sa/sysadmin verwendet, verdient dennoch Applaus, da es zeigt, dass man sich kümmert und es wagt, Berechtigungen einzuschränken.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Can we THEN finally use &lt;em&gt;CONTROL SERVER&lt;/em&gt; &lt;strong&gt;completely safely&lt;/strong&gt;?&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;&lt;strong&gt;NO!&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In fact there are a few other things one can do to elevate permissions from a CONTROL SERVER-permitted account. More tricky in a way, but an attacker with some good knowledge about SQL Server (note, I am not saying “rocket-scientist”) will be able to do that.&lt;/p&gt;
&lt;p&gt;I am aware that the “Separation of Duties in SQL Server 2014”-Whitepaper (Contained in the &lt;a href=&quot;http://www.microsoft.com/en-us/download/details.aspx?id=39269&quot; target=&quot;_blank&quot;&gt;Microsoft® SQL Server® 2014 Product Guide&lt;/a&gt;) does in fact list the combination of GRANT CONTROL SERVER + DENY IMPERSONATE ANY LOGIN as a best practice, but yet…&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So do I recommend using it in any way?&lt;/p&gt;
&lt;p&gt;That is a hard question for me personally, as I would like to see much less people using/granting sa/sysadmin for daily tasks, and this permission had the potential to make an end to it.&lt;/p&gt;
&lt;p&gt;Unfortunately it is far from perfect, and in security-terms, anything not flawless, is a risk.&lt;/p&gt;
&lt;p&gt;But in terms of getting people away from using the highest privileges from the very beginning, I do see it as a step, since many may just not have the time and skills to break out of it.&lt;/p&gt;
&lt;p&gt;I do recommend using it in combination with some solid Auditing and alerts in place.&lt;br /&gt; So anyone using this instead sa/sysasdmin still gets applause, as it shows you care and dare to limit permissions.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;strong&gt;SELECT ALL USER SECURABLES&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; Diese Berechtigung kann verwendet werden, um einen hochgradig berechtigten Principal, der z.B. Troubleshooting/Analysen des Servers durchführt daran zu hindern, Nutzer-Daten auszulesen. – Vergesst nicht, auch EXECUTE in alle Nutzerdatenbanken zu verbieten, ansonsten kann derjenige immer noch alle gespeicherten Prozeduren (sofern vorhanden) ausführen, um an die Daten zu gelangen.&lt;br /&gt; Auch das ist nicht Bombenfest, wie wir bereits von CONTROL SERVER und seinen Einschränkungen wissen.&lt;/p&gt;
&lt;p&gt;Was sicherer ist, ist die Verwendung für eine Art Auditor, der ALLE Daten lesen (aber nicht ändern) können soll – ohne den Aufwand, in sämtlichen Nutzerdatenbanken Benutzer und Rechte zu vergeben.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;strong&gt;SELECT ALL USER SECURABLES&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt; This permission can be used for preventing a highly privileged Principal that may be troubleshooting/analyzing the server from reading any user data. - Do not forget to also deny EXECUTE in all User databases though, otherwise he can just execute the stored procedures (if any exist) to get to the data.&lt;br /&gt; Also this is not bullet-proof as we already know from CONTROL SERVER and it’s restrictions.&lt;/p&gt;
&lt;p&gt;What’s more safe, is the use for an Auditor that needs to read ALL data, but not change it - without the effort of creating users and permissions in all user databases.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;strong&gt;CONNECT ANY DATABASE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Diese Berechtigung kann gut für Logins verwendet werden, die sich im Wesentlichen mit jeder Datenbank verbinden können and zum Beispiel Code Reviews durchführen sollen – indem man diese mit der VIEW ANY DEFINITION Berechtigung kombiniert.&lt;br /&gt; Das ist in meinen Augen tatsächlich sehr gut verwendbar für viele Szenarien.&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;&lt;strong&gt;CONNECT ANY DATABASE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This permission can be used quite well for having logins that can basically connect to any database and for example do code reviews - by combining it with the VIEW ANY DEFINITION permission.&lt;br /&gt; I do think this is actually of quite some use for many scenarios.&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Happy “Server controlling”,&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(DE)<br /> SQL Server 2014 bringt insgesamt 5 neue Berechtigungen. Zwei von diesen sind auf Datenbank-Ebene und nur in der Windows Azure SQL Database Edition verfügbar – nicht im „Box-Produkt“.<br /> (Danke an <a href="http://www.sommarskog.se/" target="_blank">Erland Sommarskog</a> für die Bestätigung und Hinweis auf die recht versteckte Notiz in der Dokumentation: <a href="http://msdn.microsoft.com/en-us/library/ms178569%28v=sql.120%29.aspx" target="_blank">GRANT Database Permissions</a>)<br /> Die neuen Berechtigungen sind wie folgt:</p>
</td>
<td valign="top" width="334">
<p>(EN)<br /> SQL Server 2014 brings altogether 5 new permissions. Two of those are on database level and only available in the Windows Azure SQL Database Edition – not in the box-version (Thanks <a href="http://www.sommarskog.se/" target="_blank">Erland Sommarskog</a> for confirming this and pointing me to the quite hidden note in the documentation: <a href="http://msdn.microsoft.com/en-us/library/ms178569%28v=sql.120%29.aspx" target="_blank">GRANT Database Permissions</a>)<br /> The new permissions are as follows:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p><strong>Class Desc.</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p><strong>Permission Name</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p><strong>Type</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="271">
<p><strong>Parent Covering Permission Name</strong></p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p>DATABASE</p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p>ALTER ANY DATABASE EVENT SESSION</p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p>AADS</p>
</td>
<td valign="top" nowrap="nowrap" width="271">
<p>ALTER ANY EVENT SESSION</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p>DATABASE</p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p>KILL DATABASE CONNECTION</p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p>KIDC</p>
</td>
<td valign="top" nowrap="nowrap" width="271">
<p>ALTER ANY CONNECTION</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p>SERVER</p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p>CONNECT ANY DATABASE</p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p>CADB</p>
</td>
<td valign="top" nowrap="nowrap" width="271"> </td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p>SERVER</p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p>IMPERSONATE ANY LOGIN</p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p>IAL</p>
</td>
<td valign="top" nowrap="nowrap" width="271"> </td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="94">
<p>SERVER</p>
</td>
<td valign="top" nowrap="nowrap" width="262">
<p>SELECT ALL USER SECURABLES</p>
</td>
<td valign="top" nowrap="nowrap" width="56">
<p>SUS</p>
</td>
<td valign="top" nowrap="nowrap" width="271"> </td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Und wofür und wie können wir diese neuen Berechtigungen auf Server Ebene verwenden?</p>
<p> </p>
<p><strong>IMPERSONATE ANY LOGIN</strong></p>
<p> </p>
<p>Erinnert Ihr Euch an das Problem mit <strong><em>CONTROL SERVER</em></strong>?</p>
<p>Das größte Problem war, das dieses Recht auch die <strong>Impersonifizierung eines jeden Kontos, inklusive der Privilegien Erweiterung zum sysadmin erlaubte</strong>.</p>
<p>Die Details und auch andere Probleme mit <em>CONTROL SERVER</em> habe ich hier umfassend dokumentiert:</p>
<p><a href="/blogs/andreaswolter/2013/08/control-server-vs-sysadmin-sa-permissions-privilege-escalation-caveats"><strong>CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats</strong></a></p>
<p><strong> </strong></p>
<p>SQL Server 2014 gibt uns mit der Einführung der <strong><em>IMPERSONATE ANY LOGIN</em></strong>-Berechtigung Munition, dieses Problem anzugehen.</p>
<p>-           Diese Berechtigung erlaubt es, jeden Login <span style="text-decoration: underline;">und User</span> zum impersonieren(!).</p>
<p><strong> </strong></p>
<p>Wenn wir dieses mit einem <strong><em>DENY</em></strong> gegenüber dem Principal mit <em>CONTROL SERVER</em> Recht verwenden, verhindert es diesen, irgendeinen Login direkt zu impersonifizieren. (Warum sage ich “direkt”? –  Das sehen wir ein Stück weiter unten.)<br /> Also sehen wir uns an, <strong>wie man einen Login mit CONTROL SERVER an einer Pivilegienerweiterung hindert</strong>, mithilfe der neuen Berechtigung</p>
</td>
<td valign="top" width="334">
<p>So, what for and how can we use those permissions on Server level?</p>
<p> </p>
<p><strong>IMPERSONATE ANY LOGIN</strong></p>
<p> </p>
<p>Do you remember the problem with <strong><em>CONTROL SERVER</em></strong>?<br /> The biggest flaw of this permission was, that this permission also <strong>allowed Impersonation of any account, including privilege elevation to any sysadmin</strong>.<br /> I have documented this and other problems with <em>CONTROL SERVER</em> in detail here:</p>
<p><a href="/blogs/andreaswolter/2013/08/control-server-vs-sysadmin-sa-permissions-privilege-escalation-caveats"><strong>CONTROL SERVER vs. sysadmin/sa: permissions, system procedures, DBCC, automatic schema creation and privilege escalation - caveats</strong></a></p>
<p><strong> </strong></p>
<p>Now in SQL Server 2014, by introducing the permission <strong><em>IMPERSONATE ANY LOGIN</em></strong>, gives us ammunition to tackle this problem.</p>
<p>-           This Permission permits to impersonate any Login <span style="text-decoration: underline;">and User</span>(!).</p>
<p> </p>
<p>If we <strong><em>DENY</em></strong> this to the Principal with <em>CONTROL SERVER</em> permission, it prevents him from impersonating any Login <span style="text-decoration: underline;">directly</span>. (Why do I say “directly”? – We’ll see a bit further down.)</p>
<p>So let’s see <strong>how to prevent a Login with CONTROL SERVER from elevating privileges by impersonating another login </strong>with help of the new permission:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>USE [master]</p>
<p>GO</p>
<p> </p>
<p>CREATE LOGIN DBA_TheDude WITH PASSWORD=N'www', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF</p>
<p>GO</p>
<p> </p>
<p>CREATE SERVER ROLE [Role_DBA]</p>
<p> </p>
<p>ALTER SERVER ROLE [Role_DBA]</p>
<p>ADD MEMBER DBA_TheDude</p>
<p> </p>
<p>GRANT CONTROL SERVER TO [Role_DBA]</p>
<p>GO</p>
<p>DENY IMPERSONATE ANY LOGIN TO [Role_DBA]</p>
<p>GO</p>
<p> </p>
<p>CREATE DATABASE ControlServer_Schema_Demo</p>
<p>GO</p>
<p> </p>
<p>-- ====================</p>
<p>-- === Test</p>
<p> </p>
<p>EXECUTE AS LOGIN = 'DBA_TheDude'</p>
<p> </p>
<p>-- Attempt impersonation:</p>
<p>EXECUTE AS LOGIN = 'sa';</p>
<p>--&gt;</p>
<p><span style="color: #ff0000;">Msg 15406, Level 16, State 1, Line 9</span></p>
<p><span style="color: #ff0000;">Cannot execute as the server principal because the principal "sa" does not exist, this type of principal cannot be impersonated, or you do not have permission.</span></p>
<p><span style="color: #ff0000;">//</span></p>
<p><span style="color: #ff0000;">Die Ausführung als Serverprinzipal ist nicht möglich, weil der Prinzipal 'sa' nicht vorhanden ist, für diesen Typ von Prinzipal kein Identitätswechsel möglich ist, oder Sie nicht die erforderliche Berechtigung haben.</span></p>
<p><span style="color: #ff0000;"> </span></p>
<p> </p>
<p>USE ControlServer_Schema_Demo</p>
<p> </p>
<p>EXECUTE AS USER = 'dbo';</p>
<p> </p>
<p>--&gt;</p>
<p><span style="color: #ff0000;">Msg 15517, Level 16, State 1, Line 15</span></p>
<p><span style="color: #ff0000;">Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission.</span></p>
<p><span style="color: #ff0000;">//</span></p>
<p><span style="color: #ff0000;">Die Ausführung als Datenbankprinzipal ist nicht möglich, weil der Prinzipal 'dbo' nicht vorhanden ist, für diesen Typ von Prinzipal kein Identitätswechsel möglich ist, oder Sie nicht die erforderliche Berechtigung haben.</span></p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><strong>Hurra!(?)</strong></p>
<p><strong>Privilege-Escalation</strong>-Risiko:</p>
<p>Wirklich? Immer noch?<br /> Natürlich.<br /> <br /> Wir laufen immer noch<strong> unter dem Kontext <em>DBA_TheDude</em>:</strong></p>
</td>
<td valign="top" width="334">
<p>Hooray!(?)</p>
<p><strong>Privilege-Escalation</strong>-risc:</p>
<p>Really? Still?<br /> Of course.</p>
<p> </p>
<p>Still we are running under the context of <em>DBA_TheDude:</em></p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p> </p>
<p>USE master;</p>
<p> </p>
<p>CREATE LOGIN UtilizeMe WITH PASSWORD=N'www', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF</p>
<p>GO</p>
<p> </p>
<p>GRANT CONTROL SERVER TO UtilizeMe</p>
<p>GO</p>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Wir können den Login “UtilizeMe” nicht <strong><em>impersonifizieren</em></strong>, aber wir können und einfach mit seinem Passwort <strong><em>anmelden</em></strong>!</p>
<p><strong>-           </strong>Nebenbei ein weiterer Grund, SQL Authentifizierung nicht zu verwenden, da er ansonsten die Credentials eines validen Windows-Login’s finden müsste – viel schwieriger, als einfach seinen eigenen Backdoor-account anzulegen.</p>
</td>
<td valign="top" width="334">
<p>We cannot <strong><em>Impersonate</em></strong> the “UtilizeMe” Login, but we can just <strong><em>Log On</em></strong> using his password!</p>
<p>-           Another reason to not use SQL authentication by the way, as he would then need to find a valid Windows-Login’s Credentials – much harder to just creating his own backdoor-account.</p>
<p> </p>
</td>
</tr>
</tbody>
</table>
<p> <img src="http://andreas-wolter.com/wordpress/wp-content/uploads/2017/10/1404_SQL_Server_2014_Logon_Screen_SQL_Authentication.png" alt="" width="420" height="320" /></p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Um also unseren Administrator wirklich daran zu hindern, seine Privilegien zum Sysadmin zu erweitern, müssen wir auch mit <strong>DENY ALTER ANY LOGIN</strong>  und <strong>ALTER ANY SERVER ROLE</strong> arbeiten.</p>
</td>
<td valign="top" width="334">
<p>So in order to further prevent our Administrator from elevating privileges to sysadmin, we also need to work with <strong>DENY ALTER <span style="text-decoration: underline;">ANY</span> LOGIN</strong>  and <strong>ALTER <span style="text-decoration: underline;">ANY</span> SERVER ROLE</strong>.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Und kann DANN <em>CONTROL SERVER</em> endlich sicher verwendet werden?</p>
<p align="center"><span style="color: #ff0000;"><strong>NEIN!</strong></span></p>
<p> </p>
<p>Tatsächlich gibt es noch ein paar andere Dinge, die man tun kann, um die Berechtigungen von einem CONTROL SERVER-berechtigten Konto zu erweitern. Etwas trickreicher vielleicht, aber ein Angreifer mit einem guten Wissen über SQL Server (ich spreche also nicht von „Raketenwissenschaft“), wird in der Lage sein soetwas durchzuführen.</p>
<p>Mir ist bewusst, dass das “Separation of Duties in SQL Server 2014”-Whitepaper (Enthalten im <a href="http://www.microsoft.com/en-us/download/details.aspx?id=39269" target="_blank">Microsoft® SQL Server® 2014 Product Guide</a>) die Kombination von GRANT CONTROL SERVER + DENY IMPERSONATE ANY tatschlich als Best Practice listet, aber dennoch…</p>
<p> </p>
<p>Also, empfehle ich die Verwendung in irgendeiner Weise?<br /> Das ist für mich persönlich eine harte Frage, da ich gerne viel weniger Leute sehen würde, die sa/sysadmin für tägliche Aufgaben verwenden/vergeben.</p>
<p>Leider ist es jedoch weit davon entfernt, perfekt zu sein, und in Sicherhit-belangen, alles, was nicht lupenrein ist, ist ein Risiko.<br /> Aber ich sehe es durchaus als ersten Schritt, um Leute davon abzuhalten, von Anfang an die höchsten Berechtigungen zu verwenden, da viele einfach nicht die Zeit und Kenntnisse haben werden, dort auszubrechen.<br /> Ich empfehle es in Kombination mit soliden Überwachung und Alarmen.</p>
<p>Wer das also anstelle von sa/sysadmin verwendet, verdient dennoch Applaus, da es zeigt, dass man sich kümmert und es wagt, Berechtigungen einzuschränken.</p>
</td>
<td valign="top" width="334">
<p>Can we THEN finally use <em>CONTROL SERVER</em> <strong>completely safely</strong>?</p>
<p> </p>
<p align="center"><span style="color: #ff0000;"><strong>NO!</strong></span></p>
<p> </p>
<p>In fact there are a few other things one can do to elevate permissions from a CONTROL SERVER-permitted account. More tricky in a way, but an attacker with some good knowledge about SQL Server (note, I am not saying “rocket-scientist”) will be able to do that.</p>
<p>I am aware that the “Separation of Duties in SQL Server 2014”-Whitepaper (Contained in the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=39269" target="_blank">Microsoft® SQL Server® 2014 Product Guide</a>) does in fact list the combination of GRANT CONTROL SERVER + DENY IMPERSONATE ANY LOGIN as a best practice, but yet…</p>
<p> </p>
<p>So do I recommend using it in any way?</p>
<p>That is a hard question for me personally, as I would like to see much less people using/granting sa/sysadmin for daily tasks, and this permission had the potential to make an end to it.</p>
<p>Unfortunately it is far from perfect, and in security-terms, anything not flawless, is a risk.</p>
<p>But in terms of getting people away from using the highest privileges from the very beginning, I do see it as a step, since many may just not have the time and skills to break out of it.</p>
<p>I do recommend using it in combination with some solid Auditing and alerts in place.<br /> So anyone using this instead sa/sysasdmin still gets applause, as it shows you care and dare to limit permissions.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><strong>SELECT ALL USER SECURABLES</strong></p>
<p><br /> Diese Berechtigung kann verwendet werden, um einen hochgradig berechtigten Principal, der z.B. Troubleshooting/Analysen des Servers durchführt daran zu hindern, Nutzer-Daten auszulesen. – Vergesst nicht, auch EXECUTE in alle Nutzerdatenbanken zu verbieten, ansonsten kann derjenige immer noch alle gespeicherten Prozeduren (sofern vorhanden) ausführen, um an die Daten zu gelangen.<br /> Auch das ist nicht Bombenfest, wie wir bereits von CONTROL SERVER und seinen Einschränkungen wissen.</p>
<p>Was sicherer ist, ist die Verwendung für eine Art Auditor, der ALLE Daten lesen (aber nicht ändern) können soll – ohne den Aufwand, in sämtlichen Nutzerdatenbanken Benutzer und Rechte zu vergeben.</p>
</td>
<td valign="top" width="334">
<p><strong>SELECT ALL USER SECURABLES</strong></p>
<p><br /> This permission can be used for preventing a highly privileged Principal that may be troubleshooting/analyzing the server from reading any user data. - Do not forget to also deny EXECUTE in all User databases though, otherwise he can just execute the stored procedures (if any exist) to get to the data.<br /> Also this is not bullet-proof as we already know from CONTROL SERVER and it’s restrictions.</p>
<p>What’s more safe, is the use for an Auditor that needs to read ALL data, but not change it - without the effort of creating users and permissions in all user databases.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p><strong>CONNECT ANY DATABASE</strong></p>
<p> </p>
<p>Diese Berechtigung kann gut für Logins verwendet werden, die sich im Wesentlichen mit jeder Datenbank verbinden können and zum Beispiel Code Reviews durchführen sollen – indem man diese mit der VIEW ANY DEFINITION Berechtigung kombiniert.<br /> Das ist in meinen Augen tatsächlich sehr gut verwendbar für viele Szenarien.</p>
</td>
<td valign="top" width="334">
<p><strong>CONNECT ANY DATABASE</strong></p>
<p> </p>
<p>This permission can be used quite well for having logins that can basically connect to any database and for example do code reviews - by combining it with the VIEW ANY DEFINITION permission.<br /> I do think this is actually of quite some use for many scenarios.</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<p>Happy “Server controlling”,</p>
<p> </p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-permissions-sql-server-2014#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3675</wfw:commentRss>
		</item>
				<item>
			<title>New Extended Events for Tracing in SQL Server 2014</title>
			<link>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-extended-events-for-tracing-in-sql-server-2014</link>
			<pubDate>Fri, 04 Apr 2014 22:10:00 +0000</pubDate>			<dc:creator>Andreas Wolter</dc:creator>
			<category domain="alt">Tracing &amp; Monitoring</category>
<category domain="main">Extended Events</category>
<category domain="alt">SQL Trace &amp; Profiler</category>
<category domain="alt">SQL Server 2014</category>			<guid isPermaLink="false">3667@https://www.insidesql.org/blogs/</guid>
						<description>&lt;p&gt;Neue “Erweiterte Ereignisse” (XEvents) für Tracing in SQL Server 2014&lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(de)&lt;br /&gt;Dieser Artikel enthält eine Liste der neuen Erweiterte Ereignisse (“Extended Events”), dem Tracing Framework in SQL Server in dem neuen 2014 Release.&lt;/p&gt;
&lt;p&gt;Zunächst gibt es 3 neue Pakete („Packages“), die alle zu der neuen Arbeitsspeicher(„In-Memory“) -OLTP Engine: XTP, aufgeteilt auf 3 DLLs:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;(en)&lt;br /&gt;This article contains a list of new Extended Events, the tracing framework in SQL Server in the new 2014 release.&lt;/p&gt;
&lt;p&gt;To begin with there are 3 new packages, all belonging to the new In-Memory OLTP Engine: XTP, split up into 3 dlls:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style=&quot;width: 574px;&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;Package&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;&lt;strong&gt;Module name&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Runtime&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkruntime.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Engine&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkengine.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;97&quot;&gt;
&lt;p&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;185&quot;&gt;
&lt;p&gt;Extended events for the XTP Compile&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; nowrap=&quot;nowrap&quot; width=&quot;292&quot;&gt;
&lt;p&gt;{InstanceDir}\MSSQL\Binn\&lt;br /&gt; hkcompile.dll&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;Die Anzahl der Extended Events ist von &lt;strong&gt;625 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2012&lt;/strong&gt; (SP1) auf &lt;strong&gt;870 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2014&lt;/strong&gt; (RTM) angestiegen. Das sind &lt;strong&gt;245&lt;/strong&gt; neue Events! – Reichlich Möglichkeiten, in Internas einzutauchen :-)&lt;br /&gt; 2 Events sind umbenannt worden:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_incremental_checkpoint&lt;/em&gt; in&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_indirect_checkpoint&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;und &lt;em&gt;hekaton_slow_param_passing&lt;/em&gt; in&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;&lt;em&gt;natively_compiled_proc_slow_parameter_passing&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Ja, richtig gelesen. Es gab bereits im SQL Server 2012 eine Anzahl an Events für die XTP Engine. Es kommt recht häufig vor, dass man Bits von zukünftigen Entwicklungen in der aktuellen Release findet.&lt;/p&gt;
&lt;p&gt;Nebenbei: SQL Trace wurde nicht im geringsten angefasst. Die Anzahl von SQL Trace Events bleibt mit 180 seit SQL Server 2008 stabil. – Here ist ein Überblick von Extended Events gegen SQL Trace Events in den verschiedenen SQL Server Versionen: &lt;a href=&quot;/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features&quot;&gt;Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp;amp; Profiler einfach von gestern sind :-)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Weiter zu XEvents: es gibt keine neuen Prädikate, aber eine Anzahl neuer Maps, was natürlich nicht überrascht bei der Menge neuer Events.&lt;br /&gt; Targets, Actions, Typen und Session Optionen  sind unverändert.&lt;/p&gt;
&lt;p&gt;Und hier ist die Liste der neuen Extended Events:&lt;/p&gt;
&lt;/td&gt;
&lt;td valign=&quot;top&quot; width=&quot;334&quot;&gt;
&lt;p&gt;The number of Extended Events increased from &lt;strong&gt;625 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2012&lt;/strong&gt; (SP1) to &lt;strong&gt;870 in &lt;/strong&gt;&lt;strong&gt;SQL Server 2014&lt;/strong&gt; (RTM). That makes &lt;strong&gt;245&lt;/strong&gt; new events! – Plenty of opportunities to look into internals :-)&lt;br /&gt; 2 events have been renamed:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_incremental_checkpoint&lt;/em&gt; into&lt;/p&gt;
&lt;p&gt;&lt;em&gt;recovery_indirect_checkpoint&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;and &lt;em&gt;hekaton_slow_param_passing&lt;/em&gt; into&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;em&gt;natively_compiled_proc_slow_parameter_passing&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes, you read correctly. There have already been a couple of events for the new XTP engine within SQL Server 2012. It’s quite common that you can find bits of future developments within the current release.&lt;/p&gt;
&lt;p&gt;By the way: SQL Trace has not been touched by the slightest bit. The number of SQL Trace events stays at 180 since SQL Server 2008. – here you find an overview of the number of Extended Events vs SQL Trace events in the various SQL Server versions: &lt;a href=&quot;/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features&quot;&gt;Comparing Extended Events vs SQL Trace – or why SQL Trace &amp;amp; Profiler are just a thing of the past :-)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Continuing with XEvents: There are no new predicates, but a couple more maps, which is of course not surprisingly considering the amount of new events.&lt;br /&gt; Targets, actions, types and session options are unchanged.&lt;/p&gt;
&lt;p&gt;And here is the list of all new extended events:&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table style=&quot;width: 350px;&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Package&lt;br /&gt;name&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Event name&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_async_shutdown_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store encounters an error during async query store shutdown&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_cleanup_task_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for cleanup of QDS stale data is not completed successfully&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_creation_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence could not be created&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_initialization_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence could not be initialized&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_background_task_persist_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the background task for QDS data persistence is not completed successfully&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_begin_persist_runtime_stat&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired immediately before current runtime statistics for a query plan is persisted to the database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_bloom_filter_false_positive&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the Bloom filter for QDS statement texts gives a false positive result&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_check_consistency_init_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when check consistency task fails during initialization&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_database_initialization_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if initialization of the Query Store for database has failed. The Query Store will be disabled for this database&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_db_cleanup__finished&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if cleanup of QDS stale data finished for particular database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_db_cleanup__started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if cleanup of QDS stale data started for particular database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_disk_size_check_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a check against Query Store on-disk size limit fails&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_disk_size_info&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a check against QDS on-disk size is performed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information is sent to the query store.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info_discarded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information sent to the query store is discarded.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_execution_runtime_info_evicted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when runtime information sent to the query store is evicted.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_flush_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store failed to flush dirty data&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_loaded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store is loaded&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_notify_dirty_shutdown_on_partition_startup&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when previous instance of query store for the partition is shutdown by force in order to allow creation of a new instance&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_notify_force_failure_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store failed to notify force failure&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_persist_task_init_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when persist task fails during initialization&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_forcing_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when forcing of plan from qds fail&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_persistence_failure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if there&#039;s a failure to persist plan&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_plan_removal&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when plan is removed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_query_persistence_failure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if there&#039;s a failure to persist query&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_read_write_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the read/write to Query Store internal tables failed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_statement_not_found&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired in case when statement couldn&#039;t be found due to race condition or ambiguous user request.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;qds&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_unloaded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when query store is unloaded from memory&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;nonpreemptive_long_syncio&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;record long sync io operation in nonpreemptive worker&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;stuck_dispatcher_callback_executed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Stuck dispatcher callback executed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlos&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;wait_completed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when there is a wait completed on a SQLOS controlled resource.  Use this event to track wait completion.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;after_natively_compiled_proc_entry_removal_on_drop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired after the procedure cache entry is flushed when dropping a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;availability_replica_state&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the Availability Replica is starting or shutting down.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_natively_compiled_proc_entry_removal_on_drop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before the procedure cache entry is flushed when dropping a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_redo_lsn_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs just prior to the update of the EOL LSN&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_eviction_thresholds_recalculated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Lazywriter and/or worker clock has wrapped the BUF array and thresholds are re-calculated.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_evicted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page is evicted from the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_read&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page is read from the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;buffer_pool_extension_pages_written&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Page or contiguous set of pages evicted into the buffer pool extension cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_phase_tracing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when DBCC CHECK enters a new phase of the checking. Use this event to trace the phases of DBCC CHECK process.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_message_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of messages a DBCC CHECK thread has sent or received.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_page_io_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of logical, physical, and read-ahead IOs a DBCC CHECK thread has performed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;check_thread_page_latch_statistics&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a phase of DBCC CHECK is finished. Use This event to collect the number and time of page latch and IO latch waits.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;clustered_columnstore_index_rebuild&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when clustered index on the table was rebuilt. This event is raised three times for ALTER index rebuild operation on CCSI. The event is raised when the operation takes lock on index rebuild resource, when lock is taken on the table and when S lock on the table is upgraded to SCH_M lock to switch indexes in metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_code_coverage&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Code coverage Xevent for columnstore code.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_low_memory&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when Storage Engine detects low memory condition and the rowgroup size is reduced.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_process_segment&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a segment is processed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;column_store_index_build_throttle&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Shows the statistics of columnstore index build parallelism throttling&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;columnstore_tuple_mover_begin_compress&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when column store tuple mover starts compressing a deltastore.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;columnstore_tuple_mover_end_compress&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when column store tuple mover is done compressing a deltastore.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;database_xml_deadlock_report&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Produces a deadlock report for a victim, with information scoped to the victim&#039;s database.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;db_lock_acquired_from_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a DB lock is acquired from the XactWorkspace DB lock cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;db_lock_released_from_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a DB lock is released from the XactWorkspace DB lock cache.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ddl_with_wait_at_low_priority&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A DDL statement was executed using the WAIT_AT_LOW_PRIORITY options&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;diag_quantum_end&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the diag is notified of quantum end.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;dyn_throttle_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when checkpointing has been dynamically throttled with a new Checkpoint rate.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;feature_extension&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when received and parses data for a feature in feature extension.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_handle_in_use&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired when a file handle we&#039;re trying to delete is in use and we don&#039;t expect it to be. The typical response is dumping all the handles in the system via SysInternals HANDLE.EXE&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_read_enqueued&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File read enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_read_throttled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File read throttled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_write_enqueued&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File write enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;file_write_throttled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;File write throttled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_packet_enqueue&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A task packet is enqueued&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_process_packet&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A task packet is dequeued and processed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_process_pages_for_db_packet&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Purge the pages that contain ghost records found in a database&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_start&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Ghost cleanup task start&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ghost_cleanup_task_suspend&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Ghost cleanup task suspend&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;hadr_tds_synchronizer_payload_skip&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Hadron Tds Listener Synchronizer skipped a listener payload because there were no changes since the previous payload.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;lock_request_priority_state&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;The priority state of a lock request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;log_cache_write_block&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Writing a log block to the log cache&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_add_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE ADD column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_alter_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE ALTER column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;metadata_ddl_drop_column&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when an ALTER TABLE DROP column operation is updating base index.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_activation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent activation and deactivation operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_allocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_extent_deallocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed extent deallocation operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_allocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed page allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_deallocation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track mixed page allocation operations&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_scan_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_scan_page&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mixed_page_skipextent&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Track the activity of SGAM scans for mixed page allocation&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;natively_compiled_proc_execution_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before a natively compiled procedure is executed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;natively_compiled_proc_slow_parameter_passing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a Hekaton procedure call dispatch goes to slow parameter passing code path&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;process_killed_by_abort_blockers&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A process is killed by an ABORT = BLOCKERS DDL statement&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_aggregation_finished&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at the end of batch hash aggregation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_children_reversed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs each time when hash join reverses build and probe side while processing data spilled to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_execution_batch_hash_join_spilled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs each time when hash join spills some data to disk in batch processing.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_optimizer_estimate_cardinality&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the query optimizer estimates cardinality on a relational expression.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_optimizer_force_both_cardinality_estimation_behaviors&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Both traceflags 2312 and 9481 were enabled, attempting to force both old and new cardinality estimation behaviors at the same time. The traceflags were ignored. Disable one or both of the traceflags.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_failed_to_capture_query&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the Query Store failed to capture query. The Query Store will not track statistics for this query&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_failed_to_load_forced_plan&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired if the query failed to load forced plan from QDS. Forcing policy will not be applied&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;query_store_persist_on_shutdown_failed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when SQL Server fails to store dirty entries in Query Store on database shutdown.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recovery_indirect_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Chose to enqueue an indirect checkpoint as we are near our recovery target&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;remove_database_cache&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Remove database cache&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;server_max_workers&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a request enqueue fails because a worker was not guaranteed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;session_recoverable_state_change&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when the server determines a state change in term of session recovery on a connectionresilency-enabled connection.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;sql_transaction_commit_single_phase&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs when a sql transaction is committed with single phase commit.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_blob_properties_obtained&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Windows Azure Storage blob property is obtained from response header.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_failed_request&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Failed to complete a request to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_header_obtained&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Response header is obtained from request to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_read_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Read complete from Windows Azure Storage response.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_request_opened&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;A request is opened to Windows Azure Storage.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_send_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Request send to Windows Azure Storage is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xfcb_write_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Request send to Windows Azure Storage is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_procedure&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of XTP procedure creation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of XTP table creation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_db_page_allocation_allowed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that page allocations for the database are allowed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_db_page_allocation_disallowed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that page allocations for the database are disallowed due to memory pressure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_deploy_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of XTP object deployment.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_matgen&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of MAT generation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_offline_checkpoint_scan_start&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired by XTP offline checkpoint when the checkpoint thread begins.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_offline_checkpoint_scan_stop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired by XTP offline checkpoint when the checkpoint thread stops.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_recover_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of log recovery of XTP table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_recover_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of log recovery of XTP table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;sqlserver&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_storage_table_create&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at just before the XTP storage table is created.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_connection_rejected_by_proxy_whitelist&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;After a connection attempt to the UCS proxy endpoint is rejected by whitelist check&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_connect_next_hop&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy next hop connection&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_receive_proxy_connect_message&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy receive proxy connect message&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_add&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route added&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_disable&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route disabled&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_route_refresh&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy route refreshed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;ucs&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;ucs_proxy_send_proxy_connect_message&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;UCS proxy send proxy connect message&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;cgen&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of C code generation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;invoke_cl&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to the invocation of the C compiler.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;mat_export&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of MAT export.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;pitgen_procs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of PIT generation for procedures.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpCompile&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;pitgen_tables&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of PIT generation for tables.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;after_changestatetx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires after transaction changes state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;alloctx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt; &lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;attempt_committx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Is raised when a transaction is asked to commit.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;before_changestatetx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires before transaction changes state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;dependency_acquiredtx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Raised after transaction takes a dependency on another transaction.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;endts_acquiredtx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires after transaction acquires an end timestamp.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_base_generation_evaluation&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that an evaluation of updating the GC base generation has been made.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_base_generation_updated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the oldest active transaction hint used for calculating the GC base generation has been updated.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_cycle_completed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that a GC notification has been enqueued.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;gc_notification&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that GC is processing a notification.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;redo_single_hk_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Redo on a HK log record&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_add_delta_filter_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding delta filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_add_duplicate_delta_filter&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding duplicate delta filte.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_adding_tx_filter&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Adding tx filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_begin_close_ckpt_processing&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Beginning close checkpoint processing: checkpoint flush fence = $2 ($3 state).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfd_entry_deleted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Cleaned up data CFD entry for file $2 $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfd_rows_created&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully created CFD rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfdtable_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;CfdTable dump&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfp_handles_opened&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Opened CFP handles for {data: $2 delta: $3} in section $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_cfp_removed_from_freelist&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removed CFP from freelist for destination file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_file_flush&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicating that a file has started a flush operation.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_load_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Starting Checkpoint load with checkpoint timestamp=$2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checkpoint_write_io&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Logs an event indicating that an IO has started (when event_type == IoStarted) or that an IO has completed (when event_type == IoComplete).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_checksum_validation_succeeded&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checksum validation for Hekaton checkpoint file during backup succeeded.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_close_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Closing checkpoint in active/passive state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_close_signaled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Signaling checkpoint close. The checkpoint policy object is flagged to close the current checkpoint&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_closed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checkpoint closed&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_load_thread_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Statistics of the checkpoint load thread.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_mrt_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt dump&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_serialization_state_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Checkpoint serialization state dump.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_ckpt_stream_io_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Io statistics for this particular stream.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_close_file_log_rec_created&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully created close file log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_file_pages_txs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event gives the number of pages and the transaction range for a data file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_from_page_deserialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserialized data from page $2 in file $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_data_row_modified&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Data row modified/deleted.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_cfd_rows_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Matching MRT not found for the Data CFD. Deleting corresponding CFD Rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_DeletedObjectTable_row_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting row from DeletedObjectTable in the context of transaction: $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_merged_source_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting merged source $7 file $5:$6. DeleteLSN = $2:$3:$4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delete_mrtrow_for_target_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deleting mrt row for target.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_entry_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping delta {$3, $4, $5} because it is beyond the snapshot checkpoint: $6.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_future_count_rows_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating future count pages and count rows for delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_lastgood_count_rows_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating lastgood count pages and count rows for delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_pages_txs&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event gives the number of pages and the transaction range while reading a delta file for a particular operations.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_processed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Completed processing of Delta file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_file_set_clean_or_dirty&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Delta file set clean or dirty.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_filter_removed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removing delta filter from DeltaFilterMap due to transaction filter.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_watermark_removed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Removed delta watermark.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_delta_watermark_updated&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updated delta watermark row for FileId: $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_chained_records&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Info pertaining to the deserialized content of the mrtRecords chain.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_data_from_page_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserializing data from page $2 in file $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_deserialize_source_delta_file_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Deserializing source delta file $4: page range [$2, $3).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_dump_cfd_row&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Dump cfd row&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_dump_mrt_row&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Merge Request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_close_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file close for $2 as the cfp had been merged, It could not be found in the Storage array.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_skipped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file $4 due to reason $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_file_skipped_with_tx_range&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping file $5 with TX range { $3 -&amp;gt; $4 } due to MaxTxId == InvalidTxId.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_first_page_header_flushed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Flushed first page header for file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_flush_io_operation_for_delta_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This trace is trying to catch pages issued for flush that didn&#039;t make it to the file, or were lacking the correct DeltaWatermark Timestamp.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_flush_skipped_for_closed_data_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Skipping flush for data file (&#039;$2&#039;) as it is closed.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_future_count_pages_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Updating future count pages.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_initial_merge&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Doing initial merge for destination $3 at CheckpointTs: $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_insert_DeletedObjectTable_row_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Inserting row to DeletedObjectTable in the context of transaction: $5.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_intialize_worker_file_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing file close.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mark_data_file_closed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Marking the active data file as closed to prevent the offline worker fom flushing them.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_cancelled&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Merge was cancelled for destination $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_complete_log_rec_ignored&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;MergeCompleteLogRecord ignored for destination file $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_merge_complete_log_rec_processed&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Successfully processed MergeCompleteLogRecord.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrt_dump&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt dump.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrt_row_inplace_update&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Mrt row updated in place.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_mrtrow_not_found&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Could not find row with Destination ID: $2 in MRT table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_new_delta_watermark_inserted&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Inserted new delta watermark row for FileId $3.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_offline_process_stale_merge_item&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Offline processing of stale merge item {$2, $3} Destination $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_pending_tx&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Pending Transaction&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_populate_storage_array&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Populating the storage array.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_post_writefile&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;This event is fired after issuing IO on the proxy.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_file_close_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing file close.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_merge_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Process merge complete log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_merge_request&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Process Merge Request&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_source_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing source $4 file $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_process_target_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Processing target $4 file $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_queue_merge_work_item&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Queue work item: {$2, $3} $5 - $6 with CheckpointTs as $4.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_recovered_existing_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Recovered exising files files allocated during forward processing that are not already part of the CCB.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_resyncing_state_of_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Resyncing state of file $4 (&#039;$5&#039;) post recovery:  $2 pages, $3 rows.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialization_object_cleaned&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Cleaned serialization object.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_abort_transaction_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serializing the abort transaction filter to the delta cache corresponding to its own transaction range.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_tx_begin&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialize TS begin for completing the checkpoint in active state.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialize_tx_end&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialize TS end for completing the checkpoint.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_serialized_delta_rows_to_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Serialized delta rows to file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_source_file_load_stats&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Load stats for source files in merge.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_storage_refreshed_for_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Storage refreshed for file.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_uninitialize_file&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;uninitializing_file&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;trace_wrote_delta_watermark&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Wrote delta watermark for file: $3, checkpointTs: $2.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;waiting_for_dependenciestx_event&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Raised when we have explicitly waited for dependencies to clear.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_before_create_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fired before submitting a request to the host to serialize a non-transactional log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_flush&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the point at which a given file has been flushed to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_flush_complete&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the point at which all in-flight buffers have been flushed to disk.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_file_read&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates reading of a file in XTP checkpoint recovery.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_active_log&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records in the active portion of the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_worker_stopped&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpoint worker has started processing the log records.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_checkpoint_write_io&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the checkpointing subsystem has issued or completed a write IO.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_complete_checkpoint&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates the begin and end of complete checkpoint processing.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_create_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Fires when the XTP engine creates a log record.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_delta_marked_dirty&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that a delete/update was serialized and marked a delta file dirty&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge complete log record is posted to the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_log_complete_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge log record was interpreted by the offline worker.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_process_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge log record was interpreted by the offline worker.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_request_log_record&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge request log record is posted to the log.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_merge_request_started&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates merge request has been picked up by the merge worker thread.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_root_deserialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the load of a checkpoint root is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpEngine&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;xtp_root_serialized&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Indicates that the write of the checkpoint root is complete.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;bind_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to binding metadata for a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;bind_tables&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to binding tables for a natively compiled procedure.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;create_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to creating memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;deserialize_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to deserializing metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;load_dll&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to loading the generated DLL.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recover_done&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at completion of checkpoint recovery of a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;recover_table&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs at start of checkpoint recovery of a memory optimized table.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;serialize_md&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to serializing metadata.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;strong&gt;XtpRuntime&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;unload_dll&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;Occurs prior to unloading the generated DLL.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Happy tracing,&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Andreas&lt;/p&gt;</description>
			<content:encoded><![CDATA[<p>Neue “Erweiterte Ereignisse” (XEvents) für Tracing in SQL Server 2014</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>(de)<br />Dieser Artikel enthält eine Liste der neuen Erweiterte Ereignisse (“Extended Events”), dem Tracing Framework in SQL Server in dem neuen 2014 Release.</p>
<p>Zunächst gibt es 3 neue Pakete („Packages“), die alle zu der neuen Arbeitsspeicher(„In-Memory“) -OLTP Engine: XTP, aufgeteilt auf 3 DLLs:</p>
</td>
<td valign="top" width="334">
<p>(en)<br />This article contains a list of new Extended Events, the tracing framework in SQL Server in the new 2014 release.</p>
<p>To begin with there are 3 new packages, all belonging to the new In-Memory OLTP Engine: XTP, split up into 3 dlls:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table style="width: 574px;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>Package</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p><strong>description</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p><strong>Module name</strong></p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpRuntime</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Runtime</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkruntime.dll</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpEngine</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Engine</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkengine.dll</p>
</td>
</tr>
<tr>
<td valign="top" nowrap="nowrap" width="97">
<p><strong>XtpCompile</strong></p>
</td>
<td valign="top" nowrap="nowrap" width="185">
<p>Extended events for the XTP Compile</p>
</td>
<td valign="top" nowrap="nowrap" width="292">
<p>{InstanceDir}\MSSQL\Binn\<br /> hkcompile.dll</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="334">
<p>Die Anzahl der Extended Events ist von <strong>625 in </strong><strong>SQL Server 2012</strong> (SP1) auf <strong>870 in </strong><strong>SQL Server 2014</strong> (RTM) angestiegen. Das sind <strong>245</strong> neue Events! – Reichlich Möglichkeiten, in Internas einzutauchen :-)<br /> 2 Events sind umbenannt worden:</p>
<p><em>recovery_incremental_checkpoint</em> in</p>
<p><em>recovery_indirect_checkpoint</em></p>
<p>und <em>hekaton_slow_param_passing</em> in</p>
<p><span style="font-size: x-small;"><strong><em>natively_compiled_proc_slow_parameter_passing</em></strong></span></p>
<p>Ja, richtig gelesen. Es gab bereits im SQL Server 2012 eine Anzahl an Events für die XTP Engine. Es kommt recht häufig vor, dass man Bits von zukünftigen Entwicklungen in der aktuellen Release findet.</p>
<p>Nebenbei: SQL Trace wurde nicht im geringsten angefasst. Die Anzahl von SQL Trace Events bleibt mit 180 seit SQL Server 2008 stabil. – Here ist ein Überblick von Extended Events gegen SQL Trace Events in den verschiedenen SQL Server Versionen: <a href="/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features">Extended Events vs SQL Trace im Vergleich – oder warum SQL Trace &amp; Profiler einfach von gestern sind :-)</a></p>
<p>Weiter zu XEvents: es gibt keine neuen Prädikate, aber eine Anzahl neuer Maps, was natürlich nicht überrascht bei der Menge neuer Events.<br /> Targets, Actions, Typen und Session Optionen  sind unverändert.</p>
<p>Und hier ist die Liste der neuen Extended Events:</p>
</td>
<td valign="top" width="334">
<p>The number of Extended Events increased from <strong>625 in </strong><strong>SQL Server 2012</strong> (SP1) to <strong>870 in </strong><strong>SQL Server 2014</strong> (RTM). That makes <strong>245</strong> new events! – Plenty of opportunities to look into internals :-)<br /> 2 events have been renamed:</p>
<p><em>recovery_incremental_checkpoint</em> into</p>
<p><em>recovery_indirect_checkpoint</em></p>
<p>and <em>hekaton_slow_param_passing</em> into</p>
<p><strong><span style="font-size: x-small;"><em>natively_compiled_proc_slow_parameter_passing</em></span></strong></p>
<p>Yes, you read correctly. There have already been a couple of events for the new XTP engine within SQL Server 2012. It’s quite common that you can find bits of future developments within the current release.</p>
<p>By the way: SQL Trace has not been touched by the slightest bit. The number of SQL Trace events stays at 180 since SQL Server 2008. – here you find an overview of the number of Extended Events vs SQL Trace events in the various SQL Server versions: <a href="/blogs/andreaswolter/2013/11/extended-events-vs-sql-trace-comparison-top-features">Comparing Extended Events vs SQL Trace – or why SQL Trace &amp; Profiler are just a thing of the past :-)</a></p>
<p>Continuing with XEvents: There are no new predicates, but a couple more maps, which is of course not surprisingly considering the amount of new events.<br /> Targets, actions, types and session options are unchanged.</p>
<p>And here is the list of all new extended events:</p>
</td>
</tr>
</tbody>
</table>
<p> </p>
<table style="width: 350px;">
<tbody>
<tr>
<td><span style="font-size: small;"><strong>Package<br />name</strong></span></td>
<td><span style="font-size: small;"><strong>Event name</strong></span></td>
<td><span style="font-size: small;"><strong>Description</strong></span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_async_shutdown_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store encounters an error during async query store shutdown</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_cleanup_task_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for cleanup of QDS stale data is not completed successfully</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_creation_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence could not be created</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_initialization_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence could not be initialized</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_background_task_persist_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the background task for QDS data persistence is not completed successfully</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_begin_persist_runtime_stat</span></strong></td>
<td><span style="font-size: x-small;">Fired immediately before current runtime statistics for a query plan is persisted to the database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_bloom_filter_false_positive</span></strong></td>
<td><span style="font-size: x-small;">Fired if the Bloom filter for QDS statement texts gives a false positive result</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_check_consistency_init_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when check consistency task fails during initialization</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_database_initialization_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if initialization of the Query Store for database has failed. The Query Store will be disabled for this database</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_db_cleanup__finished</span></strong></td>
<td><span style="font-size: x-small;">Fired if cleanup of QDS stale data finished for particular database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_db_cleanup__started</span></strong></td>
<td><span style="font-size: x-small;">Fired if cleanup of QDS stale data started for particular database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_disk_size_check_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when a check against Query Store on-disk size limit fails</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_disk_size_info</span></strong></td>
<td><span style="font-size: x-small;">Fired when a check against QDS on-disk size is performed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information is sent to the query store.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info_discarded</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information sent to the query store is discarded.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_execution_runtime_info_evicted</span></strong></td>
<td><span style="font-size: x-small;">Fired when runtime information sent to the query store is evicted.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_flush_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store failed to flush dirty data</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_loaded</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store is loaded</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_notify_dirty_shutdown_on_partition_startup</span></strong></td>
<td><span style="font-size: x-small;">Fired when previous instance of query store for the partition is shutdown by force in order to allow creation of a new instance</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_notify_force_failure_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store failed to notify force failure</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_persist_task_init_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired when persist task fails during initialization</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_forcing_failed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when forcing of plan from qds fail</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_persistence_failure</span></strong></td>
<td><span style="font-size: x-small;">Fired if there's a failure to persist plan</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_plan_removal</span></strong></td>
<td><span style="font-size: x-small;">Fired when plan is removed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_query_persistence_failure</span></strong></td>
<td><span style="font-size: x-small;">Fired if there's a failure to persist query</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_read_write_failed</span></strong></td>
<td><span style="font-size: x-small;">Fired if the read/write to Query Store internal tables failed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_statement_not_found</span></strong></td>
<td><span style="font-size: x-small;">Fired in case when statement couldn't be found due to race condition or ambiguous user request.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>qds</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_unloaded</span></strong></td>
<td><span style="font-size: x-small;">Fired when query store is unloaded from memory</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">nonpreemptive_long_syncio</span></strong></td>
<td><span style="font-size: x-small;">record long sync io operation in nonpreemptive worker</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">stuck_dispatcher_callback_executed</span></strong></td>
<td><span style="font-size: x-small;">Stuck dispatcher callback executed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlos</strong></span></td>
<td><strong><span style="font-size: x-small;">wait_completed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when there is a wait completed on a SQLOS controlled resource.  Use this event to track wait completion.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">after_natively_compiled_proc_entry_removal_on_drop</span></strong></td>
<td><span style="font-size: x-small;">Fired after the procedure cache entry is flushed when dropping a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">availability_replica_state</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the Availability Replica is starting or shutting down.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">before_natively_compiled_proc_entry_removal_on_drop</span></strong></td>
<td><span style="font-size: x-small;">Fired before the procedure cache entry is flushed when dropping a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">before_redo_lsn_update</span></strong></td>
<td><span style="font-size: x-small;">Occurs just prior to the update of the EOL LSN</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_eviction_thresholds_recalculated</span></strong></td>
<td><span style="font-size: x-small;">Lazywriter and/or worker clock has wrapped the BUF array and thresholds are re-calculated.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_evicted</span></strong></td>
<td><span style="font-size: x-small;">Page is evicted from the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_read</span></strong></td>
<td><span style="font-size: x-small;">Page is read from the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">buffer_pool_extension_pages_written</span></strong></td>
<td><span style="font-size: x-small;">Page or contiguous set of pages evicted into the buffer pool extension cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_phase_tracing</span></strong></td>
<td><span style="font-size: x-small;">Occurs when DBCC CHECK enters a new phase of the checking. Use this event to trace the phases of DBCC CHECK process.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_message_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of messages a DBCC CHECK thread has sent or received.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_page_io_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use this event to collect the number of logical, physical, and read-ahead IOs a DBCC CHECK thread has performed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">check_thread_page_latch_statistics</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a phase of DBCC CHECK is finished. Use This event to collect the number and time of page latch and IO latch waits.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">clustered_columnstore_index_rebuild</span></strong></td>
<td><span style="font-size: x-small;">Occurs when clustered index on the table was rebuilt. This event is raised three times for ALTER index rebuild operation on CCSI. The event is raised when the operation takes lock on index rebuild resource, when lock is taken on the table and when S lock on the table is upgraded to SCH_M lock to switch indexes in metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_code_coverage</span></strong></td>
<td><span style="font-size: x-small;">Code coverage Xevent for columnstore code.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_low_memory</span></strong></td>
<td><span style="font-size: x-small;">Occurs when Storage Engine detects low memory condition and the rowgroup size is reduced.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_process_segment</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a segment is processed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">column_store_index_build_throttle</span></strong></td>
<td><span style="font-size: x-small;">Shows the statistics of columnstore index build parallelism throttling</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">columnstore_tuple_mover_begin_compress</span></strong></td>
<td><span style="font-size: x-small;">Occurs when column store tuple mover starts compressing a deltastore.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">columnstore_tuple_mover_end_compress</span></strong></td>
<td><span style="font-size: x-small;">Occurs when column store tuple mover is done compressing a deltastore.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">database_xml_deadlock_report</span></strong></td>
<td><span style="font-size: x-small;">Produces a deadlock report for a victim, with information scoped to the victim's database.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">db_lock_acquired_from_cache</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a DB lock is acquired from the XactWorkspace DB lock cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">db_lock_released_from_cache</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a DB lock is released from the XactWorkspace DB lock cache.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ddl_with_wait_at_low_priority</span></strong></td>
<td><span style="font-size: x-small;">A DDL statement was executed using the WAIT_AT_LOW_PRIORITY options</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">diag_quantum_end</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the diag is notified of quantum end.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">dyn_throttle_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Occurs when checkpointing has been dynamically throttled with a new Checkpoint rate.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">feature_extension</span></strong></td>
<td><span style="font-size: x-small;">Occurs when received and parses data for a feature in feature extension.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_handle_in_use</span></strong></td>
<td><span style="font-size: x-small;">Fired when a file handle we're trying to delete is in use and we don't expect it to be. The typical response is dumping all the handles in the system via SysInternals HANDLE.EXE</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_read_enqueued</span></strong></td>
<td><span style="font-size: x-small;">File read enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_read_throttled</span></strong></td>
<td><span style="font-size: x-small;">File read throttled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_write_enqueued</span></strong></td>
<td><span style="font-size: x-small;">File write enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">file_write_throttled</span></strong></td>
<td><span style="font-size: x-small;">File write throttled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_packet_enqueue</span></strong></td>
<td><span style="font-size: x-small;">A task packet is enqueued</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_process_packet</span></strong></td>
<td><span style="font-size: x-small;">A task packet is dequeued and processed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_process_pages_for_db_packet</span></strong></td>
<td><span style="font-size: x-small;">Purge the pages that contain ghost records found in a database</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_start</span></strong></td>
<td><span style="font-size: x-small;">Ghost cleanup task start</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">ghost_cleanup_task_suspend</span></strong></td>
<td><span style="font-size: x-small;">Ghost cleanup task suspend</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">hadr_tds_synchronizer_payload_skip</span></strong></td>
<td><span style="font-size: x-small;">Hadron Tds Listener Synchronizer skipped a listener payload because there were no changes since the previous payload.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">lock_request_priority_state</span></strong></td>
<td><span style="font-size: x-small;">The priority state of a lock request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">log_cache_write_block</span></strong></td>
<td><span style="font-size: x-small;">Writing a log block to the log cache</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_add_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE ADD column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_alter_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE ALTER column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">metadata_ddl_drop_column</span></strong></td>
<td><span style="font-size: x-small;">Occurs when an ALTER TABLE DROP column operation is updating base index.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_activation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent activation and deactivation operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_allocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_extent_deallocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed extent deallocation operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_allocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed page allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_deallocation</span></strong></td>
<td><span style="font-size: x-small;">Track mixed page allocation operations</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_scan_file</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_scan_page</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">mixed_page_skipextent</span></strong></td>
<td><span style="font-size: x-small;">Track the activity of SGAM scans for mixed page allocation</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">natively_compiled_proc_execution_started</span></strong></td>
<td><span style="font-size: x-small;">Fired before a natively compiled procedure is executed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">natively_compiled_proc_slow_parameter_passing</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a Hekaton procedure call dispatch goes to slow parameter passing code path</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">process_killed_by_abort_blockers</span></strong></td>
<td><span style="font-size: x-small;">A process is killed by an ABORT = BLOCKERS DDL statement</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_aggregation_finished</span></strong></td>
<td><span style="font-size: x-small;">Occurs at the end of batch hash aggregation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_children_reversed</span></strong></td>
<td><span style="font-size: x-small;">Occurs each time when hash join reverses build and probe side while processing data spilled to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_execution_batch_hash_join_spilled</span></strong></td>
<td><span style="font-size: x-small;">Occurs each time when hash join spills some data to disk in batch processing.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_optimizer_estimate_cardinality</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the query optimizer estimates cardinality on a relational expression.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_optimizer_force_both_cardinality_estimation_behaviors</span></strong></td>
<td><span style="font-size: x-small;">Both traceflags 2312 and 9481 were enabled, attempting to force both old and new cardinality estimation behaviors at the same time. The traceflags were ignored. Disable one or both of the traceflags.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_failed_to_capture_query</span></strong></td>
<td><span style="font-size: x-small;">Fired if the Query Store failed to capture query. The Query Store will not track statistics for this query</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_failed_to_load_forced_plan</span></strong></td>
<td><span style="font-size: x-small;">Fired if the query failed to load forced plan from QDS. Forcing policy will not be applied</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">query_store_persist_on_shutdown_failed</span></strong></td>
<td><span style="font-size: x-small;">Occurs when SQL Server fails to store dirty entries in Query Store on database shutdown.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">recovery_indirect_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Chose to enqueue an indirect checkpoint as we are near our recovery target</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">remove_database_cache</span></strong></td>
<td><span style="font-size: x-small;">Remove database cache</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">server_max_workers</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a request enqueue fails because a worker was not guaranteed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">session_recoverable_state_change</span></strong></td>
<td><span style="font-size: x-small;">Occurs when the server determines a state change in term of session recovery on a connectionresilency-enabled connection.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">sql_transaction_commit_single_phase</span></strong></td>
<td><span style="font-size: x-small;">Occurs when a sql transaction is committed with single phase commit.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_blob_properties_obtained</span></strong></td>
<td><span style="font-size: x-small;">Windows Azure Storage blob property is obtained from response header.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_failed_request</span></strong></td>
<td><span style="font-size: x-small;">Failed to complete a request to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_header_obtained</span></strong></td>
<td><span style="font-size: x-small;">Response header is obtained from request to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_read_complete</span></strong></td>
<td><span style="font-size: x-small;">Read complete from Windows Azure Storage response.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_request_opened</span></strong></td>
<td><span style="font-size: x-small;">A request is opened to Windows Azure Storage.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_send_complete</span></strong></td>
<td><span style="font-size: x-small;">Request send to Windows Azure Storage is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xfcb_write_complete</span></strong></td>
<td><span style="font-size: x-small;">Request send to Windows Azure Storage is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_procedure</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of XTP procedure creation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of XTP table creation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_db_page_allocation_allowed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that page allocations for the database are allowed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_db_page_allocation_disallowed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that page allocations for the database are disallowed due to memory pressure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_deploy_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of XTP object deployment.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_matgen</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of MAT generation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_offline_checkpoint_scan_start</span></strong></td>
<td><span style="font-size: x-small;">Fired by XTP offline checkpoint when the checkpoint thread begins.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_offline_checkpoint_scan_stop</span></strong></td>
<td><span style="font-size: x-small;">Fired by XTP offline checkpoint when the checkpoint thread stops.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_recover_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of log recovery of XTP table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_recover_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of log recovery of XTP table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>sqlserver</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_storage_table_create</span></strong></td>
<td><span style="font-size: x-small;">Occurs at just before the XTP storage table is created.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_connection_rejected_by_proxy_whitelist</span></strong></td>
<td><span style="font-size: x-small;">After a connection attempt to the UCS proxy endpoint is rejected by whitelist check</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_connect_next_hop</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy next hop connection</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_receive_proxy_connect_message</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy receive proxy connect message</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_add</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route added</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_disable</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route disabled</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_route_refresh</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy route refreshed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>ucs</strong></span></td>
<td><strong><span style="font-size: x-small;">ucs_proxy_send_proxy_connect_message</span></strong></td>
<td><span style="font-size: x-small;">UCS proxy send proxy connect message</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">cgen</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of C code generation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">invoke_cl</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to the invocation of the C compiler.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">mat_export</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of MAT export.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">pitgen_procs</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of PIT generation for procedures.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpCompile</strong></span></td>
<td><strong><span style="font-size: x-small;">pitgen_tables</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of PIT generation for tables.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">after_changestatetx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires after transaction changes state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">alloctx_event</span></strong></td>
<td><span style="font-size: x-small;"> </span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">attempt_committx_event</span></strong></td>
<td><span style="font-size: x-small;">Is raised when a transaction is asked to commit.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">before_changestatetx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires before transaction changes state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">dependency_acquiredtx_event</span></strong></td>
<td><span style="font-size: x-small;">Raised after transaction takes a dependency on another transaction.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">endts_acquiredtx_event</span></strong></td>
<td><span style="font-size: x-small;">Fires after transaction acquires an end timestamp.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_base_generation_evaluation</span></strong></td>
<td><span style="font-size: x-small;">Indicates that an evaluation of updating the GC base generation has been made.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_base_generation_updated</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the oldest active transaction hint used for calculating the GC base generation has been updated.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_cycle_completed</span></strong></td>
<td><span style="font-size: x-small;">Indicates that a GC notification has been enqueued.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">gc_notification</span></strong></td>
<td><span style="font-size: x-small;">Indicates that GC is processing a notification.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">redo_single_hk_record</span></strong></td>
<td><span style="font-size: x-small;">Redo on a HK log record</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_add_delta_filter_begin</span></strong></td>
<td><span style="font-size: x-small;">Adding delta filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_add_duplicate_delta_filter</span></strong></td>
<td><span style="font-size: x-small;">Adding duplicate delta filte.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_adding_tx_filter</span></strong></td>
<td><span style="font-size: x-small;">Adding tx filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_begin_close_ckpt_processing</span></strong></td>
<td><span style="font-size: x-small;">Beginning close checkpoint processing: checkpoint flush fence = $2 ($3 state).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfd_entry_deleted</span></strong></td>
<td><span style="font-size: x-small;">Cleaned up data CFD entry for file $2 $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfd_rows_created</span></strong></td>
<td><span style="font-size: x-small;">Successfully created CFD rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfdtable_dump</span></strong></td>
<td><span style="font-size: x-small;">CfdTable dump</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfp_handles_opened</span></strong></td>
<td><span style="font-size: x-small;">Opened CFP handles for {data: $2 delta: $3} in section $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_cfp_removed_from_freelist</span></strong></td>
<td><span style="font-size: x-small;">Removed CFP from freelist for destination file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_file_flush</span></strong></td>
<td><span style="font-size: x-small;">Indicating that a file has started a flush operation.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_load_begin</span></strong></td>
<td><span style="font-size: x-small;">Starting Checkpoint load with checkpoint timestamp=$2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checkpoint_write_io</span></strong></td>
<td><span style="font-size: x-small;">Logs an event indicating that an IO has started (when event_type == IoStarted) or that an IO has completed (when event_type == IoComplete).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_checksum_validation_succeeded</span></strong></td>
<td><span style="font-size: x-small;">Checksum validation for Hekaton checkpoint file during backup succeeded.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_close_begin</span></strong></td>
<td><span style="font-size: x-small;">Closing checkpoint in active/passive state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_close_signaled</span></strong></td>
<td><span style="font-size: x-small;">Signaling checkpoint close. The checkpoint policy object is flagged to close the current checkpoint</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_closed</span></strong></td>
<td><span style="font-size: x-small;">Checkpoint closed</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_load_thread_stats</span></strong></td>
<td><span style="font-size: x-small;">Statistics of the checkpoint load thread.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_mrt_dump</span></strong></td>
<td><span style="font-size: x-small;">Mrt dump</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_serialization_state_dump</span></strong></td>
<td><span style="font-size: x-small;">Checkpoint serialization state dump.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_ckpt_stream_io_stats</span></strong></td>
<td><span style="font-size: x-small;">Io statistics for this particular stream.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_close_file_log_rec_created</span></strong></td>
<td><span style="font-size: x-small;">Successfully created close file log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_file_pages_txs</span></strong></td>
<td><span style="font-size: x-small;">This event gives the number of pages and the transaction range for a data file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_from_page_deserialized</span></strong></td>
<td><span style="font-size: x-small;">Deserialized data from page $2 in file $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_data_row_modified</span></strong></td>
<td><span style="font-size: x-small;">Data row modified/deleted.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_cfd_rows_begin</span></strong></td>
<td><span style="font-size: x-small;">Matching MRT not found for the Data CFD. Deleting corresponding CFD Rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_DeletedObjectTable_row_begin</span></strong></td>
<td><span style="font-size: x-small;">Deleting row from DeletedObjectTable in the context of transaction: $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_merged_source_file</span></strong></td>
<td><span style="font-size: x-small;">Deleting merged source $7 file $5:$6. DeleteLSN = $2:$3:$4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delete_mrtrow_for_target_begin</span></strong></td>
<td><span style="font-size: x-small;">Deleting mrt row for target.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_entry_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping delta {$3, $4, $5} because it is beyond the snapshot checkpoint: $6.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_future_count_rows_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating future count pages and count rows for delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_lastgood_count_rows_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating lastgood count pages and count rows for delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_pages_txs</span></strong></td>
<td><span style="font-size: x-small;">This event gives the number of pages and the transaction range while reading a delta file for a particular operations.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_processed</span></strong></td>
<td><span style="font-size: x-small;">Completed processing of Delta file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_file_set_clean_or_dirty</span></strong></td>
<td><span style="font-size: x-small;">Delta file set clean or dirty.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_filter_removed</span></strong></td>
<td><span style="font-size: x-small;">Removing delta filter from DeltaFilterMap due to transaction filter.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_watermark_removed</span></strong></td>
<td><span style="font-size: x-small;">Removed delta watermark.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_delta_watermark_updated</span></strong></td>
<td><span style="font-size: x-small;">Updated delta watermark row for FileId: $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_chained_records</span></strong></td>
<td><span style="font-size: x-small;">Info pertaining to the deserialized content of the mrtRecords chain.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_data_from_page_begin</span></strong></td>
<td><span style="font-size: x-small;">Deserializing data from page $2 in file $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_deserialize_source_delta_file_begin</span></strong></td>
<td><span style="font-size: x-small;">Deserializing source delta file $4: page range [$2, $3).</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_dump_cfd_row</span></strong></td>
<td><span style="font-size: x-small;">Dump cfd row</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_dump_mrt_row</span></strong></td>
<td><span style="font-size: x-small;">Merge Request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_close_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping file close for $2 as the cfp had been merged, It could not be found in the Storage array.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_skipped</span></strong></td>
<td><span style="font-size: x-small;">Skipping file $4 due to reason $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_file_skipped_with_tx_range</span></strong></td>
<td><span style="font-size: x-small;">Skipping file $5 with TX range { $3 -&gt; $4 } due to MaxTxId == InvalidTxId.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_first_page_header_flushed</span></strong></td>
<td><span style="font-size: x-small;">Flushed first page header for file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_flush_io_operation_for_delta_file</span></strong></td>
<td><span style="font-size: x-small;">This trace is trying to catch pages issued for flush that didn't make it to the file, or were lacking the correct DeltaWatermark Timestamp.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_flush_skipped_for_closed_data_file</span></strong></td>
<td><span style="font-size: x-small;">Skipping flush for data file ('$2') as it is closed.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_future_count_pages_update</span></strong></td>
<td><span style="font-size: x-small;">Updating future count pages.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_initial_merge</span></strong></td>
<td><span style="font-size: x-small;">Doing initial merge for destination $3 at CheckpointTs: $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_insert_DeletedObjectTable_row_begin</span></strong></td>
<td><span style="font-size: x-small;">Inserting row to DeletedObjectTable in the context of transaction: $5.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_intialize_worker_file_begin</span></strong></td>
<td><span style="font-size: x-small;">Processing file close.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mark_data_file_closed</span></strong></td>
<td><span style="font-size: x-small;">Marking the active data file as closed to prevent the offline worker fom flushing them.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_cancelled</span></strong></td>
<td><span style="font-size: x-small;">Merge was cancelled for destination $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_complete_log_rec_ignored</span></strong></td>
<td><span style="font-size: x-small;">MergeCompleteLogRecord ignored for destination file $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_merge_complete_log_rec_processed</span></strong></td>
<td><span style="font-size: x-small;">Successfully processed MergeCompleteLogRecord.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrt_dump</span></strong></td>
<td><span style="font-size: x-small;">Mrt dump.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrt_row_inplace_update</span></strong></td>
<td><span style="font-size: x-small;">Mrt row updated in place.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_mrtrow_not_found</span></strong></td>
<td><span style="font-size: x-small;">Could not find row with Destination ID: $2 in MRT table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_new_delta_watermark_inserted</span></strong></td>
<td><span style="font-size: x-small;">Inserted new delta watermark row for FileId $3.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_offline_process_stale_merge_item</span></strong></td>
<td><span style="font-size: x-small;">Offline processing of stale merge item {$2, $3} Destination $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_pending_tx</span></strong></td>
<td><span style="font-size: x-small;">Pending Transaction</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_populate_storage_array</span></strong></td>
<td><span style="font-size: x-small;">Populating the storage array.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_post_writefile</span></strong></td>
<td><span style="font-size: x-small;">This event is fired after issuing IO on the proxy.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_file_close_begin</span></strong></td>
<td><span style="font-size: x-small;">Processing file close.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_merge_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Process merge complete log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_merge_request</span></strong></td>
<td><span style="font-size: x-small;">Process Merge Request</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_source_file</span></strong></td>
<td><span style="font-size: x-small;">Processing source $4 file $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_process_target_file</span></strong></td>
<td><span style="font-size: x-small;">Processing target $4 file $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_queue_merge_work_item</span></strong></td>
<td><span style="font-size: x-small;">Queue work item: {$2, $3} $5 - $6 with CheckpointTs as $4.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_recovered_existing_file</span></strong></td>
<td><span style="font-size: x-small;">Recovered exising files files allocated during forward processing that are not already part of the CCB.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_resyncing_state_of_file</span></strong></td>
<td><span style="font-size: x-small;">Resyncing state of file $4 ('$5') post recovery:  $2 pages, $3 rows.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialization_object_cleaned</span></strong></td>
<td><span style="font-size: x-small;">Cleaned serialization object.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_abort_transaction_begin</span></strong></td>
<td><span style="font-size: x-small;">Serializing the abort transaction filter to the delta cache corresponding to its own transaction range.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_tx_begin</span></strong></td>
<td><span style="font-size: x-small;">Serialize TS begin for completing the checkpoint in active state.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialize_tx_end</span></strong></td>
<td><span style="font-size: x-small;">Serialize TS end for completing the checkpoint.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_serialized_delta_rows_to_file</span></strong></td>
<td><span style="font-size: x-small;">Serialized delta rows to file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_source_file_load_stats</span></strong></td>
<td><span style="font-size: x-small;">Load stats for source files in merge.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_storage_refreshed_for_file</span></strong></td>
<td><span style="font-size: x-small;">Storage refreshed for file.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_uninitialize_file</span></strong></td>
<td><span style="font-size: x-small;">uninitializing_file</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">trace_wrote_delta_watermark</span></strong></td>
<td><span style="font-size: x-small;">Wrote delta watermark for file: $3, checkpointTs: $2.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">waiting_for_dependenciestx_event</span></strong></td>
<td><span style="font-size: x-small;">Raised when we have explicitly waited for dependencies to clear.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_before_create_log_record</span></strong></td>
<td><span style="font-size: x-small;">Fired before submitting a request to the host to serialize a non-transactional log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_flush</span></strong></td>
<td><span style="font-size: x-small;">Indicates the point at which a given file has been flushed to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_flush_complete</span></strong></td>
<td><span style="font-size: x-small;">Indicates the point at which all in-flight buffers have been flushed to disk.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_file_read</span></strong></td>
<td><span style="font-size: x-small;">Indicates reading of a file in XTP checkpoint recovery.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_active_log</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records in the active portion of the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_started</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_worker_stopped</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpoint worker has started processing the log records.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_checkpoint_write_io</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the checkpointing subsystem has issued or completed a write IO.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_complete_checkpoint</span></strong></td>
<td><span style="font-size: x-small;">Indicates the begin and end of complete checkpoint processing.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_create_log_record</span></strong></td>
<td><span style="font-size: x-small;">Fires when the XTP engine creates a log record.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_delta_marked_dirty</span></strong></td>
<td><span style="font-size: x-small;">Indicates that a delete/update was serialized and marked a delta file dirty</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge complete log record is posted to the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_log_complete_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge log record was interpreted by the offline worker.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_process_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge log record was interpreted by the offline worker.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_request_log_record</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge request log record is posted to the log.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_merge_request_started</span></strong></td>
<td><span style="font-size: x-small;">Indicates merge request has been picked up by the merge worker thread.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_root_deserialized</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the load of a checkpoint root is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpEngine</strong></span></td>
<td><strong><span style="font-size: x-small;">xtp_root_serialized</span></strong></td>
<td><span style="font-size: x-small;">Indicates that the write of the checkpoint root is complete.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">bind_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to binding metadata for a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">bind_tables</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to binding tables for a natively compiled procedure.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">create_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to creating memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">deserialize_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to deserializing metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">load_dll</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to loading the generated DLL.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">recover_done</span></strong></td>
<td><span style="font-size: x-small;">Occurs at completion of checkpoint recovery of a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">recover_table</span></strong></td>
<td><span style="font-size: x-small;">Occurs at start of checkpoint recovery of a memory optimized table.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">serialize_md</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to serializing metadata.</span></td>
</tr>
<tr>
<td><span style="font-size: x-small;"><strong>XtpRuntime</strong></span></td>
<td><strong><span style="font-size: x-small;">unload_dll</span></strong></td>
<td><span style="font-size: x-small;">Occurs prior to unloading the generated DLL.</span></td>
</tr>
</tbody>
</table>
<p>Happy tracing,</p>
<p> </p>
<p>Andreas</p>]]></content:encoded>
								<comments>https://www.insidesql.org/blogs/andreaswolter/2014/04/new-extended-events-for-tracing-in-sql-server-2014#comments</comments>
			<wfw:commentRss>https://www.insidesql.org/blogs/andreaswolter/?tempskin=_rss2&#38;disp=comments&#38;p=3667</wfw:commentRss>
		</item>
			</channel>
</rss>
