SQL Server Consultants in Richmond, VA

Stop dealing with database outages and slow queries. Let our senior DBAs help your Richmond business eliminate database bottlenecks and prevent future outages. You never deal with junior staff or account managers. SQL Server is all we do.

4.9 rating
120+ reviews
15+ yrs avg DBA experience
15-min emergency response (covered clients)

Talk to a senior DBA

A senior DBA reads this (not a sales rep) and replies within one business day. No obligation.

You see the findings and the price before you commit.

By clicking, you agree to our Terms of Use and Privacy Notice.

Prefer to talk? A senior DBA is reachable at 1-877-891-1870

SQL Server consulting in Richmond: the short answer

Red9 provides senior-only SQL Server consulting, performance tuning, managed DBA services, and emergency response to organizations in Richmond and the counties around it, including Henrico, Chesterfield, Glen Allen, Midlothian, Short Pump, and Mechanicsville. One database engine has been the whole practice since 2014. Every engagement opens with the free 145-point health check. We carry 120+ clients, from seed-stage startups up to the Fortune 100; Managed Services and Emergency Services clients get a production incident answered inside 15 minutes, and each change ships with the measurements taken around it.

Looking for a SQL Server consultant within reach of Richmond? Book your free assessment.

Trusted by 120+ companies, from startups to the Fortune 100 · Microsoft SQL Server Specialists

Siemens logo Coca-Cola logo NCR logo Sony logo Brandeis University logo
Built for Richmond

The Databases Behind Richmond Finance, Law, and Care

Richmond holds more head offices than its size suggests: a Federal Reserve district bank, several public-company headquarters, two national law firms, and three hospital systems, all within an hour of each other.

Banking, Insurance & Utilities

The Federal Reserve Bank of Richmond runs the Fifth District from downtown, and Dominion Energy, Markel, Genworth, and Atlantic Union keep head offices in the metro. These databases live on the reporting calendar, so we watch Query Store for statements drifting the wrong way and retune them before month-end.

Law & Professional Services

McGuireWoods and Hunton Andrews Kurth both grew out of Richmond and still run large practices here. In matter and document stores the tables are wide, the searches unpredictable, and one unindexed predicate can scan a billion pages. We tune those searches and log the access.

Healthcare & Pharma

VCU Health, Bon Secours, and HCA Virginia anchor care across the region, and the pharmaceutical build-out in Petersburg has added a second cluster of regulated data. Clinical systems strain on write paths, where order records land thousands of times an hour: see the case study below.

Distribution, Property & Logistics

I-95 and I-64 cross here, the Richmond Marine Terminal barges containers to Hampton Roads, and Performance Food Group and Owens & Minor run national distribution from the metro. The property platforms working the same suburbs add high-frequency API traffic against a few hot tables: case #2 below.

We work with organizations across the region: Richmond, Henrico, Chesterfield, Glen Allen, Midlothian, Short Pump, and Mechanicsville, out to Petersburg, Ashland, and Colonial Heights, and statewide across Virginia, all over secure remote access. We book the work around your own release and close calendar, on Eastern time.

What we do

Our SQL Server Services in Richmond

SQL Server Consulting ➜

Principal-level judgment on the architecture, licensing, and scaling calls a Richmond team is about to make. An hour of argument now is worth a quarter of rework later.

From $4,995 / 20-hr block (hours do not expire)

Managed Services & Remote DBA ➜

Senior administrators holding the estate day to day: monitoring, patching, verified restores, and index and statistics hygiene. The discipline gets covered without a new line on the org chart.

From $395 / mo

Emergency Support ➜

Whoever picks up has already worked this failure mode, with a 15-minute response for Managed Services and Emergency Services clients.

From $2,500 / incident

Performance Tuning ➜

Statements ranked by what they cost per day, then rewritten, re-indexed, or consolidated. Sometimes the answer is fewer indexes than you started with.

Migrations & Upgrades ➜

Version jumps, Azure SQL, or AWS RDS, sequenced around your release calendar. Extended support for SQL Server 2016 ended July 14, 2026, and 2017 arrives in October 2027, which puts this on the roadmap now.

Health Checks & Audits ➜

A free read-only pass over 145 checks spanning configuration, backups, security, and query cost, returned in fix order. Point the same audit at your own instance whenever you want.

HA / DR: Always On, Clustering & Replication

Failover you can rehearse on a quiet Wednesday. We design and tune clusters and Always On Availability Groups, then add log shipping, replication, or Change Data Capture (CDC) where only the changed rows have to travel.

AI Readiness, Analytics & Data Warehousing

