<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>The Rambling DBA: Jonathan Kehayias : Deadlock</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Deadlock/default.aspx</link><description>Tags: Deadlock</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>The Curious Case of the Dubious Deadlock and the Not So Logical Lock</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/05/28/the-curious-case-of-the-dubious-deadlock-and-the-not-so-logical-lock.aspx</link><pubDate>Fri, 29 May 2009 01:13:35 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:14330</guid><dc:creator>Jonathan Kehayias</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jonathan_kehayias/comments/14330.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jonathan_kehayias/commentrss.aspx?PostID=14330</wfw:commentRss><description>&lt;p&gt;This blog post by James Rowland Jones on a specific type of deadlock is so interesting that I have to share the link to it.&amp;#160; Not only so other people read it, but in case I ever need to find it again in a pinch, I can easily find it on this post.&amp;#160; James encountered a very interesting deadlock and provides a really in depth explanation including the use of an undocumented side of locking in SQL Server that you'd be hard pressed to find somewhere else online.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.conchango.com/jamesrowlandjones/archive/2009/05/28/the-curious-case-of-the-dubious-deadlock-and-the-not-so-logical-lock.aspx" href="http://blogs.conchango.com/jamesrowlandjones/archive/2009/05/28/the-curious-case-of-the-dubious-deadlock-and-the-not-so-logical-lock.aspx"&gt;http://blogs.conchango.com/jamesrowlandjones/archive/2009/05/28/the-curious-case-of-the-dubious-deadlock-and-the-not-so-logical-lock.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As an additional note, he mentions at the bottom of the blog post an upcoming SQL Server Internals book that he is co-authoring with &lt;a href="http://sqlblogcasts.com/blogs/christian/" target="_blank"&gt;Christian Bolton&lt;/a&gt;, &lt;a href="http://sqlblogcasts.com/blogs/justinl/" target="_blank"&gt;Justin Langford&lt;/a&gt; &amp;amp; &lt;a href="http://www.brentozar.com/" target="_blank"&gt;Brent Ozar&lt;/a&gt; with contributions from &lt;a href="http://blogs.msdn.com/cindygross/" target="_blank"&gt;Cindy Gross&lt;/a&gt; and me.&amp;#160; I am working on the Waits and Extended Events chapter in this book currently which has been quite a learning experience and has really changed how I look at problems in SQL Server and troubleshoot performance issues personally.&amp;#160; More to come on the book when it gets closer to publication.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;EDIT:&lt;/p&gt;  &lt;p&gt;Apparently Jame's blog post was so interesting it sparked some other posts online as well..&lt;/p&gt;  &lt;p&gt;&lt;a title="http://rusanu.com/2009/05/29/lockres-collision-probability-magic-marker-16777215/" href="http://rusanu.com/2009/05/29/lockres-collision-probability-magic-marker-16777215/"&gt;http://rusanu.com/2009/05/29/lockres-collision-probability-magic-marker-16777215/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=14330" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Deadlock/default.aspx">Deadlock</category></item><item><title>Clarification on SQL Server Deadlocks being Unavoidable</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2009/04/30/clarification-on-sql-server-deadlocks-being-unavoidable.aspx</link><pubDate>Thu, 30 Apr 2009 09:43:36 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:13664</guid><dc:creator>Jonathan Kehayias</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/jonathan_kehayias/comments/13664.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jonathan_kehayias/commentrss.aspx?PostID=13664</wfw:commentRss><description>&lt;p&gt;While running through some of my personal emails tonight, I happened across two different questions regarding some statements I have made on forums post in the past, as well as in one of my &lt;a href="http://www.sqlservercentral.com/articles/deadlocks/65614/" target="_blank"&gt;articles on SQL Server Central&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Even with &amp;quot;proper design&amp;quot; it is still possible to have deadlocking occur which is why it is crucial for applications to properly handle 1205 errors generated by the database engine. If a deadlock occurs, a properly built application should log the occurrence, but also resubmit the deadlocked transaction as a part of handling the error.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For whatever reason, this statement seems to stop being read at:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;Even with &amp;quot;proper design&amp;quot; it is still possible to have deadlocking occur&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;and it is being taken to mean that deadlocks in SQL Server are unavoidable.&amp;#160; This is not what this statement is intending to say by far, and I am a firm believer that deadlocks are generally caused by a fundamental design problem that can be fixed.&amp;#160; The real problem is that sometimes, fixing the design problem is very complex and could mean restructuring the database, refactoring code, and/or other tasks that are not necessarily feasible to do at the moment.&amp;#160; If you find yourself in one of these major redesign scenarios, solving the deadlock immediately may not actually be possible.&lt;/p&gt;  &lt;p&gt;Many thanks go out to &lt;a href="http://sqlblog.com/blogs/louis_davidson/default.aspx" target="_blank"&gt;Louis Davidson&lt;/a&gt; who taught me this, or at least made me think about it when I reply/write about deadlocks online, but properly designed applications should have exception handling built into their data access layer which brings us to the remainder of the quote from the article that seems to never get read:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;which is why it is crucial for applications to properly handle 1205 errors generated by the database engine. If a deadlock occurs, a properly built application should log the occurrence, but also resubmit the deadlocked transaction as a part of handling the error.&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Handling exceptions and errors seems to be second place in development these days, at least based on the questions that get asked on the forums at times.&amp;#160; Having written my own applications and tools in the past year, I am not exempt from this problem either.&amp;#160; I have only recently begun to put exception management at the front of my application development, and in a hurry, I often still don't do it until something blows up the first time, and I have to go back and correct my shortcoming.&amp;#160; The entire point of these two statements is that the application should properly handle the deadlock exception, and attempt to resubmit the transaction a second time before raising a hard error back to the user, and it should then log the error in some manner for follow up or tracking.&lt;/p&gt;  &lt;p&gt;Deadlocking seems to be becoming more prevalent based on the trends I see in questions on the forums, which may be partially related to the increasing speed and performance of server hardware, but most often, it is the result of bad design. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=13664" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Database+Administration/default.aspx">Database Administration</category><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Deadlock/default.aspx">Deadlock</category><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Rants+and+Ramblings/default.aspx">Rants and Ramblings</category></item><item><title>Anatomy of a Deadlock - Part Deux</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2008/11/25/anatomy-of-a-deadlock-part-deux.aspx</link><pubDate>Tue, 25 Nov 2008 17:59:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:13976</guid><dc:creator>Jonathan Kehayias</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/jonathan_kehayias/comments/13976.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jonathan_kehayias/commentrss.aspx?PostID=13976</wfw:commentRss><description>  &lt;p&gt;There was a very &lt;a href="http://forums.microsoft.com/forums/ShowPost.aspx?PostID=4169560&amp;amp;SiteID=1"&gt;interesting post on the forums&lt;/a&gt; regarding a deadlock that is very similar to the deadlock described in the initial &lt;a href="http://jmkehayias.blogspot.com/2008/07/anatomy-of-deadlock.html"&gt;Anatomy of a Deadlock&lt;/a&gt; post I made a few months back.&amp;nbsp; This one is slightly different however because it involves Range locks, Serializable Transaction Isolation Level, and a Heap with a Non-Clustered Index.&amp;nbsp; I am a visual person when it comes to deadlocks, and to figure it all out I often just draw a diagram on paper, but this one is interesting enough to put into Visio and show.&lt;/p&gt;  &lt;p&gt;To keep from reposting the entire post, I am going to stick to the pertinent details only on this blog post.&amp;nbsp; The post has a heap with a non-clustered index on the primary key:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE TABLE &lt;/span&gt;[dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[T_IC_AUDIT_LOG]&lt;span style="color:gray;"&gt;(&lt;br&gt; &lt;/span&gt;[APP_ID] [varchar]&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) NOT NULL,&lt;br&gt; &lt;/span&gt;[TRANSACTION_ID] [varchar]&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;) NOT NULL,&lt;br&gt; &lt;/span&gt;[USER_NAME] [nvarchar]&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) NOT NULL,&lt;br&gt; &lt;/span&gt;[LOG_FUNCTION] [nvarchar]&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;) NULL,&lt;br&gt; &lt;/span&gt;[LOG_TIME] [datetime] &lt;span style="color:gray;"&gt;NOT NULL,&lt;br&gt; &lt;/span&gt;[APP_VERSION] [nvarchar]&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;) NULL,&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;CONSTRAINT &lt;/span&gt;[C_IC_AUDIT_LOG_PK] &lt;span style="color:blue;"&gt;PRIMARY KEY NONCLUSTERED &lt;br&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;br&gt; &lt;/span&gt;[TRANSACTION_ID] &lt;span style="color:blue;"&gt;ASC&lt;br&gt;&lt;/span&gt;&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;span style="color:blue;"&gt;WITH &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;&lt;span style="color:blue;"&gt;PAD_INDEX  &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;OFF&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;STATISTICS_NORECOMPUTE  &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;OFF&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;IGNORE_DUP_KEY &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;OFF&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;br&gt;       &lt;/span&gt;&lt;span style="color:blue;"&gt;ALLOW_ROW_LOCKS  &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:blue;"&gt;ALLOW_PAGE_LOCKS  &lt;/span&gt;&lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;ON &lt;/span&gt;[PRIMARY]&lt;br&gt;&lt;span style="color:gray;"&gt;) &lt;/span&gt;&lt;span style="color:blue;"&gt;ON &lt;/span&gt;[PRIMARY]&lt;br&gt;&lt;br&gt;&lt;span style="color:blue;"&gt;GO&lt;br&gt;SET ANSI_PADDING OFF&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;Then a stored procedure is used to add records to the table:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;CREATE PROCEDURE &lt;/span&gt;[dbo]&lt;span style="color:gray;"&gt;.&lt;/span&gt;[P_IC_AUDIT_LOG_I]&lt;br&gt; @p_app_name                  &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;@p_transaction_id            &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;@p_user_name                 &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;@p_log_function              &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;256&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;@p_log_time                  &lt;span style="color:blue;"&gt;datetime&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;br&gt; &lt;/span&gt;@p_app_version               &lt;span style="color:blue;"&gt;nvarchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;20&lt;span style="color:gray;"&gt;) &lt;br&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;AS&lt;br&gt;&lt;br&gt;SET NOCOUNT ON&lt;br&gt;SET XACT_ABORT ON&lt;br&gt;&lt;br&gt;BEGIN&lt;br&gt; DECLARE  &lt;/span&gt;@v_app_id &lt;span style="color:blue;"&gt;VARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;50&lt;span style="color:gray;"&gt;)&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;DECLARE  &lt;/span&gt;@v_error &lt;span style="color:blue;"&gt;INT&lt;br&gt;&lt;br&gt;    EXEC &lt;/span&gt;@v_error &lt;span style="color:gray;"&gt;= &lt;/span&gt;P_IC_APP_GET_ID @p_app_name&lt;span style="color:gray;"&gt;, &lt;/span&gt;@v_app_id &lt;span style="color:blue;"&gt;OUTPUT&lt;br&gt;    IF &lt;/span&gt;@v_error &lt;span style="color:gray;"&gt;&amp;lt;&amp;gt; &lt;/span&gt;0 &lt;span style="color:blue;"&gt;RETURN &lt;/span&gt;@v_error&lt;br&gt;        &lt;br&gt; &lt;span style="color:blue;"&gt;DECLARE &lt;/span&gt;@v_count &lt;span style="color:blue;"&gt;INT&lt;br&gt; SELECT &lt;/span&gt;@v_count &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:magenta;"&gt;COUNT&lt;/span&gt;&lt;span style="color:gray;"&gt;(*) &lt;/span&gt;&lt;span style="color:blue;"&gt;FROM &lt;/span&gt;T_IC_AUDIT_LOG &lt;span style="color:blue;"&gt;WHERE &lt;/span&gt;TRANSACTION_ID&lt;span style="color:gray;"&gt;=&lt;/span&gt;@p_transaction_id&lt;span style="color:gray;"&gt;;&lt;br&gt;&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;IF &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@v_count &lt;span style="color:gray;"&gt;&amp;gt;&lt;/span&gt;0 &lt;span style="color:gray;"&gt;)&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;BEGIN&lt;br&gt;  RETURN&lt;/span&gt;&lt;span style="color:gray;"&gt;;&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;br&gt;&lt;br&gt; INSERT INTO &lt;/span&gt;T_IC_AUDIT_LOG &lt;span style="color:gray;"&gt;(&lt;/span&gt;APP_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;TRANSACTION_ID&lt;span style="color:gray;"&gt;, &lt;/span&gt;[USER_NAME]&lt;span style="color:gray;"&gt;, &lt;br&gt;            &lt;/span&gt;LOG_FUNCTION&lt;span style="color:gray;"&gt;, &lt;/span&gt;LOG_TIME&lt;span style="color:gray;"&gt;, &lt;/span&gt;APP_VERSION&lt;span style="color:gray;"&gt;)&lt;br&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;VALUES &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;@v_app_id&lt;span style="color:gray;"&gt;, &lt;/span&gt;@p_transaction_id&lt;span style="color:gray;"&gt;, &lt;/span&gt;@p_user_name &lt;span style="color:gray;"&gt;, &lt;br&gt;            &lt;/span&gt;@p_log_function&lt;span style="color:gray;"&gt;, &lt;/span&gt;@p_log_time&lt;span style="color:gray;"&gt;, &lt;/span&gt;@p_app_version&lt;span style="color:gray;"&gt;)&lt;br&gt;&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;END&lt;br&gt;SET NOCOUNT OFF&lt;br&gt;SET XACT_ABORT OFF&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This is being executed from ADO.NET using a System.Transaction, which is forcing it to run Serializable.&amp;nbsp; The below picture demonstrates why the Deadlock actually is occuring:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/WindowsLiveWriter/AnatomyofaDeadlockPartDeux_12180/image_2.png"&gt;&lt;img src="http://sqlblog.com/blogs/jonathan_kehayias/WindowsLiveWriter/AnatomyofaDeadlockPartDeux_12180/image_thumb.png" style="border-width:0px;" alt="image" border="0" width="260" height="235"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The SPID on the right, process998f28, calls the stored procedure and gets a RangeS-S lock on the non-clustered index to do the count(*) against the transaction_id column which defines the non-clustered index for the primary key.&amp;nbsp; Since this is run in a Serializable transaction, the lock is held for the duration of the stored procedure. When the insert is called on this same SPID, process998f28, an SIX lock is issued against the tables Heap allocation.&lt;/p&gt;

