Maintenance
The 33 checks in the “Maintenance” category of a SQL Server audit: what each one verifies, its severity and the versions covered.
- Checks in this category
- 33
- Weight in the score
- 14
- Breakdown by severity
- 1 critical · 4 high · 11 medium · 7 low · 10 info
Checks in this category
MAINT001Recent DBCC CHECKDB
CriticalCHECKDB should be run regularly (< 7 days)
Versions : 2012-2025
MAINT007SHRINK Operations
HighSHRINK operations cause fragmentation
Versions : 2012-2025
MS001Ola Hallengren solution installed
HighChecks for the Ola Hallengren procedures (IndexOptimize, DatabaseBackup, DatabaseIntegrityCheck, CommandExecute) and the CommandLog table in master.
Versions : 2012-2025
MS002Ola jobs scheduled & successful
HighChecks that Ola SQL Agent jobs are enabled, scheduled, and that at least one succeeded within the last 14 days.
Versions : 2012-2025
MS003Maintenance solution present
HighChecks that at least one maintenance solution exists (Ola procedures or msdb maintenance plans); none means no automated index/CHECKDB/backup maintenance.
Versions : 2012-2025
CCI001Columnstore deleted-row fragmentation
MediumDetects compressed columnstore rowgroups with more than 20% deleted rows (rebuild/reorg candidates).
Versions : 2014-2025
IDX001Duplicate / overlapping indexes
MediumDetects indexes sharing identical leading key columns, wasting storage and slowing writes.
Versions : 2012-2025
IDX003Write-only indexes
MediumDetects indexes with no reads but heavy updates since the last restart, which are pure overhead.
Versions : 2012-2025
IDX004FK without supporting index
MediumDetects foreign keys whose parent columns lack a leading index, causing scans and blocking on parent updates/deletes.
Versions : 2012-2025
IDX005Heaps with forwarded records
MediumDetects clustered-index-less tables (heaps) accumulating forwarded records, which cause extra I/O per lookup (top 5 databases).
Versions : 2012-2025
IDX007Untrusted foreign keys
MediumDetects enabled FKs with is_not_trusted=1 that the optimizer ignores and that no longer guarantee referential integrity.
Versions : 2012-2025
IDX010High-impact missing indexes
MediumAggregates high-impact missing-index suggestions (cost x impact x scans/seeks); these are candidates to review, not literal CREATE INDEX statements.
Versions : 2012-2025
MAINT002Index Fragmentation
MediumFragmented indexes (>30%) degrade performance
Versions : 2012-2025
MAINT009Recent risky DBCC commands (default trace)
MediumRead-only inspection of the default trace (fn_trace_gettable, EventClass 116 = Audit DBCC) for cache-flushing DBCC (FREEPROCCACHE, DROPCLEANBUFFERS, FREESYSTEMCACHE) and direct-write DBCC (WRITEPAGE). DBCC command names are invariant T-SQL keywords, so matching TextData stays language-neutral.
Versions : 2012-2025
STAT002Low sample-rate statistics
MediumDetects large-table statistics sampled below 25%, producing skewed histograms.
Versions : 2012-2025
STAT003Stale statistics (modification counter)
MediumDetects large-table statistics where more than 20% of rows changed since the last update.
Versions : 2012-2025
CCI002Too many small rowgroups
LowDetects many under-filled compressed rowgroups (< 100K rows, ideal ~1,048,576).
Versions : 2014-2025
CCI003Uncompressed delta rowgroups
LowDetects delta rowgroups (OPEN/CLOSED) not yet compressed, scanned as row-store row-by-row.
Versions : 2014-2025
IDX008Untrusted CHECK constraints
LowDetects enabled CHECK constraints with is_not_trusted=1 that the optimizer cannot use for plan simplification.
Versions : 2012-2025
IDX009Disabled indexes present
LowDetects disabled indexes (is_disabled=1) that consume metadata and often indicate forgotten maintenance.
Versions : 2012-2025
MAINT006Heap Tables
LowTables without clustered index can cause issues
Versions : 2012-2025
OPS007msdb backup history purged
LowMeasures the age of the oldest msdb.dbo.backupset entry; unpurged history bloats msdb and slows backups.
Versions : 2012-2025
STAT004NORECOMPUTE statistics
LowDetects statistics flagged NORECOMPUTE, which lose automatic updates and go stale.
Versions : 2012-2025
CCI004Columnstore on small tables
InfoDetects columnstore indexes on tables under 1M rows, where the benefit is marginal.
Versions : 2012-2025
IDX002Wide indexes (key columns)
InfoLists indexes with more than 5 key columns, which are large and rarely fully seekable.
Versions : 2012-2025
IDX006Low fill factor indexes
InfoDetects indexes with a fill factor between 1 and 80, which waste disk space and buffer pool memory.
Versions : 2012-2025
MAINT003Stale Statistics
InfoStatistics should be updated regularly
Versions : 2012-2025
MAINT004Unused Indexes
InfoUnused indexes consume space and slow down writes
Versions : 2012-2025
MAINT005Missing Indexes
InfoMissing indexes can significantly impact performance
Versions : 2012-2025
MAINT008Maintenance Plans
InfoVerify maintenance plans execute correctly
Versions : 2012-2025
MS004CHECKDB coverage per database
InfoEvaluates per database the last clean DBCC CHECKDB date (dbi_dbccLastKnownGood) and flags databases never checked or not checked in over 14 days.
Versions : 2012-2025
STAT001Auto Update Stats Async off (large DBs)
InfoDetects large databases (>= 50GB) where auto stats update is synchronous, causing latency spikes.
Versions : 2012-2025
STAT005Trace flags 2371/2453 audit
InfoAudits TF2371 (dynamic stats-update threshold, default at compat 130+) and TF2453 (table-variable recompile).
Versions : 2012-2025
Other categories
- Security 103
- Backups 11
- Reliability 64
- Encryption 14
- Configuration 33
- Performance 29
- Database Settings 13
- Files 10
- Wait Statistics 9
- Advanced I/O 5
- Advanced Memory 8
- Blocking & Deadlocks 8
- Agent 8
- Query Store 8
- Linked Servers 5
- Capacity 9
- Updates 7
- Hardware 10
- Top Queries 7
- Stored Procedures 4
- Connections 6
- Extended Events 4
- Database Mail 3
- Database Level 7