Groundwork on the databases your team wants an assistant reaching into, whether ChatGPT (OpenAI) or Claude (Anthropic), plus the RAG pipelines, vector search, and analytical traffic those tools push at SQL Server. When reporting starts crowding the transactional instance, we move the offload, SSRS and Power BI datasets included, onto Snowflake, Redshift, or the warehouse already in your stack.

What clients say

What Virginia Teams Say About Red9

"Been working with Red9 and Mark for about 8 years as SQL engineering experts. They do SQL database architecture and maintenance for us/our customers. He and his team and incredibly knowledgeable and all-around just great people. Very sophisticated. One of the few companies I can wholeheartedly recommend."

President

Richmond, VA

"We highly recommend Red9 and view them as an extension of our IT Team."

Anthony Trafny

Manager of Infrastructure ServicesUnited States

"Red9 ran a super complex SQL upgrade process for us. Very very complex. And completely on deadline"

DBA Manager

Baltimore, MD

What to expect

How a SQL Server Engagement Works

Four stages, counted in days rather than quarters, and the senior DBA who audits the estate is the one who changes it. Nothing gets committed before you have the ranked plan and its price.

We Listen

Which instances matter, what the symptom looks like from a user's desk, and what shipped in the two weeks before it started. That third question closes more cases than any monitoring tool.

145-Point Health Check

The audit reads 145 points across instance configuration, whether the backups genuinely restore, where security is exposed, and what queries cost per day, then ranks each finding by return. Want a look before calling? Aim the same read-only audit at your own instance for free through our self-serve Health Check.

Findings and Pricing

We read the report with you top to bottom, hours and cost attached to every line. You end the call holding a ranked plan and a firm number.

Execute and Support

Go ahead and we work the plan, capturing readings on both sides of each change so the gain is checkable in your own tooling. Ongoing managed services then hold the estate where the work left it.

Free 145-Point SQL Audit Finds What Your Team Can't See ➜

Real results

Three Engagements From the Red9 Files: Two Indexes Merged Into One, 227 ms Down to 1 ms

Three real Red9 projects, each carried from the opening review through to the closing measurement. The clients took every reading themselves, on both sides of the work. Names are withheld because that was the deal.

Index consolidationUndisclosed industry, anonymized × red9CS-0019

Two indexes merged into one took a top-called procedure from 227 ms to 1 ms

The problem. One of the most frequently called stored procedures on the estate had gone slow. It was not a mystery workload or an exotic feature; it was the routine call the application makes constantly, and it had settled at 227 ms and 2,496 logical reads every single time.

What we did. We read the plan and found two overlapping indexes on the same leading columns, neither of them wide enough to cover the query. We dropped the narrower one and created a single wider index carrying the extra key column, so one structure serves what two had been half-serving.

Red9 · Performance Impact
Per-call duration
227x
227 ms down to 1 ms on the same statement.
Logical reads, per call
312x
2,496 pages down to 8.
Processor time, per call 50x less

50 ms of CPU down to 1 ms, with one fewer index to maintain.

Duration
227 ms 1 ms
227x shorter
Logical reads
2,496 8
312x fewer
CPU
50 ms 1 ms
50x less
Procedure
duration, per call
before 227 ms
227x less
now 1 ms
Where the numbers come from. All three readings are per-execution averages from the same capture window, before the index change and after it. The 227x is 227 ms over 1 ms; the 312x is 2,496 pages over 8. Nothing else on the server changed, and the index count went down rather than up.

The result. The procedure the application leans on hardest now returns in about a millisecond and touches 8 pages instead of 2,496. The estate also carries one fewer index, so every write to that table got cheaper at the same time.

The technical detail

What the plan showed. Two nonclustered indexes shared the same two leading key columns. The optimizer picked one, then had to look up the third column for every row it returned, which is where the 2,496 reads and most of the 50 ms of CPU came from.

What we changed (identifiers generalized for privacy):

-- Two overlapping indexes on the same leading keys; neither covered the query.
DROP INDEX IX_ClientID_OrderDate ON dbo.[orders];
CREATE NONCLUSTERED INDEX IX_ClientID_OrderDate_WorkOrderNumber
    ON dbo.[orders] (clientId, orderDate, workOrderNumber);
-- rollback: restore both prior index definitions, drop the wider index

One wider index answered the query outright. Duration fell from 227 ms to 1 ms, reads from 2,496 to 8, and CPU from 50 ms to 1 ms.

Index tuningProperty management firm, anonymized × red9CS-0334

An invoice API call at 4,850 runs a day fell from 2,022 ms to 21 ms

