diff --git a/sp_BlitzLock.sql b/sp_BlitzLock.sql index e3f33d89..e0921b47 100644 --- a/sp_BlitzLock.sql +++ b/sp_BlitzLock.sql @@ -1585,7 +1585,9 @@ BEGIN dp.id, dp.event_date, proc_name = ca.dp.value('@procname', 'nvarchar(1024)'), - sql_handle = ca.dp.value('@sqlhandle', 'nvarchar(131)') + sql_handle = ca.dp.value('@sqlhandle', 'nvarchar(131)'), + stmtstart = ca.dp.value('@stmtstart', 'nvarchar(131)'), + stmtend = ca.dp.value('@stmtend', 'nvarchar(131)') INTO #deadlock_stack FROM #deadlock_process AS dp CROSS APPLY dp.process_xml.nodes('//executionStack/frame') AS ca(dp) @@ -4140,11 +4142,12 @@ BEGIN ds.proc_name, sql_handle = CONVERT(varbinary(64), ds.sql_handle, 1), + ds.stmtstart, + ds.stmtend, dow.database_name, dow.database_id, - dow.object_name, query_xml = - TRY_CAST(dr.query_xml AS nvarchar(MAX)) + MAX(TRY_CAST(dr.query_xml AS nvarchar(MAX))) INTO #available_plans FROM #deadlock_stack AS ds JOIN #deadlock_owner_waiter AS dow @@ -4153,6 +4156,13 @@ BEGIN JOIN #deadlock_results AS dr ON dr.id = ds.id AND dr.event_date = ds.event_date + GROUP BY + ds.proc_name, + CONVERT(varbinary(64), ds.sql_handle, 1), + ds.stmtstart, + ds.stmtend, + dow.database_name, + dow.database_id OPTION(RECOMPILE); SELECT @@ -4306,6 +4316,8 @@ BEGIN ) AS deps WHERE deqs.sql_handle = ap.sql_handle AND deps.dbid = ap.database_id + AND deqs.statement_start_offset = ap.stmtstart + AND deqs.statement_end_offset = ap.stmtend ) AS c ) AS ap WHERE ap.query_plan IS NOT NULL