@@ -1635,7 +1635,9 @@ BEGIN
16351635 dp .id ,
16361636 dp .event_date ,
16371637 proc_name = ca .dp .value(' @procname' , ' nvarchar(1024)' ),
1638- sql_handle = ca .dp .value(' @sqlhandle' , ' nvarchar(131)' )
1638+ sql_handle = ca .dp .value(' @sqlhandle' , ' nvarchar(131)' ),
1639+ stmtstart = ca .dp .value(' @stmtstart' , ' int' ),
1640+ stmtend = ca .dp .value(' @stmtend' , ' int' )
16391641 INTO # deadlock_stack
16401642 FROM # deadlock_process AS dp
16411643 CROSS APPLY dp .process_xml .nodes(' //executionStack/frame' ) AS ca(dp)
@@ -4194,11 +4196,12 @@ BEGIN
41944196 ds .proc_name ,
41954197 sql_handle =
41964198 CONVERT (varbinary(64 ), ds .sql_handle , 1 ),
4199+ ds .stmtstart ,
4200+ ds .stmtend ,
41974201 dow .database_name ,
41984202 dow .database_id ,
4199- dow .object_name ,
42004203 query_xml =
4201- TRY_CAST(dr .query_xml AS nvarchar(MAX))
4204+ MAX ( TRY_CAST(dr .query_xml AS nvarchar(MAX) ))
42024205 INTO # available_plans
42034206 FROM # deadlock_stack AS ds
42044207 JOIN # deadlock_owner_waiter AS dow
@@ -4207,6 +4210,13 @@ BEGIN
42074210 JOIN # deadlock_results AS dr
42084211 ON dr .id = ds .id
42094212 AND dr .event_date = ds .event_date
4213+ GROUP BY
4214+ ds .proc_name ,
4215+ CONVERT (varbinary(64 ), ds .sql_handle , 1 ),
4216+ ds .stmtstart ,
4217+ ds .stmtend ,
4218+ dow .database_name ,
4219+ dow .database_id
42104220 OPTION(RECOMPILE);
42114221
42124222 SELECT
@@ -4360,6 +4370,8 @@ BEGIN
43604370 ) AS deps
43614371 WHERE deqs .sql_handle = ap .sql_handle
43624372 AND deps .dbid = ap .database_id
4373+ AND (ap .stmtstart IS NULL OR deqs .statement_start_offset = ap .stmtstart )
4374+ AND (ap .stmtend IS NULL OR deqs .statement_end_offset = ap .stmtend )
43634375 ) AS c
43644376 ) AS ap
43654377 WHERE ap .query_plan IS NOT NULL
0 commit comments