&lt;p&gt;This deadlock, like the previous one, is timing based.&amp;nbsp; While the SIX lock is taken for the insert on SPID process998f28, the second SPID, process90aa78, starts the stored procedure and takes a RangeS-S lock on the non-clustered index.&amp;nbsp; After this happens the original SPID, , will require a RangeI-N lock to update the non-clustered index with the new row.&amp;nbsp; This will be blocked by the existing RangeS-S lock on the non-clustered index which is being held by SPID process90aa78 for the duration of its execution.&lt;/p&gt;

&lt;p&gt;When SPID process90aa78 finishes the count(*) select, it will then need a SIX lock on the Heap allocation, but it will be blocked by the existing SIX lock which is waiting on the RangeS-S lock to release, and the deadlock occurs.&lt;/p&gt;

&lt;p&gt;The Deadlock graph for this is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span&gt;deadlock-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;  &amp;lt;&lt;/span&gt;&lt;span&gt;deadlock &lt;/span&gt;&lt;span style="color:red;"&gt;victim&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process90aa78&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;process-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;process &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process90aa78&lt;/span&gt;" &lt;span style="color:red;"&gt;taskpriority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;logused&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;waitresource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;OBJECT: 9:1567500813:0 &lt;/span&gt;" &lt;span style="color:red;"&gt;waittime&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;46&lt;/span&gt;" &lt;span style="color:red;"&gt;ownerId&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;485513&lt;/span&gt;" &lt;span style="color:red;"&gt;transactionname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;user_transaction&lt;/span&gt;" &lt;span style="color:red;"&gt;lasttranstarted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;XDES&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0xd0d2040&lt;/span&gt;" &lt;span style="color:red;"&gt;lockMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;IX&lt;/span&gt;" &lt;span style="color:red;"&gt;schedulerid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1&lt;/span&gt;" &lt;span style="color:red;"&gt;kpid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;4784&lt;/span&gt;" &lt;span style="color:red;"&gt;status&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;suspended&lt;/span&gt;" &lt;span style="color:red;"&gt;spid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;63&lt;/span&gt;" &lt;span style="color:red;"&gt;sbid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;ecid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;transcount&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;" &lt;span style="color:red;"&gt;lastbatchstarted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;lastbatchcompleted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;clientapp&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;.Net SqlClient Data Provider&lt;/span&gt;" &lt;span style="color:red;"&gt;hostname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;NCS-LIFENG&lt;/span&gt;" &lt;span style="color:red;"&gt;hostpid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2776&lt;/span&gt;" &lt;span style="color:red;"&gt;loginname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;test&lt;/span&gt;" &lt;span style="color:red;"&gt;isolationlevel&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;serializable (4)&lt;/span&gt;" &lt;span style="color:red;"&gt;xactid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;485513&lt;/span&gt;" &lt;span style="color:red;"&gt;currentdb&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;9&lt;/span&gt;" &lt;span style="color:red;"&gt;lockTimeout&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;4294967295&lt;/span&gt;" &lt;span style="color:red;"&gt;clientoption1&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;673316896&lt;/span&gt;" &lt;span style="color:red;"&gt;clientoption2&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;128056&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;executionStack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;frame &lt;/span&gt;&lt;span style="color:red;"&gt;procname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;xxxxx.dbo.P_IC_AUDIT_LOG_I&lt;/span&gt;" &lt;span style="color:red;"&gt;line&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;40&lt;/span&gt;" &lt;span style="color:red;"&gt;stmtstart&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1822&lt;/span&gt;" &lt;span style="color:red;"&gt;stmtend&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2330&lt;/span&gt;" &lt;span style="color:red;"&gt;sqlhandle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0x03000900b0d65c591167e5001c9a00000100000000000000&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;INSERT INTO T_IC_AUDIT_LOG(&lt;br&gt;  APP_ID,&lt;br&gt;  TRANSACTION_ID ,&lt;br&gt;  [USER_NAME] ,&lt;br&gt;  LOG_FUNCTION ,&lt;br&gt;  LOG_TIME ,&lt;br&gt;  APP_VERSION &lt;br&gt; )&lt;br&gt; VALUES(&lt;br&gt;  @v_app_id,&lt;br&gt;  @p_transaction_id,&lt;br&gt;  @p_user_name ,&lt;br&gt;  @p_log_function ,&lt;br&gt;  @p_log_time ,&lt;br&gt;  @p_app_version&lt;br&gt; )     &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;frame&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;executionStack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;inputbuf&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;Proc [Database Id = 9 Object Id = 1499256496]    &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;inputbuf&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;process&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;process &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process998f28&lt;/span&gt;" &lt;span style="color:red;"&gt;taskpriority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;logused&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;936&lt;/span&gt;" &lt;span style="color:red;"&gt;waitresource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;KEY: 9:72057594137280512 (5702e611629e)&lt;/span&gt;" &lt;span style="color:red;"&gt;waittime&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;62&lt;/span&gt;" &lt;span style="color:red;"&gt;ownerId&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;485490&lt;/span&gt;" &lt;span style="color:red;"&gt;transactionname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;user_transaction&lt;/span&gt;" &lt;span style="color:red;"&gt;lasttranstarted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;XDES&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0xcc9e5e0&lt;/span&gt;" &lt;span style="color:red;"&gt;lockMode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;RangeI-N&lt;/span&gt;" &lt;span style="color:red;"&gt;schedulerid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;" &lt;span style="color:red;"&gt;kpid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2684&lt;/span&gt;" &lt;span style="color:red;"&gt;status&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;suspended&lt;/span&gt;" &lt;span style="color:red;"&gt;spid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;60&lt;/span&gt;" &lt;span style="color:red;"&gt;sbid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;ecid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;priority&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;transcount&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2&lt;/span&gt;" &lt;span style="color:red;"&gt;lastbatchstarted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;lastbatchcompleted&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2008-11-14T19:31:16.347&lt;/span&gt;" &lt;span style="color:red;"&gt;clientapp&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;.Net SqlClient Data Provider&lt;/span&gt;" &lt;span style="color:red;"&gt;hostname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;NCS-LIFENG&lt;/span&gt;" &lt;span style="color:red;"&gt;hostpid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2776&lt;/span&gt;" &lt;span style="color:red;"&gt;loginname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;test&lt;/span&gt;" &lt;span style="color:red;"&gt;isolationlevel&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;serializable (4)&lt;/span&gt;" &lt;span style="color:red;"&gt;xactid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;485490&lt;/span&gt;" &lt;span style="color:red;"&gt;currentdb&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;9&lt;/span&gt;" &lt;span style="color:red;"&gt;lockTimeout&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;4294967295&lt;/span&gt;" &lt;span style="color:red;"&gt;clientoption1&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;673316896&lt;/span&gt;" &lt;span style="color:red;"&gt;clientoption2&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;128056&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;executionStack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;frame &lt;/span&gt;&lt;span style="color:red;"&gt;procname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;xxxxx.dbo.P_IC_AUDIT_LOG_I&lt;/span&gt;" &lt;span style="color:red;"&gt;line&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;40&lt;/span&gt;" &lt;span style="color:red;"&gt;stmtstart&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1822&lt;/span&gt;" &lt;span style="color:red;"&gt;stmtend&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;2330&lt;/span&gt;" &lt;span style="color:red;"&gt;sqlhandle&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0x03000900b0d65c591167e5001c9a00000100000000000000&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;INSERT INTO T_IC_AUDIT_LOG(&lt;br&gt;  APP_ID,&lt;br&gt;  TRANSACTION_ID ,&lt;br&gt;  [USER_NAME] ,&lt;br&gt;  LOG_FUNCTION ,&lt;br&gt;  LOG_TIME ,&lt;br&gt;  APP_VERSION &lt;br&gt; )&lt;br&gt; VALUES(&lt;br&gt;  @v_app_id,&lt;br&gt;  @p_transaction_id,&lt;br&gt;  @p_user_name ,&lt;br&gt;  @p_log_function ,&lt;br&gt;  @p_log_time ,&lt;br&gt;  @p_app_version&lt;br&gt; )     &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;frame&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;executionStack&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;inputbuf&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;&lt;/span&gt;Proc [Database Id = 9 Object Id = 1499256496]    &lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;inputbuf&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;process&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;process-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;    &amp;lt;&lt;/span&gt;&lt;span&gt;resource-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;objectlock &lt;/span&gt;&lt;span style="color:red;"&gt;lockPartition&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;0&lt;/span&gt;" &lt;span style="color:red;"&gt;objid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1567500813&lt;/span&gt;" &lt;span style="color:red;"&gt;subresource&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;FULL&lt;/span&gt;" &lt;span style="color:red;"&gt;dbid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;9&lt;/span&gt;" &lt;span style="color:red;"&gt;objectname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;xxxx.dbo.T_IC_AUDIT_LOG&lt;/span&gt;" &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;lockcbc5340&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;SIX&lt;/span&gt;" &lt;span style="color:red;"&gt;associatedObjectId&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;1567500813&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;owner-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;owner &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process998f28&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;SIX&lt;/span&gt;" &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;owner-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;waiter-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;waiter &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process90aa78&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;IX&lt;/span&gt;" &lt;span style="color:red;"&gt;requestType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;convert&lt;/span&gt;" &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;waiter-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;objectlock&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;&lt;/span&gt;&lt;span&gt;keylock &lt;/span&gt;&lt;span style="color:red;"&gt;hobtid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;72057594137280512&lt;/span&gt;" &lt;span style="color:red;"&gt;dbid&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;9&lt;/span&gt;" &lt;span style="color:red;"&gt;objectname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;xxxxx.dbo.T_IC_AUDIT_LOG&lt;/span&gt;" &lt;span style="color:red;"&gt;indexname&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;C_IC_AUDIT_LOG_PK&lt;/span&gt;" &lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;lockcbc7400&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;RangeS-S&lt;/span&gt;" &lt;span style="color:red;"&gt;associatedObjectId&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;72057594137280512&lt;/span&gt;"&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;owner-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;owner &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process90aa78&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;RangeS-S&lt;/span&gt;" &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;owner-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;        &amp;lt;&lt;/span&gt;&lt;span&gt;waiter-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;          &amp;lt;&lt;/span&gt;&lt;span&gt;waiter &lt;/span&gt;&lt;span style="color:red;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;process998f28&lt;/span&gt;" &lt;span style="color:red;"&gt;mode&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;RangeI-N&lt;/span&gt;" &lt;span style="color:red;"&gt;requestType&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;"&lt;span style="color:blue;"&gt;wait&lt;/span&gt;" &lt;span style="color:blue;"&gt;/&amp;gt;&lt;br&gt;        &amp;lt;/&lt;/span&gt;&lt;span&gt;waiter-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;      &amp;lt;/&lt;/span&gt;&lt;span&gt;keylock&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;    &amp;lt;/&lt;/span&gt;&lt;span&gt;resource-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;  &amp;lt;/&lt;/span&gt;&lt;span&gt;deadlock&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br&gt;&amp;lt;/&lt;/span&gt;&lt;span&gt;deadlock-list&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;The solution to this problem is to convert the non-clustered index on the primary key to a clustered index.&amp;nbsp; This prevents the cross locking scenario, and is actually going to be better for performance since the data will then be logically stored by the clustered index key.&lt;/p&gt;

