Skip to content

Releases: erikdarlingdata/DarlingData

Updates_20260301

02 Mar 16:10
f999f02

Choose a tag to compare

March 1, 2026 Release

What's New

sp_HealthParser 3.3

  • New @skip_waits parameter to skip the wait stats section
  • New @use_ring_buffer parameter to use ring_buffer target instead of file target for faster collection

sp_PerfCheck 2.3

  • Rework and README accuracy fixes

sp_PressureDetector 6.3

  • 14 new perfmon counters
  • Filter out zero-rate perfmon counters

sp_QuickieStore 6.3

  • Expert Mode now always shows plan hashes
  • Expert Mode T-SQL for plan forcing, unforcing, hint setting, and hint removal (thanks @ReeceGoding — PR #684)
  • Expert Mode output for sys.database_automatic_tuning_configurations (thanks @ReeceGoding — issue #661)

Version Bumps

All procedures updated to x.3 / 20260301:

Procedure Version
sp_HealthParser 3.3
sp_HumanEvents 7.3
sp_HumanEventsBlockViewer 5.3
sp_IndexCleanup 2.3
sp_LogHunter 3.3
sp_PerfCheck 2.3
sp_PressureDetector 6.3
sp_QueryReproBuilder 1.3
sp_QueryStoreCleanup 1.3
sp_QuickieStore 6.3

Valentine's Day Massacre (of Bugs) 💘🐛

15 Feb 15:27

Choose a tag to compare

🎉 New Stored Procedure: sp_QueryStoreCleanup

Query Store collects a lot of noise — system DMV queries, index maintenance, statistics updates, DBCC commands — all cluttering up your Query Store and making it harder to find the queries you actually care about.

sp_QueryStoreCleanup identifies and removes duplicate and noisy queries from Query Store in any database on your server.

🔍 Text pattern matching to find system and maintenance noise
🧹 Hash-based deduplication (query_hash, plan_hash, or both)
🛡️ Queries with forced plans are always protected
📊 Report-only mode to preview before removing
⏳ Optional age filter to only remove stale queries

/* Preview what would be removed */
EXEC dbo.sp_QueryStoreCleanup
    @database_name = 'YourDatabase',
    @report_only = 1;

/* Remove the noise */
EXEC dbo.sp_QueryStoreCleanup
    @database_name = 'YourDatabase';

Full documentation: sp_QueryStoreCleanup README


🐛 32 Bug Fixes Across All 10 Stored Procedures

Two rounds of deep code review identified and fixed 32 logical bugs. Every fix was validated against SQL Server 2016, 2017, 2019, 2022, and 2025 — 50/50 installs and 50/50 executions, zero regressions.

sp_QuickieStore (5 fixes)

  • Fixed cursor skipping databases when @get_all_databases = 1 (missing FETCH NEXT/CONTINUE)
  • Fixed compile memory calculation inflated 8x (_kb columns already in KB, not pages)
  • Fixed log bytes calculation deflated ~95x (wrong divisor: 100000000 → 1048576)
  • Removed duplicate TRUNCATE statements
  • Added @@DATEFIRST warning when @workdays = 1 with unsupported regional settings

sp_PressureDetector (4 fixes)

  • Fixed missing SET LOCK_TIMEOUT -1 in @cool_new_columns = 1 branch
  • Fixed DATEDIFF divide-by-zero in perfmon total_per_second
  • Fixed sampled avg_ms_per_wait using incorrect averaging (now uses proper delta calculation)
  • Fixed @prefix NULL on Azure SQL causing query failures

sp_IndexCleanup (5 fixes)

  • Fixed LEN() trailing space trim causing off-by-one in comma-separated list truncation (switched to DATALENGTH)
  • Fixed t.max_length = -1 never matching for (max) columns (should be c.max_length)
  • Plus 3 additional fixes from prior review

sp_HumanEvents (4 fixes)

  • Fixed memory filter, CATCH cleanup, QUOTENAME schema/table handling

sp_PerfCheck (3 fixes)

  • Fixed NULL @processors causing bad detail strings
  • Fixed TOKENANDPERMUSERSTORE priority gap (BETWEEN 3 AND 5BETWEEN 2 AND 5)
  • Wrapped DMV queries in VIEW SERVER STATE guard

sp_QueryReproBuilder (2 fixes)

  • Fixed version gates from @new (SQL 2019+) to @sql_2017 for columns available since SQL 2017

sp_HumanEventsBlockViewer (2 fixes)

  • Fixed table mode XML handling and DATEADD overflow guard

sp_QueryStoreCleanup (1 fix)

  • Fixed COUNT_BIG(*) false positives → COUNT_BIG(DISTINCT) (eliminated 39% false positive rate)

sp_HealthParser (1 fix)

  • Fixed XPath inputbuf extraction

sp_LogHunter (1 fix)

  • Added archive > 0 guard

🔧 Additional Improvements

Round 2 Fixes (5 additional)

  • sp_HealthParser: Added missing N'' unicode prefix on dynamic SQL string
  • sp_HumanEventsBlockViewer: Fixed debug label mismatch (#blocking_sh#blocking_xml_sh)
  • sp_PerfCheck: GETDATE()SYSDATETIME() for uptime calculation consistency
  • sp_PressureDetector: Renamed misleading physical_reads column to logical_reads (source was der.logical_reads)
  • sp_PressureDetector: Fixed SUBSTRING start position off-by-one in debug PRINT

sp_PressureDetector

  • Filter out zero-rate perfmon counters from output

Tested on SQL Server 2016, 2017, 2019, 2022, and 2025

February 2026 Bug Fixes

06 Feb 20:31

Choose a tag to compare

Bug Fixes

This release includes bug fixes across multiple stored procedures discovered during code review.

sp_IndexCleanup (2.2.5)

  • Fixed rule prioritization for Key Duplicates of MAKE UNIQUE indexes (Rule 7.6)
  • Fixed MERGE scripts for non-compressible indexes (changed INNER JOIN to LEFT JOIN)
  • Added missing semicolons to generated scripts

sp_HumanEvents (7.2.5)

  • Fixed duplicate column name blocked_process_report in blocking output (renamed XML data column to blocked_process_report_xml)

sp_HumanEventsBlockViewer (5.2.5)

  • Version bump for consistency

sp_LogHunter (3.2.5)

  • Fixed RAISERROR format specifier mismatch (%i changed to %I64d for bigint variable)

sp_PerfCheck (2.2.5)

  • Fixed file growth calculation formula
  • Fixed COUNT_BIG to integer assignment mismatch
  • Fixed WHERE clause logic error
  • Added missing AS keyword in column alias

sp_PressureDetector (6.2.5)

  • Fixed column alias mismatch in UNION (total_avg_stall vs total_avg_stall_ms)
  • Fixed bit variable compared to string 'true' instead of 1

sp_QueryReproBuilder (1.2.5)

  • Fixed temp table #procedure_object_ids used before creation when wildcard procedure name used
  • Fixed SUBSTRING error in parameter extraction when query plans lack ParameterList XML
  • Added missing semicolon after END CATCH

sp_HealthParser (3.2.5)

  • Added table logging for blocking/deadlocks
  • Fixed data types
  • Added blocked process attributes

sp_QuickieStore (6.2.5)

  • Added total sort options

Happy New Year

28 Dec 14:52

Choose a tag to compare

  • Added @target_output parameter to sp_HumanEvents, if you want to use a file instead of the ring buffer.
  • Removed the geometry stuff from sp_QuickieStore. I haven't quite figured out how to make it work yet. Also removed some vestigial checks that are no longer required in Azure.
  • Tuned WhatsUpLocks to run less terribly when there are a lot of locks
  • Added compression type to WhatsUpIndexes
  • Added new 2025 memory pressure stuff to sp_PressureDetector and sp_PerfCheck
  • Did extensive work on sp_PerfCheck to fix a lot of stuff I was unhappy with. Difficult to list it all.
  • Did extensive work on sp_IndexCleanup to make it more reliable and less complicated.

You'll note that the version dates for these is January 15th. While I am releasing this now (early), I probably won't be back looking at this stuff until January 5th or so. Hopefully you won't either!

It's lonely out in space

12 Nov 14:38

Choose a tag to compare

What's Changed

Full Changelog: Updates_20250901...Updates_20251114

This release has a ton of tiny fixes and tweaks that I've been making to complement the training stuff I've been working on.

It also introduces a new stored procedure called sp_QueryReproBuilder, that uses Query Store data to build easy-to-execute parameterized repro queries. This is a bit of an alpha release, so please be gentle when reporting issues.

Back to School

05 Sep 16:19

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: Updates_20250601...Updates_20250901

Updates_20250601

31 May 17:56

Choose a tag to compare

What's Changed

  • sp_QuickieStore: Appended _ms where it was missing for avg_cpu_time by @ReeceGoding in #600
  • sp_QuickieStore: Moved validation of @sort_order to be much earlier on. by @ReeceGoding in #602
  • sp_QuickieStore: Moved special sorting columns for special sort order values to be jus… by @ReeceGoding in #604
  • sp_QuickieStore: Made plan hash, query hash, or sql handle show when the parameter for filtering them out is passed in by @ReeceGoding in #608
  • sp_QuickieStore: Documents that @format_output = 1 removes most decimals. by @ReeceGoding in #606
  • Adding support for indexed views in addition to indexes on tables. by @FirstCall42 in #610
  • sp_QuickieStore: Move regression validation to just after sort order by @ReeceGoding in #612
  • Made sp_HumanEventsBlockViewer not error out when system_health is used by @ReeceGoding in #618

Full Changelog: Updates_20250501...Updates_20250601

May Flowers

02 May 17:09

Choose a tag to compare

What's Changed

  • fix for 00 decimals on avg_read/write_stall_ms and total_avg_stall_ms by @VladDBA in #567
  • sp_QuickieStore's Readme.md file - Markdown needs the escape character escaped by @VladDBA in #572
  • sp_QuickieStore: Consistent PRIMARY KEY syntax. by @ReeceGoding in #578
  • sp_QuickieStore: Made skipping maintenance plans optional by @ReeceGoding in #580
  • Expand wait_time_percent_of_uptime to accomodate >1,000% waits by @ChrisMayIVCE in #585
  • sp_QuickieStore: Multiple changes to how wait stats are handled by @ReeceGoding in #590
  • Made filtering by @execution_count be done with a temp table rather than a variable by @ReeceGoding in #593

New Contributors

Full Changelog: Updates_20240404...Updates_20250501

4.4 @ 4:44

04 Apr 18:00

Choose a tag to compare

This release fixes a bunch of stuff that I found in deeper testing across different environments.

It also introduces a new stored procedure called sp_PerfCheck, which does a targeted set of checks for performance-related stuff only. No backups, no checkdb, no security, etc. It's built to work with Azure SQLDB too, which is... I guess sort of helpful, given how little you can change while running SQL Server in Safe Mode. I will be adding more specific checks for cloudy things in the future.

For now, check out the readme to learn more.

Also, give it a run. Let me know what you think. I care about your feelings.

What's Changed

New Contributors

Full Changelog: Updates_20250401...Updates_20240404

Sweet Caroline!

19 Mar 20:52

Choose a tag to compare

What's Changed

  • changed column name to remove duplicate by @DForck42 in #509
  • added QUOTENAME to the output of the 'original_index_definition' colu… by @HannahVernon in #529
  • added note about index_count column to the README.md by @HannahVernon in #530

There's no way to quickly or easily summarize this many changes, but:

sp_HealthParser:

  • Added new event collections around errors, memory, and more cpu stuff
  • Added the ability to log to tables
  • Removed a lot of repetitive code by templating dynamic sql

sp_HumanEventsBlockViewer:

  • Added the ability to log to a table. I know it's somewhat redundant to sp_HumanEvents, but it focuses purely on blocking and uses the final results from here rather than somewhat raw data with a view over it
  • Added the ability to read from a table storing the blocked process report in an XML column

sp_PressureDetector

  • Added table logging

sp_QuickieStore:

  • Made the results query far less repetitive, no longer broken up over four sections of annoying to maintain code
  • Pushed @include_query_hashes data deeper into the procedure so it's not just based on the results

AND THE BIG ONE!

sp_IndexCleanup

  • No longer in beta!
  • Reasonably functional, but still needs testing

Also fixed up some annoying formatting inconsistencies, etc. in various places.

New Contributors

Full Changelog: Updates_20250101...Updates_20250401