Background
#867 / #868 shipped in v2.8.0 with a right-click context menu on the Lite Blocked Process Reports grid offering View Blocked Plan and View Blocking Plan actions. Plan lookup parses executionStack frames from the BPR XML, filters the 42-byte all-zero sql_handle placeholder, and joins sys.dm_exec_query_stats by sql_handle + statement offsets — matching sp_HumanEventsBlockViewer.
That should ship everywhere, not just Lite + blocked process reports.
Scope
Three surfaces still need the treatment:
Implementation template
- XAML:
Lite/Controls/ServerTab.xaml → BlockedProcessContextMenu
- Handlers:
Lite/Controls/ServerTab.xaml.cs → ViewBlockedSidePlan_Click / ViewBlockingSidePlan_Click
- Lookup:
Lite/Services/LocalDataService.QueryStats.cs → FetchPlanBySqlHandleAsync
Deadlock graphs differ in shape from BPR XML — processes live under <process-list> with sqlhandle, stmtstart, stmtend as attributes, plus an optional <executionStack> child. Parsing can reuse the frame-iteration approach.
Notes
- Drop "Get Actual Plan" on the deadlock menu for the same reason as BPR — re-executing a mid-transaction query that just deadlocked is a foot-gun.
- Fall back to a clear "plan no longer in cache" message when
sys.dm_exec_query_stats doesn't have the plan.
Background
#867 / #868 shipped in v2.8.0 with a right-click context menu on the Lite Blocked Process Reports grid offering View Blocked Plan and View Blocking Plan actions. Plan lookup parses
executionStackframes from the BPR XML, filters the 42-byte all-zero sql_handle placeholder, and joinssys.dm_exec_query_statsbysql_handle+ statement offsets — matchingsp_HumanEventsBlockViewer.That should ship everywhere, not just Lite + blocked process reports.
Scope
Three surfaces still need the treatment:
sql_handle+ executionStack)Implementation template
Lite/Controls/ServerTab.xaml→BlockedProcessContextMenuLite/Controls/ServerTab.xaml.cs→ViewBlockedSidePlan_Click/ViewBlockingSidePlan_ClickLite/Services/LocalDataService.QueryStats.cs→FetchPlanBySqlHandleAsyncDeadlock graphs differ in shape from BPR XML — processes live under
<process-list>withsqlhandle,stmtstart,stmtendas attributes, plus an optional<executionStack>child. Parsing can reuse the frame-iteration approach.Notes
sys.dm_exec_query_statsdoesn't have the plan.