&lt;p&gt;With a clustered index, the following image should show how the deadlock is prevented.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://sqlblog.com/blogs/jonathan_kehayias/WindowsLiveWriter/AnatomyofaDeadlockPartDeux_12180/image_4.png"&gt;&lt;img src="http://sqlblog.com/blogs/jonathan_kehayias/WindowsLiveWriter/AnatomyofaDeadlockPartDeux_12180/image_thumb_1.png" style="border-width:0px;" alt="image" border="0" width="244" height="219"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;I don't currently have a reproduction of the above scenario, but I have added it to my ever growing list of things to create and post.&amp;nbsp; I am certain that I can create a demo for this problem.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;UPDATE:&lt;/p&gt;

&lt;p&gt;While finalizing this, a repost was made where the isolation level was changed, but a deadlock still occurred.&amp;nbsp; The issue is still the non-clustered index on the heap, and locking order.&amp;nbsp; Converting to a clustered index will fix the problem still.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=13976" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Deadlock/default.aspx">Deadlock</category></item><item><title>The Anatomy of a Deadlock</title><link>http://sqlblog.com/blogs/jonathan_kehayias/archive/2008/07/30/the-anatomy-of-a-deadlock.aspx</link><pubDate>Wed, 30 Jul 2008 16:50:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:13974</guid><dc:creator>Jonathan Kehayias</dc:creator><slash:comments>8</slash:comments><comments>http://sqlblog.com/blogs/jonathan_kehayias/comments/13974.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/jonathan_kehayias/commentrss.aspx?PostID=13974</wfw:commentRss><description>&lt;p&gt;A common question of the forums is "How do I stop these deadlocks?"&amp;nbsp; I wrote a small reference article on the SQL Examples Site for the forums for how to trap deadlocks using trace flags and Madhu Nair wrote an article for how to trap them with SQL Profiler:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://code.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=Troubleshoot%20Deadlocking%20in%20SQL%20Server&amp;amp;referringTitle=Home"&gt;Troubleshoot Deadlocking in SQL Server&lt;/a&gt;.     &lt;br&gt;&lt;a href="http://code.msdn.microsoft.com/SQLExamples/Wiki/View.aspx?title=Troubleshoot%20Deadlocking%20in%20SQL%20Server%202005%20using%20Profiler&amp;amp;referringTitle=Home"&gt;Troubleshoot Deadlocking in SQL Server 2005 using Profiler&lt;/a&gt;.&lt;/p&gt;      &lt;p&gt;Most people seem to understand a UPDATE/INSERT, UPDATE/DELETE, INSERT/INSERT, DELETE/DELETE deadlocks pretty well, and the books online cover them pretty good.&amp;nbsp; However, commonly I see where deadlocks occur with a INSERT/SELECT, UPDATE/SELECT, DELETE/SELECT process that is a bit more complex.&amp;nbsp; The following image should provide a bit more explanation as to what is happening with this kind of deadlock.&lt;/p&gt;&lt;p&gt;&lt;img src="http://lh4.ggpht.com/jmkehayias/SJC_Z7xgutI/AAAAAAAAACk/rHMDX0Pvj64/image%5B4%5D.png" width="534" height="450"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is a specific kind of deadlock and is caused by a nonclustered index that forces a key lookup to the clustered index.&amp;nbsp; To demonstrate this kind of structure consider the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;use &lt;/span&gt;tempdb&lt;br&gt;go&lt;br&gt;&lt;span style="color:blue;"&gt;create table &lt;/span&gt;KeyLookupDeadlock&lt;br&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;rowid &lt;span style="color:blue;"&gt;int identity primary key&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;br&gt; &lt;/span&gt;firstname &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;30&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;lastname &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;30&lt;span style="color:gray;"&gt;),&lt;br&gt; &lt;/span&gt;dateofbirth &lt;span style="color:blue;"&gt;datetime&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;br&gt; &lt;/span&gt;favoritecolor &lt;span style="color:blue;"&gt;varchar&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;))&lt;br&gt;&lt;/span&gt;go&lt;br&gt;&lt;span style="color:blue;"&gt;create nonclustered index &lt;/span&gt;ix_KeyLookupDeadlock_firstname &lt;br&gt;&lt;span style="color:blue;"&gt;on &lt;/span&gt;KeyLookupDeadLock &lt;span style="color:gray;"&gt;(&lt;/span&gt;firstname&lt;span style="color:gray;"&gt;)&lt;br&gt;&lt;/span&gt;go&lt;br&gt;&lt;span style="color:blue;"&gt;insert into &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:red;"&gt;'jon'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'kehayias'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'07/29/2008'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'blue'&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;insert into &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:red;"&gt;'mickey'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'mouse'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'07/28/2008'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'green'&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;insert into &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:red;"&gt;'minnie'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'mouse'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'07/24/2008'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'yellow'&lt;br&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;insert into &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:red;"&gt;'donald'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'duck'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'07/23/2008'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'fusia'&lt;br&gt;&lt;/span&gt;go 150000&lt;br&gt;&lt;span style="color:blue;"&gt;insert into &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;select &lt;/span&gt;&lt;span style="color:red;"&gt;'jim'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'fisher'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'07/28/2008'&lt;/span&gt;&lt;span style="color:gray;"&gt;, &lt;/span&gt;&lt;span style="color:red;"&gt;'red'&lt;br&gt;&lt;/span&gt;go&lt;br&gt;&lt;span style="color:blue;"&gt;alter index &lt;/span&gt;&lt;span style="color:gray;"&gt;all &lt;/span&gt;&lt;span style="color:blue;"&gt;on &lt;/span&gt;keylookupdeadlock &lt;span style="color:blue;"&gt;rebuild&lt;br&gt;&lt;/span&gt;go&lt;/pre&gt;

  &lt;/blockquote&gt;This will create a table that has enough rows on most systems to cause a key lookup for the following query:

