SQL Server

Automated SQL Server Benchmarking with HammerDB and Docker: A Complete Testing Framework

I’m excited to announce the release of a new open-source project that fully automates HammerDB benchmarking for SQL Server using Docker. If you’ve ever needed to run TPC-C or TPC-H benchmarks multiple times, you know how time-consuming the manual setup can be. This project removes the hassle and gets you up and running a single command: ./loadtest.sh.

Updated for HammerDB 6.0

What’s new since I first wrote this:

  • Every run writes a JSON report and HTML charts, not just console output.
  • Response times are broken out per stored procedure, with p99 through p25.
  • You can tag runs with a PROFILE_ID and diff two configurations directly.
  • loadtest.sh runs through the whole lifecycle of a load test.

Why I Built This

In my work, I frequently benchmark SQL Server configurations, whether I’m comparing versions, testing new hardware, or validating performance tuning changes. Setting up HammerDB manually each time became a significant time bottleneck (see what I did there! ;). I needed an automated solution that would work consistently across different environments and reduce the time required to get test results.

Building a DBA Agent for Your SQL Server Estate with MCP

Yesterday I gave a talk for MSSQLTips called “Building a DBA Agent for Your SQL Server Estate”. I’ll drop the recording into this post once it’s published. What I want to do here is pull the whole thing together in writing: the demos, what I actually ran against a live SQL Server estate, and the argument I’m making when I say an AI agent can be trusted near production.

If you’ve been following along, this is the third post in what’s turned into a series. In Giving AI Agents Visibility Into SQL Server with MCP, I built sql-mcp-server, a custom MCP server that gives an agent real DMV access. I said at the end of that post that skill files were coming in a follow-up also in Using Claude Code as a Database SRE Agent, I showed a skill file catching a silently unprotected DR instance against the Everpure Fusion fleet API and how to build compliance and observability reports quickly. So here we are.

Asynchronous Replication of Snapshots from an ActiveCluster Pod to a Third Array

I’ve been rebuilding my three-site SQL Server demo lab, and I ran into something I’ve wanted for a long time. If you’ve ever designed a SQL Server environment on ActiveCluster, you know the pattern: two FlashArrays running a synchronously replicated pod for zero RPO between sites, and a third array somewhere else for a longer retention, disaster recovery copy. The problem was that you couldn’t get the data to that third array directly from the pod. Protection groups inside a stretched pod simply couldn’t have an array target.

EightKB 2026: Registration is Open!

It’s that time of year again! EightKB is back on August 20th at 13:00 UTC, and registration is open right now. It’s completely free. No catch, just a full day of the deepest SQL Server content you’ll find anywhere on the internet.

Mark, Andrew, and I have been putting this event on since 2020, and this year’s lineup might be the best one yet. All sessions are 400-level. That’s by design. We built EightKB specifically to fill the gap for serious internals content in the SQL Server community.

Using Claude Code as a Database SRE Agent with the Everpure Fusion MCP Server

Here’s the scenario: one of my SQL Server instances migrated to the DR array. The VM moved, the old volumes were destroyed, and nobody created a Protection Group on the destination. There were no alerts. Nothing failed.

The DR environment just quietly had no data protection. No snapshots, no replication. We’d have had no idea until we needed to recover. Ok, well this was in my lab, but this could really happen in the real world.

Microsoft MVP 2026: Ten Years on the Data Platform

I’m honored to announce that I’ve been renewed as a Microsoft MVP for the tenth consecutive year, recognized in the Azure SQL and SQL Server technical areas under Data Platform. Ten years. I honestly didn’t see that coming when I set a five-year goal back in 2016.

Microsoft MVP Badge

Ten Years

I want to stop and acknowledge that milestone for a moment. When I first earned this award in 2017, I was deep in Availability Groups and SQL Server internals. Since then, the journey has taken me through SQL Server on Linux, containers, Kubernetes, storage integrations, and now AI-integrated SQL Server 2025. The platform has transformed dramatically, and I’ve had a front-row seat for all of it.

Giving AI Agents Visibility Into SQL Server with MCP

I’ve been thinking a lot lately about what it actually takes to make an AI agent genuinely useful for database work, both for administration and for application access to the data tier. Writing the T-SQL code is the easy part. A coding assistant can do that out of the box. The hard part is giving it visibility into a running SQL Server: which sessions are blocked right now, where the wait stats are pointing, which indexes the optimizer is begging for. Without that, the agent is just guessing. With application access, an agent can propose how things should work, but what if we had tools that added context describing the agent database’s schema and what the entities actually mean to the application when interacting with the database agentically?

Crash-Consistent Snapshot Cloning - Hyper-V Edition

If you’ve been following my T-SQL Snapshot Backup series, most of what I’ve covered requires SQL Server to participate in the snapshot: the write IO freeze, the metadata backup, the coordinated workflow. This post covers the other side of that coin: crash-consistent cloning. No write freeze. No backup. No point-in-time recovery. Just a raw volume clone that SQL Server recovers from automatically when you attach it.

What Is a Crash-Consistent Snapshot?

When people talk about snapshot backups for SQL Server, they often jump straight to application-consistent snapshots, the kind where SQL Server is asked to freeze write IO before the snapshot. That freeze guarantees every page on disk reflects a logically consistent database state.

Using T-SQL Snapshot Backup - Hyper-V Edition

If you’ve been following my T-SQL Snapshot Backup series, you’ve seen this technique work on bare-metal and standard VM deployments where database files live on volumes directly presented to the SQL Server OS. In this post, I’m bringing T-SQL Snapshot Backup into a Hyper-V cluster environment, with database files on VHDXs backed by a Pure Storage FlashArray Cluster Shared Volume (CSV). Hyper-V adds a few extra layers to manage at the hypervisor level, but the SQL Server side of the story is identical. Let’s walk through it.

Designing a Storage Load Test for SQL Server

I’ve been doing storage load tests for SQL Server for a long time, both as a consultant and now in my work at Everpure, and I see the same patterns over and over. Someone spins up a VM with two vCPUs, points it at a storage subsystem (cloud or on-prem), runs a thousand threads at it, and then concludes that the storage stinks. Or the opposite, where they buy a 64 gigabit HBA, plug it into the wrong PCIe slot, and wonder why they’re leaving half of the capacity on the table.