<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">
  <channel>
    <title>In Recovery...</title>
    <description>Paul S. Randal on SQL Server</description>
    <link>http://www.sqlskills.com/BLOGS/PAUL/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.4.5.0</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://www.sqlskills.com/BLOGS/PAUL/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.sqlskills.com/</blogChannel:blink>
    <dc:creator>Paul S. Randal</dc:creator>
    <dc:title>In Recovery...</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PaulSRandal" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>SQL PASS interview with Jen and Sean McCown</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;(Reposting from Kimberly&amp;#39;s blog)&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;At PASS we hung out with &lt;/font&gt;&lt;a href="http://www.infoworld.com/blogs/sean-mccown" target="_blank"&gt;&lt;font face="verdana,geneva" size="2"&gt;Sean McCown&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; and Jen McCown (of &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/" target="_blank"&gt;&lt;font face="verdana,geneva" size="2"&gt;MidnightDBA&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;)&amp;nbsp;and chatted... and, despite our better judgement, agreed to do an interview. These aren&amp;#39;t overly technical but they are fun!&lt;/font&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Part 1 of 2: &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps1of2/DBAsAtMidnightTripps1of2.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps1of2/DBAsAtMidnightTripps1of2.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Part 2 of 2: &lt;/font&gt;&lt;a href="http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps2of2/DBAsAtMidnightTripps2of2.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;http://midnightdba.itbookworm.com/VidPages/DBAsAtMidnightTripps2of2/DBAsAtMidnightTripps2of2.aspx&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And, our favorite &amp;quot;travel tip&amp;quot; from the video is to know your plane and check your seat on &lt;/font&gt;&lt;a href="http://www.seatguru.com/"&gt;&lt;font face="verdana,geneva" size="2"&gt;http://www.seatguru.com/&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;- we use it religiously when planning our travel.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-PASS-interview-with-Jen-and-Sean-McCown.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-PASS-interview-with-Jen-and-Sean-McCown.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=321c6137-2186-4e31-a189-29543466dcf5</guid>
      <pubDate>Mon, 16 Nov 2009 17:08:00 -0800</pubDate>
      <category>Conferences</category>
      <category>Interviews</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=321c6137-2186-4e31-a189-29543466dcf5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=321c6137-2186-4e31-a189-29543466dcf5</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-PASS-interview-with-Jen-and-Sean-McCown.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=321c6137-2186-4e31-a189-29543466dcf5</wfw:commentRss>
    </item>
    <item>
      <title>SQL Connections Fall resources uploaded</title>
      <description>&lt;font face="verdana,geneva" size="2"&gt;
&lt;p&gt;
We&amp;#39;re sitting here in the Las Vegas airport on the way home to Seattle for 3 whole weeks and I&amp;#39;ve just finished uploading the resources for the SQL Connections conference that ended yesterday. 
&lt;/p&gt;
&lt;p&gt;
On our &lt;a href="http://www.sqlskills.com/pastConferences.asp"&gt;Past Events page&lt;/a&gt; I&amp;#39;ve uploaded zip files for: 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Our joint pre-con on database maintenance&lt;/li&gt;
	&lt;li&gt;Kimberly&amp;#39;s post-con on indexing&lt;/li&gt;
	&lt;li&gt;My session on logging and recovery&lt;/li&gt;
	&lt;li&gt;My session on backup strategy&lt;/li&gt;
	&lt;li&gt;Kimberly&amp;#39;s session on covering indexes&lt;/li&gt;
	&lt;li&gt;Kimberly&amp;#39;s session on sparse columns and filtered indexes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
