Typical situations
SQL Server problems we investigate
These are typical engagements – the situations organisations most often bring to us and how we approach them. They are not client results and don’t describe any particular client.
-
A line-of-business system has become slow
Typical engagement – not a client result
- Problem
An ERP, stock or finance system that used to respond quickly now takes seconds per screen, worst at month end. More server resources have been suggested.
- Investigation
Wait statistics against a baseline, the heaviest queries from query stats or Query Store, actual execution plans, blocking during busy periods and file I/O latency.
- Likely causes
- A plan that changed after statistics or data volumes shifted
- Missing or unsuitable indexes for reports added since go-live
- Stale statistics, or maintenance that stopped running
- Max server memory or parallelism settings left at defaults
- Work
Targeted index and statistics changes, configuration corrections, query rewrites passed to the application supplier where the code is theirs, and restored maintenance.
- How success is measured
Response times for the named slow screens and reports, before and after; duration of the heaviest queries; wait profile compared with the baseline.
-
A transaction log keeps filling the disk
Typical engagement – not a client result
- Problem
A log file grows until a drive fills and the database stops accepting changes. It has been shrunk several times and keeps coming back.
- Investigation
Recovery model, log backup history,
log_reuse_wait_descinsys.databases, long-running or open transactions, replication or availability group state, VLF count and growth settings.- Likely causes
- FULL recovery with no log backups
- An open transaction or a stalled replication or AG secondary preventing log reuse
- Large index maintenance generating more log than backups clear
- Work
Log backups scheduled to the agreed RPO, the blocking cause removed, the log sized once to its real working size with sensible growth, and alerting on free space.
- How success is measured
Log size stable over several business cycles, log reuse wait normally NOTHING or LOG_BACKUP, no repeat incidents, and restore to a point in time proven.
-
Nobody knows whether the backups would restore
Typical engagement – not a client result
- Problem
An auditor, insurer or customer asks for evidence of recovery. Backup jobs report success, but no one has restored a production database recently.
- Investigation
Backup history in
msdbfor every database, backup options and destinations, off-site copies, retention, and whether VM or appliance backups interact with SQL Server’s own.- Likely causes
- Databases added after the backup routine was set up and never included
- Backups stored only alongside the data
- Log chain broken by an ad hoc or third-party backup
- Work
Corrected backup coverage and schedule, test restores to a separate server followed by DBCC CHECKDB, a documented recovery procedure and a testing schedule.
- How success is measured
Every database covered; restores completed and timed against the agreed RTO; recovery to a chosen point in time demonstrated; evidence the organisation can show.
-
Overnight SQL Agent jobs keep failing
Typical engagement – not a client result
- Problem
Imports, integrations or maintenance fail intermittently. Staff find out in the morning when data is missing, and someone reruns the job by hand.
- Investigation
Job and step history, the SQL Server error log, deadlock and blocking information for the failure window, overlapping schedules, and permissions and credentials used by each step.
- Likely causes
- Jobs overlapping with maintenance or backups and deadlocking
- Expired passwords or changed permissions on a proxy or linked server
- Growing data volumes pushing jobs past their window
- Work
Rescheduling and sequencing, fixes for the deadlocking or slow steps, corrected credentials, and failure notifications that reach someone who can act.
- How success is measured
Job success rate and run durations over the following weeks, and no manual reruns.
-
An out-of-support version needs upgrading
Typical engagement – not a client result
- Problem
A business system runs on a SQL Server version that no longer receives security updates. The upgrade has been deferred because of worries about what might break.
- Investigation
An inventory of databases, logins, jobs, linked servers and packages; deprecated and discontinued feature use; application vendor support statements; query performance under the new compatibility level.
- Likely causes
- Uncertainty about application compatibility rather than a technical blocker
- Dependencies nobody has documented
- No test environment to try the upgrade in
- Work
A tested migration plan, a rehearsal on a copy, a cutover with verification and a rollback point, then compatibility level raised in a controlled step.
- How success is measured
Users working normally on the new version after cutover, no regression in key query timings, and the instance on a supported, patched release.
Why typical situations, not case studies?
We don’t publish client names or details without permission, and we won’t invent results. Anonymised case studies will appear here as clients agree to them.
Next step
Recognise one of these situations?
Tell us what you’re seeing. We’ll tell you how we’d investigate it.