The problem. A property management firm had one invoice API call averaging 2,022.82 ms across roughly 4,850 executions a day. That is about 2.73 hours of SQL processing time a day for a single statement, and it was reading close to 1.28 billion pages daily to do it.

What we did. We pulled the Query Store history for the statement, found the payment-workflow table it filtered had no supporting index, and created a two-column index on the columns the predicate used. Before-and-after statistics came from the same Query Store window.

Red9 · Performance Impact
SQL time handed back
~2.7 hrs / day
Across about 4,850 daily runs, on the same hardware.
Per-call duration
95x
2,022.82 ms down to 21.32 ms.
Pages read per day 1.28B 36M

Per call, 263,992 pages down to 7,414, with the execution count unchanged.

Duration
2,022.82 ms 21.32 ms
95x shorter
CPU
1,821.84 ms 20.16 ms
90x less
Executions
~4,850 / day
unchanged
API call
duration, per run
before 2,022.82 ms
95x less
now 21.32 ms
How the math works. The 95x is 2,022.82 ms over 21.32 ms. The 2.7 hours a day is roughly 4,850 runs multiplied by the 2 seconds each one stopped taking. Daily reads fell from 1,280,361,200 to 35,957,900, which is the 263,992 to 7,414 per-call figure at the same volume. Every number is from the firm's own Query Store captures.

The result. The call now finishes in about 21 milliseconds, and the roughly 2.7 hours of daily SQL time it used to consume went back to the rest of the workload. Read volume dropped by more than 1.24 billion pages a day at identical traffic.

The technical detail

What the review found. The statement filtered a payment-workflow override table on two columns with no index behind them, so each of its ~4,850 daily executions scanned and re-scanned the table for 263,992 reads a run.

What we changed (identifiers generalized for privacy):

-- Invoice API call: ~4,850x/day, 2,022.82 ms avg, ~2.73 hrs/day of SQL time.
CREATE NONCLUSTERED INDEX IX_InvoiceID_isDeleted
    ON dbo.[payment_workflow_override] (invoiceId, isDeleted);
-- rollback: DROP INDEX IX_InvoiceID_isDeleted provided

The scan became a seek. Duration went from 2,022.82 ms to 21.32 ms, CPU from 1,821.84 ms to 20.16 ms, and per-call reads from 263,992 to 7,414.

Covering index on a write pathHealthcare provider group, anonymized × red9CS-0252

An order-activity path running 26,223 times a day cut its daily reads from 42.4 million to 340,899

The problem. A healthcare provider group had an order-activity statement executing about 26,223 times a day. Each run averaged 8.13 ms and 1,617 disk-IO units, which added up to roughly 42.4 million reads a day on a path that sits directly in front of clinical users.

What we did. We captured the plan and Query Store history, then designed a covering index keyed on the three columns the statement filters, with the three output columns included so the engine never leaves the index. Create and rollback scripts went over together for the client to apply, and before-and-after readings came from the same window.

Red9 · Performance Impact
Reads per day
124x
42,402,591 down to 340,899 at the same volume.
Per-run duration
116x
8.13 ms down to 0.07 ms.
Processor time, per run 120x less

7.22 ms of CPU down to 0.06 ms on a statement that fires every three seconds.

Duration
8.13 ms 0.07 ms
116x shorter
Reads / day
42.4M 340,899
124x fewer
Executions
~26,223 / day
unchanged
Order-activity path
duration, per run
before 8.13 ms
116x less
now 0.07 ms
How to read these. The 116x is 8.13 ms over 0.07 ms per run; the 124x is 1,617 disk-IO units over 13, which at ~26,223 runs a day is 42,402,591 reads down to 340,899. The group recorded all of it in Query Store, before the index and after.

The result. A statement running roughly every three seconds now costs 0.07 ms and 13 disk-IO units instead of 8.13 ms and 1,617. Daily read volume fell by about 42 million pages, which took the pressure off the clinical workload sharing that instance.

The technical detail

What the review found. The statement filtered an order-activity table on a record identifier plus two status columns, with no index matching that combination, so each of the ~26,223 daily executions paid for a scan and then a lookup for the columns it returned.

What we changed (identifiers generalized for privacy):

-- Order-activity path: ~26,223x/day, 8.13 ms avg, ~42.4M reads/day.
CREATE NONCLUSTERED INDEX IX_orderActivity_MRN_Red9
    ON dbo.[orderActivity] (recordId, activeInd, orderStatus)
    INCLUDE (id, linkedOrders, orderItem);
-- rollback: DROP INDEX IX_orderActivity_MRN_Red9 provided

