Kestrel Database Consulting

SQL Server consulting for small businesses and agencies

Slow queries fixed. Backups verified. Migrations done safely.

If your SQL Server is slow, fragile or nobody has looked at it in years, I find what is hurting performance and putting your data at risk, then give you a clear fix list.

17:00
Daily full backup at 06:00, no log backups
Same full backup, plus log backups every 15 minutes
Full backupData you loseFailure

Three ways to work together

Start with a fixed-price health check. Most tuning and care work follows from what it finds.

$250fixed price, one instance

SQL Server Health Check

Backups, integrity, jobs, top queries, indexes, security, configuration, capacity and patching. You get a 2-page prioritized report in 48-72 hours.

Details
$2404-hour block, $60/hr

Query Tuning Block

I tune the specific queries or procedures that are hurting you and show before and after timings, with a written summary and scripts.

Details
$300per month

Monthly Care Plan

Backup and job verification, a monthly health review and 4 hours of support, so problems get caught before they become outages.

Details

How a health check works

  1. Agree the scope

    You answer a few questions about your setup, and we sign a short scope and NDA.

  2. Grant read-only access

    You create a least-privilege login, reached through your VPN or jump box.

  3. Run diagnostics

    I review system metadata such as settings, job history and query statistics.

  4. Get your report

    Within 48-72 hours you have a scorecard, the top 3 fixes and effort estimates.

Your production server stays safe

A consultant with access to your database is a risk you should weigh. These rules apply to every engagement.

  • Read-only diagnostics by default. I do not need sa or sysadmin.
  • No production change without your written approval and a verified backup.
  • Your data stays on your systems. I review metadata, not the contents of your tables.
  • Every engagement starts with a signed scope and an NDA.

Free tools for SQL Server people

Everything runs in your browser, and nothing you enter or paste is sent anywhere.

See all six tools

When did someone last test a restore?

If you can't answer that with a date, a health check is a good place to start.

Request a health check

Services and pricing

Clear scope, fixed prices, a written result every time

$250fixed price, one instance, up to 10 databases

SQL Server Health Check

A read-only review of nine areas, delivered as a 2-page report with a green, amber and red scorecard. Each finding includes the evidence, the business impact and the recommended fix.

Delivery: 48-72 hours. See a sample report.

$2404-hour block at $60/hr

Query Tuning Block

For specific slow queries or stored procedures. I find the actual bottleneck, apply targeted fixes with your approval, and record before and after timings.

Delivery: written summary and scripts.

$300per month

Monthly Care Plan

Ongoing backup and job verification, a monthly health review and 4 hours of support. It is usually set up after a health check, once the urgent fixes are done.

Recurring. Unused support hours are agreed in your scope.

Also available on request: SQL Server version upgrades, Azure SQL migrations, reporting and data cleanup. These are quoted after a short call.

What the health check covers

The report tells you what to fix first and why it matters to the business, in plain English you can pass to your team or your boss.

  • Backups and recoverability
  • Database integrity (DBCC CHECKDB)
  • SQL Agent jobs, operators and alerts
  • Top CPU and I/O queries, and dominant wait types
  • Missing, duplicate and unused indexes
  • Security basics: sa, sysadmin members, password policy
  • Configuration: memory, parallelism, auto-shrink, file growth
  • Capacity and growth
  • Patch level and support status

Build your health check quote

Choose what you need and send the result with your enquiry. The total is an estimate until we have confirmed your setup.

$60/hr, approved in writing first

Estimated total

Common questions

Will you change anything on my server?

Not during a review, which is read-only. Fixes happen only after you approve them in writing and we have a verified backup.

Do you need sa or sysadmin access?

No. A read-only login with view permissions is enough for a health check.

Is my data safe?

I review system metadata such as settings, job history and query statistics, not the contents of your tables. I don't copy data off your servers, and I will sign an NDA.

What if you find nothing wrong?

You still get a written report showing what was checked and the evidence, which is useful for audits and peace of mind.

Can you promise my queries will be a certain amount faster?

No, and be careful of anyone who does. I promise a diagnosis, a prioritized plan and measured before and after timings for anything I tune.

Do you work with my version or platform?

Tell me your version and where it runs when you get in touch. If it's outside what I can do well, I'll say so before you pay anything.

