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
| Area | Items | Hours |
|---|---|---|
| Availability | 2 | 14.5 |
| Capacity and storage | 4 | 24.5 |
| Data protection | 4 | 18.5 |
| Operations and monitoring | 6 | 19.5 |
| Performance | 3 | 8 |
| Security | 9 | 35 |
Work items
| ID | Priority | Area | What was found | Suggested work | sqlapp01 | sqlprd01 | Hours |
|---|---|---|---|---|---|---|---|
| R01 | Urgent | Capacity and storage | Disk 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 |
| R02 | Urgent | Capacity and storage | Slow 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 | |
| R03 | Urgent | Data protection | Backup 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 | |
| R04 | Urgent | Data protection | Transaction 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 |
| R05 | Plan | Availability | Cluster 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 |
| R06 | Plan | Availability | Repeated 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 | |
| R07 | Plan | Capacity and storage | Transaction 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 | |
| R08 | Plan | Capacity and storage | Very 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 |
| R09 | Plan | Data protection | Databases 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 |
| R10 | Plan | Data protection | Long 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 |
| R11 | Plan | Operations and monitoring | Database Mail is reporting errors Alert and job emails may not be arriving. | Alerts may not be arriving; fix the mail profile. | ✓ | 2 | |
| R12 | Plan | Operations and monitoring | Database 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 | |
| R13 | Plan | Operations and monitoring | Nobody 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 |
| R14 | Plan | Operations and monitoring | Scheduled 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 |
| R15 | Plan | Operations and monitoring | Scheduled 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 | |
| R16 | Plan | Operations and monitoring | Scheduled jobs that often fail They need attention before they stop working altogether. | Review the failing jobs and either fix or retire them. | ✓ | 2.5 | |
| R17 | Plan | Performance | Out-of-date query statistics Queries can pick slow plans. | Check that an index and statistics maintenance job runs and covers these databases. | ✓ | ✓ | 4.5 |
| R18 | Plan | Performance | Query Store has stopped recording No history is kept to explain slow queries. | Raise its maximum size or clear it so it records again. | ✓ | 1 | |
| R19 | Plan | Performance | The 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 | |
| R20 | Plan | Security | Accounts 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 | |
| R21 | Plan | Security | Database 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 | |
| R22 | Plan | Security | Database 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 |
| R23 | Plan | Security | Linked 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 |
| R24 | Plan | Security | Many 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 |
| R25 | Plan | Security | Optional 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 |
| R26 | Plan | Security | Permissions 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 |
| R27 | Plan | Security | SQL logins that ignore the password policy Passwords never expire and can be weak. | Turn CHECK_POLICY on for them. | ✓ | ✓ | 3.5 |
| R28 | Plan | Security | Weak 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.