From 0d8868f68cbebd9aa1d683d7c2537ab633b8dbfd Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:20:29 -0500 Subject: [PATCH] Add RESTORING database filter to waiting_tasks collector (#430) The waiting_tasks collector joins sys.databases without filtering d.state = 0 (ONLINE), which means sessions running in the context of a RESTORING database (mirroring passive/AG secondary) can pass through to sys.dm_exec_sql_text and sys.dm_exec_text_query_plan. While the dumps in #430 turned out to be an internal SQL Server 2016 background thread crash (not our collector), this hardens the waiting_tasks collector to match the pattern already used in query_stats, procedure_stats, query_store, and file_io_stats collectors (PR #385). Co-Authored-By: Claude Opus 4.6 --- install/37_collect_waiting_tasks.sql | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/37_collect_waiting_tasks.sql b/install/37_collect_waiting_tasks.sql index 34b0ecf..e7564d8 100644 --- a/install/37_collect_waiting_tasks.sql +++ b/install/37_collect_waiting_tasks.sql @@ -163,7 +163,8 @@ BEGIN LEFT JOIN sys.dm_exec_requests AS der ON der.session_id = wt.session_id LEFT JOIN sys.databases AS d - ON d.database_id = der.database_id + ON d.database_id = der.database_id + AND d.state = 0 /*ONLINE only — skip RESTORING databases (mirroring/AG secondary)*/ OUTER APPLY sys.dm_exec_sql_text(der.sql_handle) AS dest OUTER APPLY sys.dm_exec_text_query_plan (