Free tools

Free tools for SQL Server

No sign-up. Everything runs in your browser, and nothing you enter or paste is sent anywhere.

These tools give starting points, not advice about your specific server. Test any change outside production first.

Free tools / Self-Check

SQL Server Self-Check

Answer 11 questions to get a scorecard in the same format as a paid health check. It takes about three minutes.

Example answers loaded. Change them to yours.

This reflects your answers, not a look at your server. A real review may find something different.

Free tools / Data Loss Calculator

Data Loss Calculator

See how much work your backup schedule could lose in the worst case, and what an outage could cost.

Example figures. Replace them with yours.
Time it in a test restore if you can

Worst-case data loss window

transactions lost
value of lost work
downtime cost
total exposure

This is a planning estimate and assumes your backups can be restored. Only a restore test proves that.

Check your actual schedule

This read-only query lists the last full, differential and log backup recorded for each database. Review it and test it on a non-production server first.

T-SQL, read-only
SELECT
    d.name AS database_name,
    d.recovery_model_desc,
    d.state_desc,
    MAX(CASE WHEN b.type = 'D' THEN b.backup_finish_date END) AS last_full,
    MAX(CASE WHEN b.type = 'I' THEN b.backup_finish_date END) AS last_diff,
    MAX(CASE WHEN b.type = 'L' THEN b.backup_finish_date END) AS last_log
FROM sys.databases AS d
LEFT JOIN msdb.dbo.backupset AS b ON b.database_name = d.name
WHERE d.name <> 'tempdb'
GROUP BY d.name, d.recovery_model_desc, d.state_desc
ORDER BY d.name;

Free tools / Memory and MAXDOP Calculator

Memory and MAXDOP Calculator

Get starting values for max server memory, MAXDOP and cost threshold, with the script to apply them.

Example server. Replace with yours.
SSRS, SSIS, agents, other instances
Include soft-NUMA nodes if SQL Server created them
max server memory (MB)
max degree of parallelism
50cost threshold for parallelism
  • Cost threshold of 50 is a common community starting point, not a Microsoft recommendation. Adjust it for your workload.

Script

This script changes server settings. Compare it with your current values, and apply it through your change process after testing.

T-SQL, changes settings

MAXDOP guidance: Microsoft Learn.

Free tools / STATISTICS IO Parser

STATISTICS IO Parser

Paste the Messages tab from SSMS after SET STATISTICS IO, TIME ON, and see which table is costing you the most reads.

Example output loaded.

Parsed in your browser. Table names are never sent anywhere.

logical reads
data read, at 8 KB per page
execution CPU
execution elapsed
TableScansLogicalPhysicalRead-aheadLOB logical

Free tools / Wait Type Lookup

Wait Type Lookup

Find out what a wait type usually means and what to check first. Paste several names to look them up together.

Get your top waits

This read-only query lists waits since the last restart or stats clear, leaving out common idle waits. It has been run on SQL Server 2014, 2016 and 2019. Review it and test it on a non-production server first.

T-SQL, read-only
SELECT TOP (10)
    wait_type,
    wait_time_ms / 1000 AS wait_seconds,
    waiting_tasks_count,
    CAST(100.0 * wait_time_ms / SUM(wait_time_ms) OVER ()
         AS decimal(5, 1)) AS pct_of_listed_waits
FROM sys.dm_os_wait_stats
WHERE waiting_tasks_count > 0
  AND wait_type NOT LIKE '%SLEEP%'
  AND wait_type NOT LIKE '%QUEUE%'
  AND wait_type NOT LIKE 'BROKER[_]%'
  AND wait_type NOT LIKE 'CLR[_]%'
  AND wait_type NOT LIKE 'FT[_]IFTS%'
  AND wait_type NOT LIKE 'XE[_]%'
  AND wait_type NOT LIKE 'PREEMPTIVE[_]XE[_]%'
  AND wait_type NOT IN (N'WAITFOR', N'CHKPT', N'DIRTY_PAGE_POLL',
      N'DISPATCHER_QUEUE_SEMAPHORE', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
      N'PARALLEL_REDO_WORKER_WAIT_WORK', N'PWAIT_ALL_COMPONENTS_INITIALIZED',
      N'REQUEST_FOR_DEADLOCK_SEARCH', N'SERVER_IDLE_CHECK',
      N'SOS_WORK_DISPATCHER', N'WAIT_XTP_HOST_WAIT')
