From 6d389de64c3142dfc40bd7f4a55c7f50ebe67bf9 Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Tue, 5 May 2026 11:20:15 -0400 Subject: [PATCH] Honor collector_database_exclusions in trace collectors (#887 follow-up) PR #905 wired config.collector_database_exclusions into the 8 collectors that iterate sys.databases, but missed default_trace_collector and trace_analysis_collector because they filter trace events by DatabaseID/DatabaseName rather than looping sys.databases. - 29_collect_default_trace.sql: NOT EXISTS against config.collector_database_exclusions joined to sys.databases to translate the exclusion list (by name) into ids matching ft.DatabaseID. - 31_collect_trace_analysis.sql: NOT EXISTS directly on trc.DatabaseName (trace exposes the name here). Co-Authored-By: Claude Opus 4.7 (1M context) --- install/29_collect_default_trace.sql | 9 +++++++++ install/31_collect_trace_analysis.sql | 7 +++++++ 2 files changed, 16 insertions(+) diff --git a/install/29_collect_default_trace.sql b/install/29_collect_default_trace.sql index 9760fab6..b23f8b5e 100644 --- a/install/29_collect_default_trace.sql +++ b/install/29_collect_default_trace.sql @@ -369,6 +369,15 @@ BEGIN AND ft.StartTime >= @cutoff_time AND ISNULL(ft.DatabaseID, 0) NOT IN (DB_ID(N'PerformanceMonitor'), 1, 3, 4) AND ISNULL(ft.DatabaseID, 0) < 32761 /*exclude contained AG system databases*/ + AND NOT EXISTS + ( + SELECT + 1/0 + FROM config.collector_database_exclusions AS e + JOIN sys.databases AS d + ON d.name = e.database_name + WHERE d.database_id = ISNULL(ft.DatabaseID, 0) + ) /* Filter for useful system events, excluding login failures */ diff --git a/install/31_collect_trace_analysis.sql b/install/31_collect_trace_analysis.sql index 58b998ec..f934b32e 100644 --- a/install/31_collect_trace_analysis.sql +++ b/install/31_collect_trace_analysis.sql @@ -284,6 +284,13 @@ BEGIN AND trc.DatabaseName NOT IN (N'master', N'msdb', N'model', N'tempdb', N'PerformanceMonitor') AND trc.DatabaseName NOT LIKE N'%[_]master' /*exclude contained AG system databases*/ AND trc.DatabaseName NOT LIKE N'%[_]msdb' /*exclude contained AG system databases*/ + AND NOT EXISTS + ( + SELECT + 1/0 + FROM config.collector_database_exclusions AS e + WHERE e.database_name = trc.DatabaseName + ) ORDER BY trc.StartTime DESC;