Problem
Several diagnostic sub-checks report their own failures only to the console (RAISERROR), or not at all: the per-database forced-plan probe swallows errors fully silently (which would also hide a syntax error in its dynamic SQL), and two other checks note failures only under debug mode. The multi-server PowerShell wrapper consumes result sets via SqlDataAdapter and does not capture info messages — so in fleet reports a broken check is indistinguishable from a clean check.
Fix
On sub-check failure, insert an INFO/WARNING row into the recommendations result set (check name + error text) so the degradation travels with the report. "Errors are findings" — a fleet report with one broken check should say so in-band.
Problem
Several diagnostic sub-checks report their own failures only to the console (RAISERROR), or not at all: the per-database forced-plan probe swallows errors fully silently (which would also hide a syntax error in its dynamic SQL), and two other checks note failures only under debug mode. The multi-server PowerShell wrapper consumes result sets via SqlDataAdapter and does not capture info messages — so in fleet reports a broken check is indistinguishable from a clean check.
Fix
On sub-check failure, insert an INFO/WARNING row into the recommendations result set (check name + error text) so the degradation travels with the report. "Errors are findings" — a fleet report with one broken check should say so in-band.