ORDER BY wait_time_ms DESC;

Free tools / Support Date Checker

Support Date Checker

Paste your version to see whether Microsoft still provides updates for it.

Example loaded. Run SELECT @@VERSION; and paste the result, or type a build such as 15.0.4415.2.

All supported dates

VersionBuildMainstream endsExtended endsStatus today

Dates from the Microsoft Lifecycle pages, last checked 31 October 2026. Confirm them there before making a decision. Azure SQL Database and Managed Instance follow a different policy.

Sample report

What you receive from a health check

Here is the report format, filled in with made-up demo data. It describes no real client or server.

Sample, demo data

Overall risk rating

RED

Your databases are running, but a server failure in the late afternoon would lose up to 11 hours of orders, because log backups are not running on your busiest database. Two fixes this week remove most of that risk.

Top 3 things to fix first

PriorityFindingEffort
1No transaction log backups on Sales~1 hr
2Last clean CHECKDB on Sales was 74 days ago~1 hr
3Application login is a sysadmin, and sa is enabled~half day

Scorecard

AreaStatusSummary
Backups and recoverabilityRedFull backups nightly, but no log backups on 2 FULL-recovery databases
Database integrityRedLast clean check 74 days ago on Sales
Jobs and alertingAmber2 failing jobs, with no operator or severity 17-25 alerts
PerformanceAmber3 queries use about 70% of CPU
IndexingAmber11 high-value missing indexes, 9 unused
SecurityRedsa enabled, and the application login is a sysadmin
ConfigurationAmberMax server memory left at default
Capacity and growthGreenData drive has more than 12 months of projected room
Patching and supportAmberSupported version, several cumulative updates behind

F1: No transaction log backups on Sales (FULL recovery)

Critical
What we found
Sales is in FULL recovery. Its last full backup was at 06:00 today, and no log backup has ever been recorded. The log file has grown to 84 GB.
Evidence
msdb.dbo.backupset shows 0 log backups, and sys.databases.log_reuse_wait_desc is LOG_BACKUP.
Why it matters
If the server fails at 5 pm, up to 11 hours of orders are lost. The log will also keep growing until the disk fills and the database stops accepting writes.
Recommended fix
Schedule log backups every 15 minutes, then shrink the log once to a sensible size and set a fixed growth increment.
Effort and risk
About 1 hour, low risk, no downtime.

About

One DBA, and you deal with me directly

I manage enterprise-scale databases with a focus on high availability and production releases that don't cause downtime. On the development side, I design and optimize complex stored procedures, functions, triggers, and constraints.

I'm known for connecting development and infrastructure teams: I streamline handoffs, reduce operational risk, and keep the database work tied to what the business needs.

I started this practice for businesses that depend on SQL Server but don't need or can't justify a full-time DBA.

When you hire me, I'm the person who does the work and explains it. You get the business meaning first and the technical detail second, in writing, so your team can use it long after the engagement ends.

Where the name comes from

A kestrel can hold almost still in the air while it watches the ground below for the smallest movement. Good database care works the same way: steady attention, so small problems get noticed before they become outages.

How I work

  • I start with evidence and show you where every finding came from.
  • I use open, well-known tools such as the First Responder Kit, so you are not locked in to me.
  • I tell you when something doesn't need fixing, or when your team can fix it without me.

Contact

Tell me what's going on with your server

I'll reply with a next step and, where I can, a fixed price.

Please don't include passwords, connection strings or customer data. We'll agree a safe way to set up access later.

Email

Useful to mention

  • Your SQL Server version and where it runs
  • What feels slow or risky, and when
  • When you last tested a restore
  • How much data loss the business could tolerate

Privacy

Privacy

Tools. The free tools run entirely in your browser. What you enter or paste into them isn't sent to me or stored by this site.

Contact. If you send me a message, I use your details only to reply and to run our work together.

Cookies and analytics. This site sets no cookies and runs no analytics.

Third parties. Your browser loads this site's fonts from Google Fonts, and the web host may keep standard access logs. Both can see your IP address.