Sample fix estimate

Sample fix estimate

Every problem in the review becomes a line with an estimate of the hours to fix it. Think of it as a menu: you can fix items yourself, hand them to your own team, or have me do the ones you choose. Mix and match. I’m happy to work with you or your internal staff.

SAMPLE · FICTIONAL DATA · TWO SERVERS

28items
120estimated hours
4urgent (27 h)
24planned (93 h)

By area

AreaItemsHours
Availability214.5
Capacity and storage424.5
Data protection418.5
Operations and monitoring619.5
Performance38
Security935

Work items

IDPriorityAreaWhat was foundSuggested worksqlapp01sqlprd01Hours
R01UrgentCapacity and storageDisk drives running out of space
When a drive fills, databases stop accepting changes and applications fail.
Free or add space now, and check what is growing on that drive.✓✓9.5
R02UrgentCapacity and storageSlow disk response
Slow storage makes every application that uses these databases slower.
Check the storage behind those drives, and whether the busy files share a drive.✓9.5
R03UrgentData protectionBackup jobs that fail regularly
A backup that fails quietly leaves less protection than anyone thinks.
Read the job history to see why the runs fail and whether a failed run is repeated the same day. A backup job that fails regularly means some days may have no backup.✓2.5
R04UrgentData protectionTransaction log backups are being thrown away
These databases can only be restored to their last full backup, not to a recent moment, and the log can grow without limit.
Find the job or script that sends the log backup to NUL (a backup that is discarded) and stop it. Then take a new full backup so the chain of backups needed for point-in-time recovery starts again.✓✓5.5
R05PlanAvailabilityCluster could split in two with no tie-breaker
If the network between the servers is cut, neither side may know it should stay up.
Add a witness (file share or cloud witness), or confirm dynamic quorum is configured the way you intend.✓✓3
R06PlanAvailabilityRepeated connection time-outs between servers in the group
The standby copies can fall behind or disconnect.
The error log says this is a network or firewall issue or the replica restarting. Check whether the timeouts line up with VM snapshots, backups or patching on those servers.✓11.5
R07PlanCapacity and storageTransaction logs with far too many internal segments
Startup, restore and log backup are slower than they should be.
Too many virtual log files slow startup, restore and log backup. Shrink once and regrow in a few large steps.✓2
R08PlanCapacity and storageVery large, mostly empty transaction logs
They hold disk space that other databases may need.
Find out which. If it grew because of a large operation or a stalled log backup, fix the cause first; shrinking is only safe once you know it will not simply grow again.✓✓3.5
R09PlanData protectionDatabases never checked for corruption
Corruption found late may already be in every backup.
Schedule DBCC CHECKDB at least weekly for every database; it is the only way to find corruption before a restore needs the pages.✓✓6.5
R10PlanData protectionLong gaps between backups
After a failure, up to this much recent work could be lost.
Take log or differential backups more often than that window.✓✓4
R11PlanOperations and monitoringDatabase Mail is reporting errors
Alert and job emails may not be arriving.
Alerts may not be arriving; fix the mail profile.✓2
R12PlanOperations and monitoringDatabase text-comparison settings differ from the server
Queries that join to temporary data can fail.
Review each; these are common upgrade and performance traps.✓3.5
R13PlanOperations and monitoringNobody is warned when SQL Server reports a serious error
Serious problems can go unnoticed until users complain.
Create the alerts with an operator so early disk failure is noticed.✓✓4.5
R14PlanOperations and monitoringScheduled jobs that fail without telling anyone
Failures can go unnoticed for days.
Give every important job a failure notification, or alert from the monitoring tool instead.✓✓4.5
R15PlanOperations and monitoringScheduled jobs that failed this week
Work they should be doing is not happening.
Open the job history for the failing step and fix or retire the job.✓2.5
R16PlanOperations and monitoringScheduled jobs that often fail
They need attention before they stop working altogether.
Review the failing jobs and either fix or retire them.✓2.5
R17PlanPerformanceOut-of-date query statistics
Queries can pick slow plans.
Check that an index and statistics maintenance job runs and covers these databases.✓✓4.5
R18PlanPerformanceQuery Store has stopped recording
No history is kept to explain slow queries.
Raise its maximum size or clear it so it records again.✓1
R19PlanPerformanceThe temporary database (tempdb) is not set up the recommended way
It can slow every busy application.
Use equal-size data files (up to 8), fixed growth, and a fast drive that is not C:.✓2.5
R20PlanSecurityAccounts with very powerful permissions in databases
Mistakes or misuse by those accounts have a large effect.
Confirm each is intended; prefer the narrowest permission that works.✓3
R21PlanSecurityDatabase settings that bypass normal security checks
They let code in one database act with the rights of another.
Turn the setting off unless an application is known to depend on it.✓2
R22PlanSecurityDatabase users that could map to the wrong login after a restore
Someone could silently get another person’s access.
Rename or re-link: after a restore the user can silently map to the wrong person.✓✓3
R23PlanSecurityLinked servers that sign in with a stored or powerful login
A weak link to another server can expose both.
Avoid stored remote logins, and never sa.✓✓4.5
R24PlanSecurityMany accounts with full administrator rights
Every such account can read, change or delete everything.
Review each one; most service and application accounts need far less.✓✓7
R25PlanSecurityOptional server features switched on that widen the attack surface
Each one is another way in if the server is attacked.
Turn each off unless an application needs it.✓✓3.5
R26PlanSecurityPermissions granted to every user of a database (the public role)
Everyone with a login to the database gets them.
Grant to specific roles instead and revoke from public.✓✓4.5
R27PlanSecuritySQL logins that ignore the password policy
Passwords never expire and can be weak.
Turn CHECK_POLICY on for them.✓✓3.5
R28PlanSecurityWeak or expired encryption keys and certificates
Encrypted data may not be as protected as assumed.
Replace keys that are not AES or are under 2048 bits, and renew expired certificates.✓✓4

How to read this estimate

What the hours are
BPS effort to diagnose, plan, make the change, and check it afterwards, one row per kind of problem. Each figure is a single planning figure that allows for a normal amount of surprises.
How they add up
Total = shared work once + hours per server x number of servers affected. Change the blue figures on the Work items sheet and everything recalculates.
Scope
Priority "Urgent" and "Plan" items from the review. Notes marked "for awareness" are not estimated.
Not included
Hardware, storage or licence purchases; application changes; customer staff time for approvals; vendor support calls.
Assumes
Remote access with an administrator login on every server; changes made in agreed maintenance windows; one test restore per server; the customer decides ownership questions promptly.
Questions Contoso Group (sample data) needs to answer first
Which of the two servers is the live one, and which is the standby? Who should receive the alerts that nobody receives today?
Estimate status
Indicative only. It should be confirmed after a review meeting and is not a fixed-price quote.

In the Excel version the blue figures can be changed and the totals recalculate.