&lt;br&gt;

&lt;blockquote&gt;
  &lt;span style="color:blue;"&gt;select &lt;/span&gt;firstname&lt;span style="color:gray;"&gt;, &lt;/span&gt;lastname&lt;span style="color:gray;"&gt;, &lt;/span&gt;dateofbirth&lt;span style="color:gray;"&gt;, &lt;/span&gt;favoritecolor&lt;span style="color:blue;"&gt;&lt;br&gt;from &lt;/span&gt;keylookupdeadlock&lt;span style="color:blue;"&gt;&lt;br&gt;where &lt;/span&gt;firstname &lt;span style="color:gray;"&gt;= &lt;/span&gt;&lt;span style="color:red;"&gt;'jim'&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;

  &lt;br&gt;&lt;/blockquote&gt;



&lt;p&gt;&lt;a href="http://lh4.ggpht.com/jmkehayias/SJC_afZq8AI/AAAAAAAAACs/xolrutB4oE4/image%5B8%5D.png"&gt;&lt;img src="http://lh6.ggpht.com/jmkehayias/SJC_arPjnfI/AAAAAAAAACw/cy3e1AB5mN4/image_thumb%5B4%5D.png" style="border-width:0px;" alt="image" border="0" width="812" height="334"&gt;&lt;/a&gt;&lt;/p&gt;Keeping in mind that this is an overly simplistic example, what will happen to cause the deadlock is that two SPIDS will start within microseconds of each other, one issuing the SELECT, and the other attempting to INSERT a new Row.&amp;nbsp; The SELECT immediately takes a shared lock on the NonClustered Index and the INSERT immediately takes a Exclusive Lock on the Clustered Index.&amp;nbsp; For the SELECT to complete, it will need to take a shared lock on the clustered index to get the additional columns in the SELECT list, but it will be blocked.&amp;nbsp; At the same time, to complete the INSERT operation will require an Exclusive lock on the nonclustered indexes on the table, which is incompatible with the existing shared lock held by the SELECT operation, so both processes will be blocked waiting on the other to release its lock.&amp;nbsp; This is where the deadlock occurs.



