Read committed Snapshot enabled in DB level.
SQL SERVER 2008 r2 sp2 64bit
I need to find a solution to resolve this . Previously i added a non-cluster index to resolve some of the deadlock problem cause by the page lock . But for these one, i try but the deadlock still re-occur .
i have the deadlock graph capture as below:
<deadlock-list><deadlock victim="process4821dc8">
<process-list>
<process id="process4821dc8" taskpriority="0" logused="856" waitresource="KEY: 5:72057594043760640 (300adbd885f3)" waittime="36855" ownerId="93184769" transactionname="user_transaction" lasttranstarted="2013-11-26T20:23:24.017" XDES="0xdf5333c0" lockMode="U" schedulerid="1" kpid="10920" status="suspended" spid="100" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-11-26T20:23:24.060" lastbatchcompleted="2013-11-26T20:23:24.053" clientapp=".Net SqlClient Data Provider" hostname="server123" hostpid="8716" loginname="ABCtestuser" isolationlevel="read committed (2)" xactid="93184769" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="2360" sqlhandle="0x0200000059172f07eebcd1886d749ed22561849457261697">
UPDATE [ABC_itemheader] SET [itm_BagNo] = @p1, [itm_CurrentStageID] = @p2, [itm_LastUpdatedDate] = @p3, [itm_TimeStamp] = @p4, [itm_Baglevel] = @p5, [itm_Remarks] = @p6 WHERE (([itm_AutoID] = @p7) AND ([itm_ItmType] = @p8) AND ([itm_Tracking_No] = @p9) AND ([itm_OrderDate] = @p10) AND ([itm_PickUpDate] = @p11) AND ([itm_OriginBranchID] = @p12) AND ([itm_OriginHubID] = @p13) AND ([itm_DestinationHubID] = @p14) AND ([itm_DestinationBranchID] = @p15) AND ((@p16 = 1 AND [itm_NextDestination] IS NULL) OR ([itm_NextDestination] = @p17)) AND ([itm_CustomerID] = @p18) AND ([itm_CustomerAccountNo] = @p19) AND ((@p20 = 1 AND [itm_ShipmentTypeID] IS NULL) OR ([itm_ShipmentTypeID] = @p21)) AND ((@p22 = 1 AND [itm_BagNo] IS NULL) OR ([itm_BagNo] = @p23)) AND ([itm_Quantity] = @p24) AND ((@p25 = 1 AND [itm_TotalWt] IS NULL) OR ([itm_TotalWt] = @p26)) AND ([itm_initialQty] = @p27) AND ((@p28 = 1 AND [itm_initialWt] IS NULL) OR ([itm_initialWt] = @p29)) AND ((@p30 = 1 AND [itm_L] IS NULL) OR ([itm_L] = @p31)) AND ((@p32 = 1 </frame>
<frame procname="unknown" line="1" sqlhandle="0x000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@p1 varchar(8000),@p2 varchar(3),@p3 datetime,@p4 int,@p5 int,@p6 nvarchar(4000),@p7 int,@p8 varchar(1),@p9 varchar(11),@p10 datetime,@p11 datetime,@p12 varchar(7),@p13 varchar(7),@p14 varchar(7),@p15 varchar(7),@p16 int,@p17 varchar(7),@p18 varchar(7),@p19 varchar(5),@p20 int,@p21 varchar(7),@p22 int,@p23 varchar(17),@p24 int,@p25 int,@p26 decimal(10,5),@p27 int,@p28 int,@p29 decimal(10,5),@p30 int,@p31 decimal(7,2),@p32 int,@p33 decimal(7,2),@p34 int,@p35 decimal(7,2),@p36 int,@p37 varchar(8000),@p38 int,@p39 varchar(8000),@p40 int,@p41 nvarchar(1),@p42 int,@p43 nvarchar(4000),@p44 int,@p45 nvarchar(7),@p46 int,@p47 nvarchar(10),@p48 int,@p49 nvarchar(84),@p50 int,@p51 nvarchar(6),@p52 int,@p53 nvarchar(6),@p54 int,@p55 varchar(8000),@p56 int,@p57 datetime,@p58 int,@p59 bit,@p60 int,@p61 bit,@p62 varchar(3),@p63 varchar(16),@p64 datetime,@p65 bit,@p66 int,@p67 varchar(15),@p68 int,@p69 datetime,@p70 int,@p71 int,@p72 nvarchar(4000),@p73 int,@p74 int,@p75 int,@p76 char(1),@p77 int,@p78 decimal(18,3),@p79 i </inputbuf>
</process>
<process id="process4dcf708" taskpriority="0" logused="48204" waitresource="KEY: 5:72057594044350464 (300adbd885f3)" waittime="1503" ownerId="93180162" transactionname="user_transaction" lasttranstarted="2013-11-26T20:23:06.313" XDES="0x1bd1f33c0" lockMode="U" schedulerid="4" kpid="10468" status="suspended" spid="116" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-11-26T20:23:59.420" lastbatchcompleted="2013-11-26T20:23:59.407" clientapp=".Net SqlClient Data Provider" hostname="server123" hostpid="8716" loginname="ABCtestuser" isolationlevel="read committed (2)" xactid="93180162" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
<executionStack>
<frame procname="adhoc" line="1" stmtstart="420" sqlhandle="0x020000005d09b41e3e3a6472599e8304fd7446b3c3d9ae0a">
UPDATE [ABC_PreAlert] SET [prt_Statuscode] = @p1 WHERE (([prt_AutoID] = @p2) AND ([prt_TrackingNo] = @p3) AND ([prt_originbranchID] = @p4) AND ([prt_OriginHubID] = @p5) AND ([prt_DestinationHubID] = @p6) AND ([prt_DestinationBranchId] = @p7) AND ([prt_Statuscode] = @p8) AND ((@p9 = 1 AND [prt_CurrentLocation] IS NULL) OR ([prt_CurrentLocation] = @p10)) AND ((@p11 = 1 AND [prt_NextLocation] IS NULL) OR ([prt_NextLocation] = @p12)) AND ((@p13 = 1 AND [prt_BagNumber] IS NULL) OR ([prt_BagNumber] = @p14)) AND ((@p15 = 1 AND [prt_Baglevel] IS NULL) OR ([prt_Baglevel] = @p16))) </frame>
<frame procname="unknown" line="1" sqlhandle="0x000000000000000000000000000000000000000000000000">
unknown </frame>
</executionStack>
<inputbuf>
(@p1 varchar(3),@p2 int,@p3 varchar(11),@p4 varchar(7),@p5 varchar(7),@p6 varchar(7),@p7 varchar(7),@p8 varchar(3),@p9 int,@p10 varchar(7),@p11 int,@p12 varchar(7),@p13 int,@p14 varchar(8000),@p15 int,@p16 int)UPDATE [ABC_PreAlert] SET [prt_Statuscode] = @p1 WHERE (([prt_AutoID] = @p2) AND ([prt_TrackingNo] = @p3) AND ([prt_originbranchID] = @p4) AND ([prt_OriginHubID] = @p5) AND ([prt_DestinationHubID] = @p6) AND ([prt_DestinationBranchId] = @p7) AND ([prt_Statuscode] = @p8) AND ((@p9 = 1 AND [prt_CurrentLocation] IS NULL) OR ([prt_CurrentLocation] = @p10)) AND ((@p11 = 1 AND [prt_NextLocation] IS NULL) OR ([prt_NextLocation] = @p12)) AND ((@p13 = 1 AND [prt_BagNumber] IS NULL) OR ([prt_BagNumber] = @p14)) AND ((@p15 = 1 AND [prt_Baglevel] IS NULL) OR ([prt_Baglevel] = @p16))) </inputbuf>
</process>
</process-list>
<resource-list>
<keylock hobtid="72057594043760640" dbid="5" objectname="ABCtestLIVE.dbo.ABC_ItemHeader" indexname="PK_ABC_itemheader" id="lockcaa70480" mode="X" associatedObjectId="72057594043760640">
<owner-list>
<owner id="process4dcf708" mode="X"/>
</owner-list>
<waiter-list>
<waiter id="process4821dc8" mode="U" requestType="wait"/>
</waiter-list>
</keylock>
<keylock hobtid="72057594044350464" dbid="5" objectname="ABCtestLIVE.dbo.ABC_PreAlert" indexname="PK_ABC_PreAlert" id="lock8fba2e80" mode="X" associatedObjectId="72057594044350464">
<owner-list>
<owner id="process4821dc8" mode="X"/>
</owner-list>
<waiter-list>
<waiter id="process4dcf708" mode="U" requestType="wait"/>
</waiter-list>
</keylock>
</resource-list>
</deadlock>
</deadlock-list>