With the output columns included, the engine answers from the index alone: 0.07 ms a run, 13 disk-IO units, and 340,899 reads a day instead of 42.4 million.

Key takeaways

What Richmond Teams Hire Red9 For

  • Only senior DBAs touch the estate, averaging 15+ years each. SQL Server is all we do.
  • Three measured outcomes: a top-called procedure taken from 227 ms to 1 ms by merging two indexes into one, an invoice API call handing back about 2.7 hours of SQL time a day at 4,850 runs, and an order-activity path cut from 42.4 million daily reads to 340,899.
  • We cover Richmond and the rest of Virginia remotely, and a 15-minute emergency response applies to Managed Services and Emergency Services clients.
  • Our 120+ clients span banking, insurance and utilities, law and professional services, healthcare and pharma, and distribution, property and logistics.

Those readings came off other companies' servers. Give us half an hour and we will tell you what yours is spending.

Get a Free SQL Server Assessment ➜

Rather talk it through? A senior DBA answers at 1-877-891-1870.

Why Red9

Why Richmond Teams Choose Red9

Senior Only

The person reading your execution plans is the person changing them, with 15 years or more behind the opinion.

SQL Server Is All We Do

SQL Server, and only SQL Server, since 2014, with 10,000+ audited databases and thousands of servers.

We Prove It

Readings from both sides of every change, taken in Query Store and DMVs your own engineers can query.

24/7/365

Any hour of any day, Managed Services and Emergency Services clients reach a senior DBA inside 15 minutes.

"Red9 Has No Richmond Office. Is That a Problem?"

No. Virtually all of our clients work with us over secure remote access, and the readings do not change because of it. A senior DBA stays reachable through your entire Richmond workday on Eastern time, with 24/7/365 emergency cover on top for Managed Services and Emergency Services clients. Access sits under your control throughout: connections come in over your VPN or bastion host on least-privilege logins you create and can pull instantly, with further controls layered above, and every change lands as a script your engineers read before it runs.

How we compare

Red9 vs an In-House DBA vs a Generalist MSP

How the three options behave on the morning a Richmond production database starts costing you money.

Red9In-house DBA hireGeneralist IT / MSP
SeniorityPrincipal-grade SQL Server specialists averaging 15+ years, with no junior bench beneath them.One person owns the whole discipline, and Richmond competes with DC for that person.Generalists who touch SQL Server between a dozen other platforms.
SQL Server focusSQL Server is all we do.Split across every other system the role inherits.One line item on a long service list.
Emergency responseCover at every hour of the year, with a 15-minute response for Managed Services and Emergency Services clients.Whatever a single person can hold between sleep and leave.A ticket queue measured in hours.
ProofBefore-and-after readings your engineers can reproduce themselves.Seldom captured in a form anyone can check.Usually described rather than measured.
Cost modelScoped project, monthly retainer, or single incident, and no salary line to defend at budget time.A loaded Richmond salary of roughly $115,000 to $140,000, plus benefits and the search that precedes it.Folded into a larger invoice where the database share never shows.
Ramp-upA senior DBA inside your estate the same week.Months to hire against DC salaries, then months to ramp.Slow to start, and the context gets re-explained every ticket.

Senior SQL Server cover can be running before your next month-end close. Get a Free SQL Server Assessment ➜

Your team

The Leadership Accountable for Your Richmond Project

Mark Varnas, Red9

Mark Varnas

Founder & Partner

25+ years making SQL Servers faster.

Saulius, Red9

Saulius

Chief Operating Officer

Chloe Pak, Red9

Chloe Pak

Chief Revenue Officer

Behind the three of them sits a senior-only DBA bench averaging 15+ years, and one named lead stays answerable for your result from start to finish.

Where we work

Red9 in the Richmond Metro

We support Richmond-area teams over secure remote access, across the city, Henrico, Chesterfield, Glen Allen, Midlothian, and Short Pump. The same senior DBA takes the call whether the instance lives in a downtown office, a Henrico data center, or a Petersburg plant.

Service areaRichmond, Henrico and Chesterfield, and statewide Virginia, plus nationwide via secure remote access
HoursMon to Fri, 9am to 5pm Eastern (Richmond time)
Always-on supportEmergency Support and Managed Services clients: 24 / 7 / 365. Emergency support ➜
Areas we serve

SQL Server Consulting Near Richmond

Coverage runs across the Richmond metro and the rest of Virginia. Explore the areas we serve.

Henrico Chesterfield Glen Allen Midlothian Short Pump Mechanicsville All areas we serve
Buyer's guide

How to Choose a SQL Server Consultant in Richmond