We had a great week down here in Vegas - lots of very enthusiastic attendees and many (what we call) &amp;#39;repeat offenders&amp;#39; :-) Saw a couple of great shows too - &lt;a href="http://www.cirquedusoleil.com/en/shows/mystere/default.aspx"&gt;Cirque du Soleil&amp;#39;s Mystere&lt;/a&gt; on Monday and &lt;a href="http://www.bettemidlerlasvegas.com/"&gt;Bette Midler&lt;/a&gt; last night. I&amp;#39;m not especially a fan of hers, but she was *excellent*. 
&lt;/p&gt;
&lt;p&gt;
Looking forward to the next Connections - cheers! 
&lt;/p&gt;
&lt;/font&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Connections-Fall-resources-uploaded.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Connections-Fall-resources-uploaded.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=aaf14d8d-569f-44a6-bd2b-39577c6e9e64</guid>
      <pubDate>Sat, 14 Nov 2009 13:42:00 -0800</pubDate>
      <category>Conferences</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=aaf14d8d-569f-44a6-bd2b-39577c6e9e64</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=aaf14d8d-569f-44a6-bd2b-39577c6e9e64</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Connections-Fall-resources-uploaded.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=aaf14d8d-569f-44a6-bd2b-39577c6e9e64</wfw:commentRss>
    </item>
    <item>
      <title>Lock logging and fast recovery</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;One of the things I love teaching is how the transaction log and logging/recovery work. I presented a session on this at both PASS and SQL Connections in the last two weeks, and in both sessions I promised to write some blog posts about the deep internals of logging operations. This is the first one in the series. Previous blog posts that dive into logging operations are: &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/How-do-checkpoints-work.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;How do checkpoints work and what gets logged&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; (this also explains how crash recovery starts, using the boot page and the most recent checkpoint log record) &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Finding-out-who-dropped-a-table-using-the-transaction-log.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Finding out who dropped a table using the transaction log&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/How-expensive-are-page-splits-in-terms-of-transaction-log.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;How expensive are page splits in terms of transaction log?&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Inside-the-Storage-Engine-More-on-the-circular-nature-of-the-log.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Inside the Storage Engine: More on the circular nature of the log&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Ghost-cleanup-redux.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Ghost cleanup redux&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Inside-the-Storage-Engine-Ghost-cleanup-in-depth.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Inside the Storage Engine: Ghost cleanup in depth&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Ok, on with the show.&amp;nbsp; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;SQL Server 2005 introduced a feature called &amp;#39;fast recovery&amp;#39; in Enterprise Edition. This allows a database to become available for use after the first part of recovery (REDO) completes and before the (usually longer running) second part of recovery (UNDO) completes. See my TechNet Magazine article &lt;/font&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/2009.02.logging.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Understanding Logging and Recovery in SQL Server&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; if you don&amp;#39;t know what I&amp;#39;m talking about. But how does SQL Server do this? &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;The answer is lock logging. A log record describes a single change made to a database. For log records describing changes that can be used as part of UNDO (yes, some changes to the database are one-way only - for instance PFS page changes), from 2005 onwards the log record also includes a description of which locks were being held at the time the change was made. These locks were necessary to protect the change being made when the original transaction was running (before the crash) and so the same locks will be necessary to protect the anti-operation which reverses the change. I&amp;#39;ll explain more about these anti-operations in one of the next in-depth logging blog posts. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;The Storage Engine does two passes through the log as part of crash recovery. The first pass does REDO and also reads the log records that will be processed as part of the second pass (UNDO), looking at the lock description and actually acquiring those locks. For fast recovery, at that point the database is brought online. This is possible because the recovery system knows that it already has the correct locks to guarantee that it can safely generate and perform the anti-operations necessary to perfom UNDO. One side-effect of this is that although the database is available for use, a query may bump into one of the locks being held to allow fast recovery - in which case it will have to wait for that lock to be dropped as UNDO progresses. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Cool eh? &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;That was the introduction to allow me to do some gratuitous spelunking around the internals :-) I&amp;#39;m going to create a few simple examples to show you lock logging in the log. Now, don&amp;#39;t get confused - it&amp;#39;s not logging actual locks (the memory used to hold the lock itself), it&amp;#39;s just logging a description of which locks were held and in which modes. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Here&amp;#39;s the script to create a database with a simple table. I&amp;#39;m using a LOB column and specifically setting it to be stored off row (see &lt;/font&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Importance-of-choosing-the-right-LOB-storage-technique.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Importance of choosing the right LOB storage technique&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;) so we can see some text page locks too. I&amp;#39;m using the &lt;font face="courier new,courier"&gt;SIMPLE&lt;/font&gt; recovery model for simplicity (ha ha) - so I can clear the log when a checkpoint occurs rather than having to muck around with log backups. I&amp;#39;ll insert the first row and then clear the log. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CREATE DATABASE LockLogging;&lt;br /&gt;
	GO&lt;br /&gt;
	USE LockLogging;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CREATE TABLE LockLogTest (c1 INT, c2 INT, c3 VARCHAR (MAX));&lt;br /&gt;
	GO&lt;br /&gt;
	&lt;/font&gt;&lt;font face="courier new,courier" size="2"&gt;EXEC sp_tableoption &amp;#39;LockLogtest&amp;#39;, &amp;#39;large value types out of row&amp;#39;, &amp;#39;on&amp;#39;;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;INSERT INTO LockLogTest VALUES (1, 1, &amp;#39;a&amp;#39;);&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;ALTER DATABASE LockLogging SET RECOVERY SIMPLE;&lt;br /&gt;
	GO&lt;br /&gt;
	&lt;/font&gt;&lt;font face="courier new,courier" size="2"&gt;CHECKPOINT;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now let&amp;#39;s try the first operation - a simple insert - and look at the log records using &lt;font face="courier new,courier"&gt;fn_dblog&lt;/font&gt; (and I&amp;#39;m skipping the checkpoint log records):&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;INSERT INTO LockLogTest VALUES (2, 2, &amp;#39;b&amp;#39;);&lt;br /&gt;
	GO&lt;br /&gt;
	SELECT [Operation], [Context],&amp;nbsp;[Page ID], [Slot ID], [Number of Locks] AS Locks, [Lock Information]&lt;br /&gt;
	FROM fn_dblog (NULL, NULL);&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;Operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slot ID&amp;nbsp; Locks Lock Information&lt;br /&gt;
	---------------- ------------- -------------- -------- ----- -------------------------------------------------------------------&lt;br /&gt;
	LOP_BEGIN_XACT&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_INSERT_ROWS&amp;nbsp; LCX_TEXT_MIX&amp;nbsp; 0001:00000098&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX PAGE: 18:1:152; ACQUIRE_LOCK_X RID: 18:1:152:1&lt;br /&gt;
	LOP_INSERT_ROWS&amp;nbsp; LCX_HEAP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:0000009a&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:2073058421:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX PAGE: 18:1:154; ACQUIRE_LOCK_X RID: 18:1:154:1&lt;br /&gt;
	LOP_COMMIT_XACT&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;We can see page IX and row X locks for the LOB value being inserted into the text page, plus table IX, page IX, and row X locks for the data record being inserted into the heap. The lock resources break out as follows: &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;18:1:152&lt;/font&gt; is page 152 in file 1 of database ID 18&lt;/font&gt;&lt;/li&gt;
	&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;18:1:152:1&lt;/font&gt; is slot 1 on page 152 in file 1 of database ID 18&lt;/font&gt;&lt;/li&gt;
	&lt;li&gt;&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;18:2073058421:0&lt;/font&gt; is object ID 2073058421 (the object ID of the table LockLogTest) in database ID 18&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Notice also the &lt;font face="courier new,courier"&gt;LOP_BEGIN_XACT&lt;/font&gt; and &lt;font face="courier new,courier"&gt;LOP_COMMIT_XACT&lt;/font&gt; log records -&amp;nbsp;even though I didn&amp;#39;t do an explicit transaction, SQL Server has to start one internally for me (called an &lt;em&gt;implicit&lt;/em&gt; transaction) so that there&amp;#39;s a boundary for where to rollback if something goes wrong during the operation.&amp;nbsp;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And now an update operation (with a checkpoint first to clear out the log):&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CHECKPOINT;&lt;br /&gt;
	GO&lt;br /&gt;
	UPDATE LockLogTest SET c1 = 3;&lt;br /&gt;
	GO&lt;br /&gt;
	SELECT [Operation], [Context],&amp;nbsp;[Page ID], [Slot ID], [Number of Locks] AS Locks, [Lock Information]&lt;br /&gt;
	FROM fn_dblog (NULL, NULL);&lt;br /&gt;
	GO&lt;/font&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;Operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slot ID&amp;nbsp; Locks Lock Information&lt;br /&gt;
	---------------- ------------- -------------- -------- ----- -------------------------------------------------------------------&lt;br /&gt;
	LOP_BEGIN_XACT&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_HEAP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:0000009a&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:2073058421:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/font&gt;&lt;font face="courier new,courier" size="2"&gt;ACQUIRE_LOCK_IX PAGE: 18:1:154; ACQUIRE_LOCK_X RID: 18:1:154:0&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_HEAP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:0000009a&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:2073058421:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ACQUIRE_LOCK_IX PAGE: 18:1:154; ACQUIRE_LOCK_X RID: 18:1:154:1&lt;br /&gt;
	LOP_COMMIT_XACT&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Just as we expected - a&amp;nbsp;table IX lock, a page IX lock, and two row X locks on that page.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now, what about something more complicated like a TRUNCATE TABLE? Have you heard the myth about it not being logged? Right - it&amp;#39;s a myth:&lt;/font&gt; 
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CHECKPOINT;&lt;br /&gt;
	GO&lt;br /&gt;
	TRUNCATE TABLE LockLogTest;&lt;br /&gt;
	GO&lt;br /&gt;
	SELECT [Operation], [Context],&amp;nbsp;[Page ID], [Slot ID], [Number of Locks] AS Locks, [Lock Information]&lt;br /&gt;
	FROM fn_dblog (NULL, NULL);&lt;br /&gt;
	GO&lt;/font&gt; 
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;Operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Page ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Slot ID&amp;nbsp; Locks Lock Information&lt;br /&gt;
	---------------- ------------- -------------- -------- ----- -------------------------------------------------------------------&lt;br /&gt;
	LOP_BEGIN_XACT&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_LOCK_XACT&amp;nbsp;&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_SCH_M OBJECT: 18:2073058421:0 &lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_IAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:0000009b&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X RID: 18:1:155:0&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_PFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000001&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X PAGE: 18:1:154&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_PFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000001&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X PAGE: 18:1:155&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_IAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000099&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X RID: 18:1:153:0&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_PFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000001&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X PAGE: 18:1:152&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_PFS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000001&amp;nbsp; 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X PAGE: 18:1:153&lt;br /&gt;
	LOP_SET_BITS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LCX_SGAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000003&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_SET_BITS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LCX_GAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0001:00000002&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000014&amp;nbsp; 89&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000011&amp;nbsp; 78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000014&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000041&amp;nbsp; 164&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000041&amp;nbsp; 165&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_COUNT_DELTA&amp;nbsp; LCX_CLUSTERED 0001:00000041&amp;nbsp; 166&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_HOBT_DDL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_CLUSTERED 0001:00000014&amp;nbsp; 89&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:7:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&lt;font face="courier new,courier" size="2"&gt;ACQUIRE_LOCK_X KEY: 18:458752 (0000c2681664)&lt;br /&gt;
	LOP_HOBT_DDL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_CLUSTERED 0001:00000014&amp;nbsp; 90&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:7:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ACQUIRE_LOCK_X KEY: 18:458752 (00007a581379)&lt;br /&gt;
	LOP_MODIFY_ROW&amp;nbsp;&amp;nbsp; LCX_CLUSTERED 0001:00000011&amp;nbsp; 78&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_IX OBJECT: 18:5:0;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ACQUIRE_LOCK_X KEY: 18:327680 (00001df3833b)&lt;br /&gt;
	LOP_COMMIT_XACT&amp;nbsp; LCX_NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NULL&amp;nbsp; NULL&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Lots of logging and lots of locks. If you look at the &lt;font face="courier new,courier"&gt;Context&lt;/font&gt; column, you&amp;#39;ll see that the operation is modifying allocation bitmaps (&lt;font face="courier new,courier"&gt;LCX_IAM&lt;/font&gt;, &lt;font face="courier new,courier"&gt;LCX_PFS&lt;/font&gt;, &lt;font face="courier new,courier"&gt;LCX_SGAM&lt;/font&gt;, &lt;font face="courier new,courier"&gt;LCX_GAM&lt;/font&gt;) but taking locks on the table pages, not on the allocation bitmaps themselves - they&amp;#39;re only ever &lt;em&gt;latched&lt;/em&gt; (an internal, much lighter-weight, synchronization mechanism). This is done as the pages comprising the table are deallocated - t&lt;font face="verdana,geneva" size="2"&gt;his is all done because the table&amp;#39;s small enough that the Storage Engine chooses to deallocate all the storage immediately, instead of pushing it all onto the task queue for the deferred drop background task. See my previous post &lt;/font&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Search-Engine-QA-10-When-are-pages-from-a-truncated-table-reused.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Search Engine Q&amp;amp;A #10: When are pages from a truncated table reused?&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;which discusses this too.&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;There are no actual row operations performed on the table itself. The only table row operations are down at the bottom on table with object IDs 7 and 5 (&lt;font face="courier new,courier"&gt;sysallocunits&lt;/font&gt; and &lt;font face="courier new,courier"&gt;sysrowsets&lt;/font&gt;, respectively) to update the page counts, first IAM, and first page entries for the table.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;So - hopefully this has been useful to you. In the next post in the series, I&amp;#39;ll discuss compensation log records and how rollback operations work.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;PS Send me an email or put in a comment if there&amp;#39;s something in particular about the log (or log records) you&amp;#39;d like to see explained.&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Lock-logging-and-fast-recovery.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Lock-logging-and-fast-recovery.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=6c91f4ea-20e1-48b1-998d-96c54dc4a074</guid>
      <pubDate>Fri, 13 Nov 2009 13:24:00 -0800</pubDate>
      <category>Inside the Storage Engine</category>
      <category>Locking</category>
      <category>On-Disk Structures</category>
      <category>Transaction Log</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=6c91f4ea-20e1-48b1-998d-96c54dc4a074</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=6c91f4ea-20e1-48b1-998d-96c54dc4a074</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Lock-logging-and-fast-recovery.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=6c91f4ea-20e1-48b1-998d-96c54dc4a074</wfw:commentRss>
    </item>
    <item>
      <title>Australia and PASS resources and wrapup</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Today&amp;#39;s our rest day here at SQL Connections and one of the things on my list is to post all the resources from our recent events.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;On our &lt;/font&gt;&lt;a href="http://www.sqlskills.com/pastConferences.asp"&gt;&lt;font face="verdana,geneva" size="2"&gt;Past Events page&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; I&amp;#39;ve uploaded zip files for:&lt;/font&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Kimberly&amp;#39;s 4-day performance tuning class in Melbourne&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;My 4-day maintenance/DR class in Melbourne&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Kimberly&amp;#39;s pre-con at PASS on indexing&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;My post-con at PASS on disaster recovery&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Kimberly&amp;#39;s spotlight session on covering indexes&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;My spotlight session on logging and recovery&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Speaking of PASS, what a wonderful conference it was! This year&amp;#39;s surprise guest was Twitter - which quite changed the social dynamics of the whole event. I was really looking forward to meeting everyone I&amp;#39;ve gotten to know (virtually) since getting sucked into Twitter back in April and it was fun seeing how people looked in real life compared to their Twitter avatars. The SQL community has a vibrant Twitter presence, with lots of people (myself&amp;nbsp;and Kimberly included) online and happy to help out answering questions. One of the coolest things we did was to tweet what was going on in each other&amp;#39;s workshops, so people could follow along who weren&amp;#39;t there. Checkout the #ktprecon and #prpostcon Twitter hash-tags for the resource links&amp;nbsp;and pithy epithets from the workshops. I even managed to heckle Buck Woody in his session while I was at home - remote-heckling!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;There were a bunch of events that happened too that others have blogged photos of, including&amp;nbsp;the opening reception Celebrity Quiz Bowl (which Kimberly and I won), the official launch of the &lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/SQL-Server-MVP-Deep-Dives-book-available-to-order.aspx"&gt;MVP Deep Dives charity book&lt;/a&gt;&amp;nbsp;(which Kimberly and I edited part of), the Birds of a Feather lunch (where we hosted a table each) and Kilt-Wearing-Wednesday. Sadly, I couldn&amp;#39;t procure a kilt to wear but I did show a &lt;a href="http://www.facebook.com/photo.php?pid=30351610&amp;amp;l=1461b7671c&amp;amp;id=1293146061"&gt;picture of me wearing a kilt&lt;/a&gt; last year at my sister&amp;#39;s wedding in Scotland. Maybe next year.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now we&amp;#39;re in Las Vegas for the Fall SQL Connections conference. I&amp;#39;ll be posting resources from our workshops and sessions on Friday, while I&amp;#39;m sitting in Kimberly&amp;#39;s post-con.&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Australia-and-PASS-resources-and-wrapup.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Australia-and-PASS-resources-and-wrapup.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=852d5c9d-42ab-43df-ac9d-18168ac71d78</guid>
      <pubDate>Tue, 10 Nov 2009 16:33:00 -0800</pubDate>
      <category>Conferences</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=852d5c9d-42ab-43df-ac9d-18168ac71d78</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=852d5c9d-42ab-43df-ac9d-18168ac71d78</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Australia-and-PASS-resources-and-wrapup.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=852d5c9d-42ab-43df-ac9d-18168ac71d78</wfw:commentRss>
    </item>
    <item>
      <title>TechNet Magazine: feature article on recovering from disasters using backups</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;The November 2009 edition of TechNet Magazine is up on the web and contains my latest feature article, the second in a 3-part series on backups/restores/repairs.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;In this article I explain all about using the RESTORE command. Not much point having backups if you don&amp;#39;t know how to use them! Topics include:&lt;/font&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;The four phases of a restore operation - how they work and how you can speed them up&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Figuring out what you need to restore when a disaster happens&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Figuring out what you&amp;#39;re actually able to restore&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Using WITH RECOVERY / NORECOVERY / STANDBY&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Point-in-time restore operations&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Considerations when restoring to a different location&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;There seem to be a few formatting issues when the magazine&amp;#39;s web folks put the article up - I&amp;#39;ve notified them and hopefully they&amp;#39;ll fix them soon.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;You can get to the article at: &lt;/font&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/ee677581.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;http://technet.microsoft.com/en-us/magazine/ee677581.aspx&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/TechNet-Magazine-feature-article-on-recovering-from-disasters-using-backups.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/TechNet-Magazine-feature-article-on-recovering-from-disasters-using-backups.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=93349697-a638-490b-a242-241a24a39362</guid>
      <pubDate>Thu, 05 Nov 2009 08:36:00 -0800</pubDate>
      <category>Backup/Restore</category>
      <category>Disaster Recovery</category>
      <category>Involuntary DBA</category>
      <category>TechNet Magazine</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=93349697-a638-490b-a242-241a24a39362</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=93349697-a638-490b-a242-241a24a39362</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/TechNet-Magazine-feature-article-on-recovering-from-disasters-using-backups.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=93349697-a638-490b-a242-241a24a39362</wfw:commentRss>
    </item>
    <item>
      <title>Busy week coming up at the 2009 PASS Summit</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;It&amp;#39;s PASS time again in Seattle and we&amp;#39;ve got a busy week lined up. It&amp;#39;s going to be a cavalcade of meeting new people, and in the best tradition of conferences past, I&amp;#39;ll do my best to&amp;nbsp;remember most people&amp;#39;s names who I met last year but please don&amp;#39;t be offended if I don&amp;#39;t, give me a prod in the right direction :-) Best bet for having me remember is to have something brightly colored on show: Jason has vivid&amp;nbsp;red hair, Denny has partly bright blue hair, Brent has big green fists, and Thomas has&amp;nbsp;off-color blog posts. My brightly-colored attire will include a tall blonde woman next to me most of the time.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Here&amp;#39;s what we have definitely on the schedule so far:&lt;/font&gt; 
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Our pre-con workshop on Monday&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Playing in the welcome reception Quiz Bowl Monday night&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Birds of a Feather lunch on Tuesday. I&amp;#39;m doing &amp;quot;Chow Down on Corruption&amp;quot; and Kimberly&amp;#39;s doing &amp;quot;Kimberly Tripp Covers Indexes (and Lunch)&amp;quot;. Our tables are going to be next to each other so that we can heckle. My table will at least have to make it known that our table title is cleverer than hers.&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;My Wednesday morning Spotlight session on Understanding Logging and Recovery&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Kimberly&amp;#39;s Wednesday afternoon Spotlight session on Covering Indexes&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Our post-con workshop on Friday&lt;/font&gt; 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And some parties and other frivolity thrown in.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Hope to see you there!&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;PS Seems like #sqlpass is the Twitter tag for the conference, prepare to be overwhelmed!&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;PPS If you&amp;#39;re speaking for the first time at PASS, checkout my long Valentine&amp;#39;s Day blog post about how to present: &lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Public-speaking-about-SQL-Server-A-Primer.aspx"&gt;Public Speaking: A Primer&lt;/a&gt;&lt;/font&gt;
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Busy-week-coming-up-at-the-2009-PASS-Summit.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Busy-week-coming-up-at-the-2009-PASS-Summit.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=27c81ca0-3147-4caf-94d9-657f2ac6d51c</guid>
      <pubDate>Sun, 01 Nov 2009 12:08:00 -0800</pubDate>
      <category>Conferences</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=27c81ca0-3147-4caf-94d9-657f2ac6d51c</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=27c81ca0-3147-4caf-94d9-657f2ac6d51c</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Busy-week-coming-up-at-the-2009-PASS-Summit.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=27c81ca0-3147-4caf-94d9-657f2ac6d51c</wfw:commentRss>
    </item>
    <item>
      <title>Video of didgeridoo player at Ayers Rock</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;For the last few weeks we were in Australia, teaching classes with our sister company &lt;a href="http://www.sqlskills.com.au/"&gt;SQLskills.com.au&lt;/a&gt;. After we were done with work we headed out to Uluru (formerly known as Ayers Rock) in the remote outback of the Northern Territories for a long weekend. We&amp;#39;ll both be posting a bunch of photos from the trip, but to start with I just uploaded a 2 minute video I took of an excellent didgeridoo player. He was playing for a group of us doing the &lt;/font&gt;&lt;a href="http://www.ayersrockresort.com.au/sounds-of-silence/"&gt;&lt;font face="verdana,geneva" size="2"&gt;Sounds of Silence dinner&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;, watching the sunset at Uluru. Fantastic!&lt;/font&gt;&lt;font face="verdana,geneva"&gt; &lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;a href="http://www.facebook.com/video/video.php?v=1264929305345"&gt;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1020503.JPG" alt="" width="314" height="235" /&gt;&lt;/a&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Click the image to go to the movie on Facebook (no login required).&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Video-of-didgeridoo-player-at-Ayers-Rock.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Video-of-didgeridoo-player-at-Ayers-Rock.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=24c01722-2bc4-448f-b8a0-2891e74bb16c</guid>
      <pubDate>Thu, 29 Oct 2009 14:34:00 -0800</pubDate>
      <category>Where In The World Are Paul And Kimberly</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=24c01722-2bc4-448f-b8a0-2891e74bb16c</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=24c01722-2bc4-448f-b8a0-2891e74bb16c</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Video-of-didgeridoo-player-at-Ayers-Rock.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=24c01722-2bc4-448f-b8a0-2891e74bb16c</wfw:commentRss>
    </item>
    <item>
      <title>Tracking expensive queries with extended events in SQL 2008</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;As part of the 2008 DBA class we&amp;#39;re teaching down here in Melbourne, I did a demo of using predicates and file targets with extended events, so I want to blog the script for people to play with. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;For background info on extended events see: &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;My TechNet Magazine article from 2008: &lt;/font&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/2009.01.sql2008.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Advanced Troubleshooting with Extended Events&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/"&gt;&lt;font face="verdana,geneva" size="2"&gt;Jonathan Kehayias&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;#39; excellent whitepaper: &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd822788.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;Using SQL Server 2008 Extended Events&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Previous &lt;/font&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/post/Getting-historical-deadlock-info-using-extended-events.aspx"&gt;&lt;font face="verdana,geneva" size="2"&gt;blog post&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt; on using the system health event session to get historical deadlock info &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;In this scenario, I&amp;#39;d like to track queries that make heavy usage of the CPU on my system. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;First off I&amp;#39;ll create a test database to play with. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;USE MASTER;&lt;br /&gt;
	GO&lt;br /&gt;
	IF DATABASEPROPERTYEX (&amp;#39;production&amp;#39;, &amp;#39;Version&amp;#39;) &amp;gt; 0 DROP DATABASE production;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CREATE DATABASE production;&lt;br /&gt;
	GO&lt;br /&gt;
	USE production;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;CREATE TABLE t1 (c1 INT IDENTITY, c2 UNIQUEIDENTIFIER ROWGUIDCOL DEFAULT NEWID(), c3 CHAR (5000) DEFAULT &amp;#39;a&amp;#39;);&lt;br /&gt;
	CREATE CLUSTERED INDEX t1_CL ON t1 (c1);&lt;br /&gt;
	CREATE NONCLUSTERED INDEX t1_NCL ON t1 (c2);&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;SET NOCOUNT ON;&lt;br /&gt;
	INSERT INTO t1 DEFAULT VALUES;&lt;br /&gt;
	GO 1000 &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;-- Get the database ID to plug into the event session&lt;br /&gt;
	SELECT DB_ID (&amp;#39;production&amp;#39;);&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Notice that I grabbed the database ID of the new database I created, as I&amp;#39;ll need that when defining the extended event predicate. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name = &amp;#39;EE_ExpensiveQueries&amp;#39;)&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; DROP EVENT SESSION EE_ExpensiveQueries ON SERVER;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;CREATE EVENT SESSION EE_ExpensiveQueries ON SERVER&lt;br /&gt;
	ADD EVENT sqlserver.sql_statement_completed&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; (ACTION (sqlserver.sql_text, sqlserver.plan_handle)&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE sqlserver.database_id = 18 /*DBID*/&amp;nbsp; AND cpu &amp;gt; 10 /*total ms of CPU time*/)&lt;br /&gt;
	ADD TARGET package0.asynchronous_file_target&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; (SET FILENAME = N&amp;#39;C:\SQLskills\EE_ExpensiveQueries.xel&amp;#39;,&amp;nbsp;METADATAFILE = N&amp;#39;C:\SQLskills\EE_ExpensiveQueries.xem&amp;#39;)&lt;br /&gt;
	WITH (max_dispatch_latency = 1 seconds);&lt;br /&gt;
	GO&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;I&amp;#39;m monitoring the event that fires whenever a statement completes, and I&amp;#39;m filtering by database ID (make sure you plug in the correct database ID when you try this yourself) and by the number of milliseconds of CPU time the statement used. &lt;strong&gt;Note:&lt;/strong&gt; when using predicates you should always make sure that you order the predicate tests such that the most restrictive predicates (those most likely to evaluate to false) are first in the list, so the predicate evaluation &amp;#39;short-circuits&amp;#39; as quickly as possible (a standard programming practice with boolean logic). I&amp;#39;m also using a file target, just to show how it can be done, instead of the ring buffer which is commonly used for extended events demos. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now I&amp;#39;m going to turn on the event session and do some queries in the &lt;font face="courier new,courier"&gt;production&lt;/font&gt; database. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;ALTER EVENT SESSION EE_ExpensiveQueries ON SERVER STATE = START;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;USE production;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;SELECT COUNT (*) FROM t1 WHERE c1 &amp;gt; 500;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;SELECT SUM (c1) FROM t1 WHERE c3 LIKE &amp;#39;a&amp;#39;;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;ALTER INDEX t1_CL ON t1 REORGANIZE;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;ALTER INDEX t1_CL ON t1 REBUILD;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;That should have generated some long-running queries. Now I&amp;#39;ll switch in to the context of &lt;font face="courier new,courier"&gt;master&lt;/font&gt; (so the querying of the event session itself doesn&amp;#39;t get captured by the event session) and see what I&amp;#39;ve captured. &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;USE master;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;SELECT COUNT (*)&amp;nbsp;FROM sys.fn_xe_file_target_read_file&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; (&amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xel&amp;#39;,&amp;nbsp;&amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xem&amp;#39;, NULL, NULL);&lt;br /&gt;
	GO&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;In this case I&amp;#39;ve got 3 entries. I can pull these out using the following code: &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;SELECT data FROM &lt;br /&gt;
	&amp;nbsp;&amp;nbsp; (SELECT CONVERT (XML, event_data) AS data FROM sys.fn_xe_file_target_read_file&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xel&amp;#39;, &amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xem&amp;#39;, NULL, NULL)&lt;br /&gt;
	&amp;nbsp;) entries;&lt;br /&gt;
	GO&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;But I get three XML blobs back, like so: &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2feedemo1.JPG" alt="" width="613" height="141" /&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;What&amp;#39;s more useful is to pull everything out of the XML blob programmatically using the code below: &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;SELECT&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; data.value (&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;(/event[@name=&amp;#39;&amp;#39;sql_statement_completed&amp;#39;&amp;#39;]/@timestamp)[1]&amp;#39;, &amp;#39;DATETIME&amp;#39;) AS [Time],&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; data.value (&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;(/event/data[@name=&amp;#39;&amp;#39;cpu&amp;#39;&amp;#39;]/value)[1]&amp;#39;, &amp;#39;INT&amp;#39;) AS [CPU (ms)],&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONVERT (FLOAT, data.value (&amp;#39;(/event/data[@name=&amp;#39;&amp;#39;duration&amp;#39;&amp;#39;]/value)[1]&amp;#39;, &amp;#39;BIGINT&amp;#39;)) / 1000000&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS [Duration (s)],&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; data.value (&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;#39;(/event/action[@name=&amp;#39;&amp;#39;sql_text&amp;#39;&amp;#39;]/value)[1]&amp;#39;, &amp;#39;VARCHAR(MAX)&amp;#39;) AS [SQL Statement],&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUBSTRING (data.value (&amp;#39;(/event/action[@name=&amp;#39;&amp;#39;plan_handle&amp;#39;&amp;#39;]/value)[1]&amp;#39;, &amp;#39;VARCHAR(100)&amp;#39;), 15, 50)&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS [Plan Handle]&lt;br /&gt;
	FROM &lt;br /&gt;
	&amp;nbsp;&amp;nbsp; (SELECT CONVERT (XML, event_data) AS data FROM sys.fn_xe_file_target_read_file&lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xel&amp;#39;, &amp;#39;C:\SQLskills\EE_ExpensiveQueries*.xem&amp;#39;, null, null)&lt;br /&gt;
	) entries&lt;br /&gt;
	ORDER BY [Time] DESC;&lt;br /&gt;
	GO &lt;/font&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;font face="courier new,courier" size="2"&gt;Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CPU (ms) Duration (s) SQL Statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Plan Handle&lt;br /&gt;
	----------------------- -------- ------------ ------------------------------------------ --------------------------------------------------&lt;br /&gt;
	2009-10-16 17:59:29.623 30&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1.214875&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALTER INDEX t1_CL ON t1 REBUILD;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x06001000EB672A07B8C0C807000000000000000000000000&lt;br /&gt;
	2009-10-16 17:59:28.407 20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.024076&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ALTER INDEX t1_CL ON t1 REORGANIZE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0600100003594903B8C0C807000000000000000000000000&lt;br /&gt;
	2009-10-16 17:59:28.343 51&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0.045144&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT SUM (c1) FROM t1 WHERE c3 LIKE &amp;#39;a&amp;#39;; 0x06001000FAF5B11EB820C307000000000000000000000000&lt;/font&gt; 
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now I can plug in one of the plan handles to a query of &lt;font face="courier new,courier"&gt;sys.dm_exec_query_plan&lt;/font&gt; to get the graphical query plan: &lt;/font&gt;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;font face="verdana,geneva" size="2"&gt;&lt;font face="courier new,courier"&gt;SELECT [query_plan] FROM sys.dm_exec_query_plan (0x06001000FAF5B11EB820C307000000000000000000000000);&lt;br /&gt;
	GO&lt;/font&gt; &lt;/font&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And clicking on the resulting XML &amp;#39;link&amp;#39; gives the query plan: &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2feedemo2.JPG" alt="" width="547" height="102" /&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2feedemo3.JPG" alt="" width="779" height="158" /&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And now I can tweak the production workload to potentially behave better. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Just for kicks I went back into the context of the &lt;font face="courier new,courier"&gt;production&lt;/font&gt; database and ran the XML parsing again to capture the query plan - try it yourself - pretty gnarly! :-) &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Now, if I was going to make this more useful, I&amp;#39;d use a ring buffer target, with a polling mechanism every few seconds to make sure that I can capture the graphical query plan for expensive queries before the plan is pushed out of cache - maybe I&amp;#39;ll get around to doing that and publish the complete solution. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;In the meantime, here&amp;#39;s a zip file containing the entire script that you can download and play with: &lt;/font&gt;&lt;a href="http://www.sqlskills.com/BLOGS/PAUL/file.axd?file=2009%2f10%2fEE_ExpensiveQueries.zip"&gt;&lt;font face="verdana,geneva" size="2"&gt;EE_ExpensiveQueries.zip (1.72 kb)&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Tracking-expensive-queries-with-extended-events-in-SQL-2008.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Tracking-expensive-queries-with-extended-events-in-SQL-2008.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=1e674d0f-560f-4d36-b0c4-07c7adc5e740</guid>
      <pubDate>Thu, 15 Oct 2009 16:13:00 -0800</pubDate>
      <category>Extended Events</category>
      <category>Performance</category>
      <category>SQL Server 2008</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=1e674d0f-560f-4d36-b0c4-07c7adc5e740</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=1e674d0f-560f-4d36-b0c4-07c7adc5e740</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Tracking-expensive-queries-with-extended-events-in-SQL-2008.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=1e674d0f-560f-4d36-b0c4-07c7adc5e740</wfw:commentRss>
    </item>
    <item>
      <title>Photos from Warsaw trip in September</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;I&amp;#39;ve finally gotten around to tidying up and posting a bunch of photos from the second half of our trip to Europe trip in September. Warsaw&amp;#39;s an excellent place (although we were repeatedly told that Krakow is better - we&amp;#39;ll see when we go next time) with a lot of cool history to soak up. We spent a day wandering around the old town (heavily reconstructed after WWII) and the Royal Castle (totally reconstructed). We also saw some of the old 3-metre high containing wall from the Jewish ghetto during WWII - very interesting and thought-provoking. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;I&amp;#39;ve uploaded two albums to Facebook (no login required): &lt;/font&gt;
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Tour of the Royal Castle - see &lt;span&gt;&lt;a href="http://www.facebook.com/album.php?aid=2040519&amp;amp;id=1293146061&amp;amp;l=dca686cead"&gt;http://www.facebook.com/album.php?aid=2040519&amp;amp;id=1293146061&amp;amp;l=dca686cead&lt;/a&gt;&lt;/span&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	&lt;font face="verdana,geneva" size="2"&gt;Wandering around the Old Town - see &lt;span&gt;&lt;a href="http://www.facebook.com/album.php?aid=2040630&amp;amp;id=1293146061&amp;amp;l=a8107c0aa5"&gt;http://www.facebook.com/album.php?aid=2040630&amp;amp;id=1293146061&amp;amp;l=a8107c0aa5&lt;/a&gt;&lt;/span&gt; &lt;/font&gt;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;span&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;Here are a few examples: part of the enclosure wall from the Jewish ghetto, church bell tower, statue of Chronos in the Royal Castle.&lt;/font&gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;span&gt;&lt;font face="verdana,geneva" size="2"&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010694.JPG" alt="" width="314" height="235" /&gt; &lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010707.JPG" alt="" width="235" height="314" /&gt; &lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010791.JPG" alt="" width="235" height="314" /&gt; &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;And a few more: tank track from the remote-controlled German tank that destroyed the Cathedral, larger view of the room containing Chronos, Plac Zamkowy (Castle Square) with the Royal Castle on the right.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;&lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010762.JPG" alt="" width="314" height="235" /&gt; &lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010788.JPG" alt="" width="314" height="235" /&gt; &lt;img src="http://www.sqlskills.com/BLOGS/PAUL/image.axd?picture=2009%2f10%2fSmallP1010869.JPG" alt="" width="314" height="235" /&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Photos-from-Warsaw-trip-in-September.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Photos-from-Warsaw-trip-in-September.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=d1d83d2e-e115-4682-a0e7-f3cd768f370e</guid>
      <pubDate>Thu, 15 Oct 2009 13:27:00 -0800</pubDate>
      <category>Where In The World Are Paul And Kimberly</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=d1d83d2e-e115-4682-a0e7-f3cd768f370e</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=d1d83d2e-e115-4682-a0e7-f3cd768f370e</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Photos-from-Warsaw-trip-in-September.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=d1d83d2e-e115-4682-a0e7-f3cd768f370e</wfw:commentRss>
    </item>
    <item>
      <title>Things to consider when setting up database mirroring</title>
      <description>&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Over the last week or so I&amp;#39;ve been helping the Product Support folks at Microsoft write a new KB article which discusses some of the things you should take into consideration when setting up database mirroring.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;It discusses memory, CPU, I/O bandwidth, network bandwidth, and transaction volume. One of the most interesting things it discusses is exactly how many worker threads are required on the principal and mirror for each mirrored database.&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Check it out at: &lt;/font&gt;&lt;a href="http://support.microsoft.com/kb/2001270"&gt;&lt;font face="verdana,geneva" size="2"&gt;http://support.microsoft.com/kb/2001270&lt;/font&gt;&lt;/a&gt;&lt;font face="verdana,geneva" size="2"&gt;&amp;nbsp;(the formatting looks a little weird in the final online version, assuming they&amp;#39;ll fix that up).&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="verdana,geneva" size="2"&gt;Enjoy!&lt;/font&gt; 
&lt;/p&gt;
</description>
      <link>http://www.sqlskills.com/BLOGS/PAUL/post/Things-to-consider-when-setting-up-database-mirroring.aspx</link>
      <author>paul.nospam@nospam.sqlskills.com (paul)</author>
      <comments>http://www.sqlskills.com/BLOGS/PAUL/post/Things-to-consider-when-setting-up-database-mirroring.aspx#comment</comments>
      <guid>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=fd00859e-022b-457c-b057-1b960e7a4cd9</guid>
      <pubDate>Wed, 14 Oct 2009 20:27:00 -0800</pubDate>
      <category>Database Mirroring</category>
      <category>High Availability</category>
      <dc:publisher>paul</dc:publisher>
      <pingback:server>http://www.sqlskills.com/BLOGS/PAUL/pingback.axd</pingback:server>
      <pingback:target>http://www.sqlskills.com/BLOGS/PAUL/post.aspx?id=fd00859e-022b-457c-b057-1b960e7a4cd9</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.sqlskills.com/BLOGS/PAUL/trackback.axd?id=fd00859e-022b-457c-b057-1b960e7a4cd9</trackback:ping>
      <wfw:comment>http://www.sqlskills.com/BLOGS/PAUL/post/Things-to-consider-when-setting-up-database-mirroring.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.sqlskills.com/BLOGS/PAUL/syndication.axd?post=fd00859e-022b-457c-b057-1b960e7a4cd9</wfw:commentRss>
    </item>
  </channel>
</rss>
