Skip to content

2026-07-08: The First Responder Kit 2026

Latest

Choose a tag to compare

@BrentOzar BrentOzar released this 08 Jul 12:30
7562068

From now on, I'm going to be releasing annual versions of the First Responder Kit, starting with this one, which I'm calling the First Responder Kit 2026.

I'll still release more frequently on Github, but I won't be blogging about it here. I want to make it easier for folks who don't update that often. I'm also going to be syncing my classes up with the annual releases - for example, my new 2026 classes all show the FRK 2026 release features, along with SQL Server 2025 and the latest stuff in Azure and Amazon RDS.

To get the new version:

sp_Blitz Changes

  • Enhancement: add Azure SQL DB compatibility. The goal isn't to replicate 100% of sp_Blitz's checks - for example, we don't need to worry about backups - but just to skip the things that we can't check or don't matter, and check the things that are easy to check and do matter. This does involve a breaking change: sp_Blitz absolutely requires Aaron Bertrand's sp_ineachdb now (which lives in this repo), the open source replacement for sp_MSforeachdb, which isn't supported or documented. (#3952, #3953)
  • Enhancement: on "Fill Factor Changed" warning, add total size of objects impacted, and only warn if the total is over 20MB. (#3909)
  • Enhancement: on "Foreign Keys Not Trusted" warning, add the number of foreign keys affected. (#3911)
  • Enhancement: replace sp_MSforeachdb calls with sp_ineachdb in an effort to reach Azure SQL DB compatibility. (#3949)
  • Fix: ignore non-default settings for "version high part of SQL Server" and "version low part of SQL Server" because they're not set correctly by SQL Server. (#3905)
  • Fix: tweak TempDB high number of files thresholds to be more relevant for large systems. (#3907)
  • Fix: tighten up the text details for the "Non-Default Server Config" warning to make it easier to read on low resolutions. (#3913)
  • Fix: remove outdated-script warnings for deprecated FRK components. (#3915)
  • Fix: error on comparison of tempdb data files vs cores. (#4007, thanks CADelete.)
  • Fix: remove false alerm about non-default server config options for version numbers. (#4022, thanks Steve Earle.)

sp_BlitzBackups Changes

  • Enhancement: more/better checks for backups to NUL devices. (#3959, thanks Vlad Drumea.)
  • Enhancement: checks are now prioritized. (#3963, thanks Vlad Drumea.)
  • Enhancement: added help output for columns. (#3985, thanks Vlad Drumea.)
  • Fix: checks 7 and 12 now honor the @HoursBack input parameter instead of being hard-coded to 30 days. (#3962)
  • Fix: improved advice about large differential and log backups. (#3969, thanks Vlad Drumea.)
  • Fix: check 11 about flipping from full to simple wasn't alerting. (#3973, thanks Vlad Drumea.)

sp_BlitzCache Changes

  • Enhancement: faster performance by skipping a pass of sys.dm_exec_query_stats. (#3939)
  • Enhancement: make @SlowlySearchPlansFor run faster with less CPU by sourcing data from system.dm_exec_text_query_plan. (#3936)
  • Enhancement: AI prompts are built separately for parent batches (like procs) with multiple statements, and for single statements inside that batch, so that you can tune either one individually. (#3995)
  • Enhancement: AI prompt token minimizer to avoid sending irrelevant details about query plans like estimated cost percentages. (#3862)
  • Fix: typos in this, plus sp_BlitzAnalysis, sp_BlitzLock, sp_DatabaseRestore. (#3967, thanks Sebastian Peters)
  • Fix: case sensitivity error in AI constitution building. (#3984, thanks sm8680.)
  • Fix: renamed "Is Paul White Electric?" warning to "Switch Operator" instead. (#4003)
  • Fix: @ai = 2 would produce an error if a query plan had a NUL byte (0x0000), which is illegal in XML. (#4005, thanks Erich2026.)

sp_BlitzFirst Changes

  • Enhancement: add warning for approaching max possible thread time. (#3917)
  • Enhancement: add more details about where high numbers of connections are coming from. (#3903)
  • Enhancement: if @expertmode = 3, run sp_BlitzWho @onlyproblems = 1. (#3941)
  • Enhancement: instead of doing lots of single-row inserts into ##WaitCategories and #PerfmonCounters, do single multi-value inserts. (#3945, #3947)
  • Enhancement: added @EmergencyMode = 1 switch, defaults to 1, to skip slow, less-urgent checks. Right now it's only skipping the stats-updated-recently check. (#4011, thanks Reece Goding.)
  • Fix: lower the priority on the In-Memory OLTP findings down to 210 if only TempDB is using In-Memory OLTP, not user databases. (#3922)

sp_BlitzIndex Changes

  • Enhancement: new warning for columnstore indexes created pre-2022 that need to be rebuilt in order to get predicate pushdown. (#3964)
  • Enhancement: in the columnstore rowgroup/segment visualization, better representation of dates, strings, guids, and other datatypes on SQL Server 2022+. (#3966)
  • Enhancement: when calling @ai, the generated prompt now includes information about the database server version/edition for better index creation options like online, wait at low priority, etc. (#3978, thanks Kit Brower.)
  • Enhancement: the "Optimized for Sequential Keys" check 121 now reports the specific index rather than the table, which helps when multiple indexes on the same table have different settings. (#3987, thanks Reece Goding.)
  • Enhancement: output the OPTIMIZE_FOR_SEQUENTIAL_KEY setting when reporting on page latch statistics. (#3989 and #3991, thanks Reece Goding.)
  • Enhancement: stored proc missing index results now roll up all recommended indexes from all statements. (#3993)
  • Fix: sp_BlitzIndex would hang if it tried to run in a database where the calling user didn't have access, due to a SQL Server engine bug involving infinite recompiles. (#3981, thanks Erik Darling.)
  • Fix: "ambiguous column name" warning in @mode = 4. (#3957, thanks hanyhelmy78.)
  • Fix: the @ThresholdMB parameter was not being consistently applied. It's now consistently honored for single-database calls of @mode = 2 and @mode = 4. If you ask for @GetAllDatabases = 1, though, it's ignored by design. (#3934)
  • Fix: change heap size warnings to be more relevant with modern database sizes. Large is >10GB, Medium is 1-10GB, Small is <1GB, and the minimum threshold is now 1MB. (#3924)
  • Fix: don't warn about "Cascading Updates or Deletes" on tables with 0 writes. (#3928)
  • Fix: don't warn about "Unindexed Foreign Keys" on tables with 0 reads. (#3930)
  • Fix: don't warn about "High Ratio of Nulls" on tables with 0 rows or or less than @ThresholdMB of space. (#3932)
  • Fix: incorrect percentage and sizes reported on "Over-Indexing: More Than 5 Percent NC Indexes Are Unused" warning. (#3926)

sp_BlitzLock Changes

  • Enhancement: add new finding to rank all queries by deadlock involvement. (#3899, thanks Erik Darling.)
  • Enhancement: add @skip_execution_plans parameter. (#4013, thanks Erik Darling.)
  • Enhancement: point More Info query at sp_QuickieStore rather than the deprecated sp_BlitzQueryStore. (#4010, thanks Jeff Belina.)
  • Fix: possibly ambiguous internal variable setting. (#4000)

sp_BlitzPlanCompare - New!

This is in a new OptionalScripts folder, and isn't part of the normal Install-All-Scripts.sql installation file. Stay tuned for an upcoming blog post on how it works.

sp_BlitzUpdate - New!

This is also in the OptionalScripts folder, and isn't part of the normal Install-All-Scripts.sql installation file.

I use cloud VM templates for my training classes, and I wanted an easy way to automatically install the latest First Responder Kit into those VMs whenever they start up for the first time. This new sp_BlitzUpdate uses SQL Server 2025's ability to use sp_invoke_external_rest_endpoint to call Github, fetch the Install-All-Scripts.sql code, and install it. I call it via a SQL Agent startup job, so whenever SQL Server starts, it gets the latest version.

This probably isn't a good idea for you, dear reader, because you don't really wanna be directly grabbing code from the Internet and installing it on your SQL Servers. That's how supply chain attacks happen. But for those of you who need that kind of thing (or you want to do something similar with your own repos), there you go, you're welcome. (#3997)

It does have a @Branch parameter, and while you can call it with @Branch = 'dev', that still fetches the Install-All-Scripts.sql file, which only gets updated for releases. At some point in the near future, I'd like to set up Copilot or Claude to automatically generate that file with each merge request on the dev branch, but I'm not doing that yet.

sp_BlitzWho Changes

  • Enhancement: new @onlyproblems = 1 parameter that only shows sessions matching the below: (#3941)
    • Are blocking other queries
    • Are blocked by other queries
    • Are waiting on something (the wait_info column is currently populated)
    • Have an open transaction and are sleeping
    • Have been running >= 30 seconds

sp_DatabaseRestore Changes

  • Enhancement: added @FileExtensionBak parameter so if you're doing security by obscurity, changing backup file extensions, it'll still work. (#3975, thanks Umbio.)
  • Enhancement: reduce SQL injection risks. (#3980)
  • Fix: differential backups that weren't striped across multiple files were being skipped. This was a regression introduced by a recent improvement to handle striped diffs. (#4019, thanks Tamil Selvan.)

sp_ineachdb Changes

  • Enhancement: Azure SQL DB compatibility. Simply runs the passed-in query in the current database after stripping out commonly-used [?] parameters to convert to 2-part names. (#3943)

sp_kill Changes

  • Enhancement: new @EmergencyMode input parameter to minimize work done and kill stuff faster. (#3956, thanks Joe Obbish)
  • Fix: inaccurate numbers for blocked query runtimes. (#3919)

SQL Server Versions Changes

  • Enhancement: rename "Description" extended properties to "MS_Description" so that it shows up in SSMS. (#3897, thanks Dave Pendelton.)

For Support

When you have questions about how the tools work, talk with the community in the #FirstResponderKit Slack channel. Be patient: it's staffed by volunteers with day jobs. If it's your first time in the community Slack, get started here.

When you find a bug or want something changed, read the contributing.md file.

When you have a question about what the scripts found, first make sure you read the "More Details" URL for any warning you find. We put a lot of work into documentation, and we wouldn't want someone to yell at you to go read the fine manual. After that, when you've still got questions about how something works in SQL Server, post a question at DBA.StackExchange.com and the community (that includes me!) will help. Include exact errors and any applicable screenshots, your SQL Server version number (including the build #), and the version of the tool you're working with.