SQL Server guides, by problem
Practitioner-level guides with runnable T-SQL, one subject each, grouped by where the problem shows up. The performance column is the place to start when a server is slow; the second column is for when it is down or moving.
- SQL Server Health Check
How I review a whole instance: configuration, storage, indexing, waits, backups. - SQL Server Performance Tuning
Start here for a slow query: wait statistics first, then where to look next. - Parameter Sniffing and Bad Plans
Why the same query is fast one day and slow the next, and fixes that last. - Blocking and Deadlocks
Reading deadlock graphs and blocking chains to the root cause. - Query Store
Finding regressions, forcing plans, and the storage defaults that bite. - Index Fragmentation
What a rebuild costs on a busy server and when to stop scheduling them. - Update Statistics
Thresholds, sample rates, and the histogram behind a bad estimate. - Temp Tables vs Table Variables
Cardinality, recompiles, and which one to reach for.
- Always On Availability Groups
Listeners, quorum and witness, failover, and the mistakes that cause split-brain. - Disaster Recovery
RPO, RTO, and choosing between availability groups, log shipping, and backups. - DR Runbook
Failover sequences, tail-log restores, and testing the plan before you need it. - Shrink the Transaction Log
The emergency fix first, then why the log filled. - Migration and Upgrade Playbook
Compatibility levels, cutover, rollback, and validating performance after the move. - Azure SQL vs AWS RDS
Cost, HA, limits, and what breaks in the move to PaaS. - Standard vs Enterprise
Which features your edition has, checked row by row.
- Data Types
Sizing, implicit conversion, and what each choice costs at scale. - Changing a Column Type
Altering a large table without taking an outage. - Date Functions
Sargable predicates, rounding traps, and date parsing. - Identity Columns
Gaps, reseeding, and running out of INT.
- PIVOT
The syntax, its limits, and the dynamic version. - MERGE
What still breaks and how to write it safely. - TRY...CATCH
Where it fails and what to write instead. - TRUNCATE vs DELETE
Logging, rollback, and when each one is the wrong tool.
Securing SQL Server, in three parts
A practical series on locking down Microsoft SQL Server — who gets in, what gets recorded, and what an attacker sees if they reach the files.
Part 1: Authentication, Network & Data Protection
Authentication and role-based access, forced connection encryption and network isolation, and in-database controls like Row-Level Security and Dynamic Data Masking. Start the series →
Part 2: Auditing & Threat Detection
SQL Server Audit, login auditing, temporal tables for change history, Ledger tamper-evidence, and Microsoft Defender for SQL. Read part 2 →
Part 3: Encryption at Rest & Key Management
TDE, backup encryption, Always Encrypted, the key hierarchy, and EKM with Azure Key Vault — and how to choose between them. Read part 3 →
Real client results
Write-ups of actual SQL Server engagements — the problem, what was at risk, what I did, and the outcome. For the running summary across engagements, see client results and the cloud & ETL work.
Migrating 11 Databases off SQL Server 2008
~700 GB across 11 databases moved from end-of-life SQL Server 2008 to 2017 with log shipping, a rehearsed rollback, and a reduced-downtime cutover. Read the case study →
Retiring SQL Server 2012: 84 Databases, One Quiet Cutover
84 databases moved to SQL Server 2019 Standard via database mirroring — the whole cutover in about 2 hours 25 minutes. Read the case study →
Tuning a Struggling SQL Server on AWS RDS
Measured wait and plan analysis, index strategy, and plan reuse — tuning as cost control instead of another instance-size upgrade. Read the case study →
Need SQL Server help now?
I offer remote and fractional SQL Server DBA and consulting services — performance tuning, HA/DR, migrations, and cloud database work. See what I do, review client results, or get in touch to talk through your situation.