PREEMPTIVE_SP_SERVER_DIAGNOSTICS is recorded when the background health-monitor thread is actually running the sp_server_diagnostics procedure, the component-by-component health check added in SQL Server 2012 that feeds AG and FCI failure detection. Its sibling SP_SERVER_DIAGNOSTICS_SLEEP covers the same thread between runs; this preemptive wait covers the runs themselves.
Between the two, the health monitor’s entire life is accounted for.
Is It a Problem?
No; it has not been a contention point, and its cadence follows the diagnostics schedule (every five seconds by default under cluster monitoring). Both members of the pair belong on the benign filter list.
As with the sleep variant, the procedure itself is the useful part: run EXEC sp_server_diagnostics; manually during weird incidents for a structured health snapshot (system, resource, query_processing, io_subsystem, events columns), often quicker than assembling the same picture from DMVs.
Common Causes
- The background health monitor executing its scheduled diagnostics runs.
What To Do
- Filter it with its sleep sibling.
- Keep the manual
sp_server_diagnosticstrick in the incident toolbox. - AG failover sensitivity tuning lives in
HEALTH_CHECK_TIMEOUTand failure condition levels, not in these waits.
How To See It
Rank waits with Get-WaitStatistics; steady small accumulation on every modern instance, meaning the health monitor is on the job.
Part of the SQL Server Wait Types Library.
Related deep dive: SOS_SCHEDULER_YIELD Wait Type.
Leave a Reply