&lt;p&gt;To resolve this, the nonclustered index can be dropped and replaced with a covering index that uses the INCLUDE option to cover the query completely:&lt;/p&gt;





&lt;blockquote&gt;
  &lt;span style="color:blue;"&gt;create nonclustered index &lt;/span&gt;ix_KeyLookupDeadlock_firstname_included &lt;span style="color:blue;"&gt;&lt;br&gt;on &lt;/span&gt;KeyLookupDeadLock &lt;span style="color:gray;"&gt;(&lt;/span&gt;firstname)&lt;span style="color:blue;"&gt;&lt;br&gt;include &lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;lastname&lt;span style="color:gray;"&gt;, &lt;/span&gt;dateofbirth&lt;span style="color:gray;"&gt;, &lt;/span&gt;favoritecolor&lt;span style="color:gray;"&gt;)&lt;/span&gt;&lt;br&gt;&lt;/blockquote&gt;



&lt;p&gt;The resulting execution plan shows that the Key Lookup no longer happens, which will revent the deadlock from occuring:&lt;/p&gt;&lt;p&gt;&lt;img src="http://lh5.ggpht.com/jmkehayias/SJC_akIuvUI/AAAAAAAAAC0/PcMf2yxNz34/image%5B12%5D.png" width="640" height="261"&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;For further information on Lock compatibilities see:&lt;/p&gt;



&lt;h4&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms186396.aspx"&gt;Lock Compatibility (Database Engine)&lt;/a&gt;&lt;/h4&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=13974" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Database+Administration/default.aspx">Database Administration</category><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Deadlock/default.aspx">Deadlock</category><category domain="http://sqlblog.com/blogs/jonathan_kehayias/archive/tags/Transact-SQL/default.aspx">Transact-SQL</category></item></channel></rss>