From 247a446af966b6cd6c785ff9bdf7d284aca40def Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Thu, 12 Mar 2026 14:03:45 -0400 Subject: [PATCH] Fix SQL dumps on mirroring passive servers from FinOps collectors (#535) The database_size_stats and server_properties collectors iterate databases with cursor-based dynamic SQL. On mirroring passive servers, RESTORING databases must be excluded to prevent severity 22 engine crashes (same root cause as #384 and #430). - database_size_stats: Change state_desc filter to d.state = 0 - server_properties: Change state_desc filter to d.state = 0, add HAS_DBACCESS() check (was missing entirely) Fixes #535 Co-Authored-By: Claude Opus 4.6 --- install/52_collect_database_size_stats.sql | 2 +- install/53_collect_server_properties.sql | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/install/52_collect_database_size_stats.sql b/install/52_collect_database_size_stats.sql index d65158d..ffadf54 100644 --- a/install/52_collect_database_size_stats.sql +++ b/install/52_collect_database_size_stats.sql @@ -176,7 +176,7 @@ BEGIN d.name, d.database_id FROM sys.databases AS d - WHERE d.state_desc = N'ONLINE' + WHERE d.state = 0 /*ONLINE only — skip RESTORING databases (mirroring/AG secondary)*/ AND d.database_id > 0 AND HAS_DBACCESS(d.name) = 1 ORDER BY diff --git a/install/53_collect_server_properties.sql b/install/53_collect_server_properties.sql index 6bdce6f..fb1b1c2 100644 --- a/install/53_collect_server_properties.sql +++ b/install/53_collect_server_properties.sql @@ -133,8 +133,9 @@ BEGIN SELECT d.name FROM sys.databases AS d - WHERE d.state_desc = N'ONLINE' + WHERE d.state = 0 /*ONLINE only — skip RESTORING databases (mirroring/AG secondary)*/ AND d.database_id > 4 /*Skip system databases*/ + AND HAS_DBACCESS(d.name) = 1 ORDER BY d.database_id;