Five questions that separate a real shortlist from a polished one.

  • Platform Focus

    Ask what share of their billed hours is SQL Server. The strange failures only get familiar to people who see nothing else all year.

  • Senior-Only Staffing

    Get a name and a year count for whoever will hold your credentials, then confirm it stays that person after the sale.

  • Willingness to Remove Indexes

    Anyone can add an index. Ask for a case where they consolidated or dropped indexes and the workload got faster.

  • A Written Emergency SLA

    Response time, and who qualifies for it, in the contract rather than the pitch deck.

  • Rollback for Every Change

    Each script should arrive with the one that undoes it. Withheld client names are fine; a missing rollback is not.

Quick facts

Red9 at a Glance

HeadquartersAlpharetta, GA (Atlanta metro)
Founded2014
FocusMicrosoft SQL Server only
TeamSenior-only DBAs, 15+ years average experience
Clients120+, from startups to the Fortune 100
Databases audited10,000+
Rating4.9 out of 5, 120+ reviews
Emergency response15 minutes, 24/7/365, for Managed Services and Emergency Services clients
Engagement modelsScoped project, monthly retainer, or per-incident
Service areaRichmond, Henrico, and Chesterfield, plus nationwide via secure remote access
Common questions

SQL Server Consulting in Richmond: FAQ

Is there a SQL Server consultant near me in Richmond, or is remote enough?

Yes. Red9 works across Richmond and the surrounding counties, from downtown and Scott's Addition out through Henrico, Chesterfield, Glen Allen, and Midlothian, and a senior SQL Server consultant owns the account. Remote is how nearly every client here runs, because it puts a principal-grade DBA on the problem the same hour rather than the same week. Secure remote access plus a 15-minute emergency response for Managed Services and Emergency Services clients beats any calendar-driven site visit.

When a Richmond production SQL Server goes down, how fast is your response?

15 minutes, any hour, any day of the year, and a senior DBA answers instead of a ticket queue. This response-time SLA is available to current Managed Services clients and Emergency Services clients. See Emergency Services ➜

What does SQL Server performance tuning cost for a Richmond company?

A free 145-point health check comes first, so the scope is priced against evidence. After that, managed services and remote DBA run from $395/mo, a 20-hour senior DBA block is $4,995 and the hours do not expire, and 24/7 emergency response starts at $2,500 per incident. Set that beside a loaded Richmond DBA salary of $115,000 to $140,000, which the comparison above works through, and the $395 monthly retainer costs about four percent of a month of that hire. Anything larger gets quoted once the health check is in.

A table on our Richmond system carries 30 indexes and queries are still slow. What do you do about that?

We count what each index earns. Every extra index taxes writes, bloats the buffer pool, and gives the optimizer more bad choices, so the fix is often consolidation rather than another CREATE INDEX. We read the plans, find overlapping definitions, and replace a cluster of narrow indexes with one wider index that serves all of them. That single move on a heavily called procedure in case #1 above took 227 ms down to 1 ms, and the reads with it.

One API call fires several thousand times a day on our Richmond platform. Is 2 seconds each worth fixing?

Multiply before you decide. A call at 2 seconds and 4,850 runs a day burns close to three hours of SQL processing time every day, which is capacity your other workloads never get. We rank statements by total daily cost rather than by worst single run, which is why a mid-tier query nobody complains about often turns out to be the biggest bill on the server. Case #2 above is that exact arithmetic.

How do you work on databases holding patient data for Richmond health systems?

We comply with HIPAA and SOX, sign NDAs, and carry cyber insurance, and access arrives through your own VPN on least-privilege logins you can revoke in a second. On the technical side, clinical estates usually hurt on write-heavy order and activity paths rather than on reporting, so that is where we start. One order-activity path we tuned in case #3 above dropped from 42.4 million daily reads to 340,899.

Do you work with nonprofits and government agencies in Richmond?

Yes. Richmond nonprofits and government agencies get the same free 145-point health check on identical terms, and the deliverable is a ranked findings list with a price beside each item, written for a board or a procurement committee to read. Managed services and remote DBA run from $395/mo. A 20-hour senior block is $4,995 and the hours do not expire.

Which versions we support, which platforms, and the shape of a standard engagement: all of that sits on our SQL Server consulting page.

Ready to Stop Paying for a Slow Database? Talk to a Senior DBA Who Covers Richmond.

30 minutes is enough to show you where your SQL Server is losing speed, uptime, and money, and what it takes to get those back. The free SQL Server assessment hands you the findings and the figure up front, and you owe us nothing for it.

Schedule My Call Now ➜

Rather talk it through? A senior DBA answers at 1-877-891-1870.