github erikdarlingdata/PerformanceMonitor v2.8.0
v2.8.0 - Having A Nice Time©️

latest releases: nightly, v3.4.0, v3.3.0...
3 months ago

Welcome friends to another release!

I do hope you're enjoying these as much as I am. Providing the SQL Server community with a high quality, free, and easy to use monitoring tool has not made me rich beyond my mildest dreams, but it has been fun.

The last week gave me an opportunity to add some new stuff, and scrutinize the code a little bit more closely for weird issues that I would occasionally notice. Hopefully never to be noticed again, and all that.

As always, if you run into anything, file an issue on GitHub.

Likewise, there are a few open issues that have the Help Wanted sign on them, if you feel like contributing code.

Highlights

Faster Dashboard grids on large installations

New nonclustered indexes on collect.query_stats, procedure_stats, and query_store_data eliminate the Eager Index Spool that previously formed against the entire table when Dashboard looked up query/procedure/plan details. On big installations that spool could take minutes. The upgrade script uses ONLINE = ON on Enterprise/Developer/Azure editions and falls back to offline on Standard/Web. (#835)

Memory Pressure Events in Lite

The memory pressure events collector, chart, and get_memory_pressure_events MCP tool that previously lived only in the Full Edition now ship in Lite. Same RING_BUFFER_RESOURCE_MONITOR data source, same interpretation guidance for LLMs, 5-minute default cadence. (#865)

Grid auto-scrolling

Lite and Dashboard grids now auto-scroll when the mouse approaches the edges during drag or scrub. Community contribution from @ClaudioESSilva. (#843)

Azure SQL DB collector hardening

Several fixes rolled up under #857 for Azure SQL Database targets:

  • Single-database fallback when master is inaccessible (elastic pools, contained users)
  • Query snapshots scoped to the current database
  • Snapshot requests pre-filtered into #temp before joining DMVs — works around Azure-specific plan blow-ups
  • Live query plans skipped gracefully instead of erroring
  • memory_stats collector drops sys.dm_os_schedulers which elastic-pool contained users cannot query
  • Non-transient permission denials now stop the collector retry loop instead of hammering forever

Webhook URL encryption (Dashboard)

Dashboard webhook URLs are now stored via DPAPI in Windows Credential Manager instead of plaintext settings. Existing plaintext entries are migrated on first Settings open. Lite webhook URLs remain in plaintext for now — parity port is tracked separately.

Performance polish

  • Query/Procedure/Query Store stats refactored to a phased DECOMPRESS approach and capped to TOP 500 results
  • Server tabs lazy-load — only the visible tab is populated at startup; others load on first open
  • DuckDB query paths parameterized, escape-hardened, and the IsArchiving race fixed
  • Lite chart axes and sub-tab styling polished, then ported to Dashboard

Other notable fixes

  • Memory Pressure Events chart filter no longer drops valid rows (#865)
  • FinOps recommendation severity sort order in Lite and Dashboard (#872)
  • Overview crosshair no longer disappears after tab switches or layout passes
  • Blocked process report plan lookup returns the correct plan (#867)
  • FinOps TDE recommendation no longer flagged on SQL Server 2019+ where TDE is free on Standard (#854)

See CHANGELOG.md for the complete list.

Don't miss a new PerformanceMonitor release

NewReleases is sending notifications on new releases.