-- senior database administrator & bi consultant
Ronald de Groot
SQL Server runs better once I've had a look at it.
Senior (Azure) SQL Server DBA and SSIS/ETL/BI consultant with over 30 years of experience. Specialised in performance tuning, execution plans, indexes and migrations to Azure.
Complex database & ETL/ELT problems, analysed fast
Since 1992 I have worked as a freelance DBA and BI consultant for banks, insurers, healthcare organisations, energy companies and industry. I analyse complex problems quickly and enjoy coming up with technical solutions — fast. On a project I'm the one who gets things moving: careful planning means I hit deadlines.
New technologies challenge me; I want to understand them quickly and thoroughly. At Stichting BKR (the Dutch national credit registry) I spent years migrating failover cluster environments to Azure SQL Database — and my IT colleagues voted me winner of the "Bruggenbouwer" (bridge builder) trophy for that Azure migration work.
My heart is in performance tuning: reading execution plans, designing the right indexes and turning a slow query into a fast one. These days my focus is Microsoft Fabric, applying that same ETL/ELT and data warehousing background to Lakehouses, pipelines and semantic models.
Beyond that I'm calm, stress-resistant and helpful — a genuine finisher who doesn't shy away from problems. Outside work you'll find me on a road bike or mountain bike, or outdoors flying a drone.
Certifications & recognition
Microsoft Fabric
Implementing Analytics Solutions Using Microsoft Fabric (DP-600) & Implementing Data Engineering Solutions Using Microsoft Fabric (DP-700).
Microsoft Certified: Azure Database Administrator
DP-300 certification, earned October 2020.
SSIS, SSAS & SSRS
Certified across the full Microsoft BI stack: ETL with SSIS, cubes with SSAS and reporting with SSRS.
DTS — Data Transformation Services
Started ETL and DBA work around SQL Server DTS, the predecessor of SSIS.
-
AWARD
BKR "Bruggenbouwer" trophy
Voted by all IT colleagues for supporting the various Azure migrations.
Over 30 years in the field
A selection of recent assignments. The full list goes back to 1992.
Heemskerk, FMgroup · SQL Server DBA
Data migrations.
BMN · SQL Server DBA
Performance tuning of the ETL load process.
NEP · ETL Consultant
Maintaining and implementing ETL changes in SSIS.
Stichting BKR · Azure SQL Server DBA
Migration of databases from failover cluster environments (incl. CKI3, VIS, EVA, VPS, KYC) to Azure SQL Database. Supporting scrum teams, Azure Cost & Security Management, Azure Stack HCI data sync and the Ola Hallengren maintenance solution.
EMS / ABN AMRO · DBA / BI Developer
Performance tuning and redesign of databases and ETL for loading credit card transactions; central export functionality and cube changes.
Greenchoice & WMD · DBA
Setting up remote DBA services; security reporting with the SQL Server Vulnerability Assessment for all database servers in the domain.
Menzis · DBA / BI Developer
Performance tuning, SQL Audit implementation for GDPR compliance and ETL development for SAS.
WMD, Bartimeus & Marel · DBA / BI Developer
VLDB data warehouse for sensor measurements (Big Data), enterprise data warehouse sourced from SAP and Microsoft Dynamics, data warehouse with a QlikView frontend and Azure ETL.
Propertize, Smurfit Kappa, SNS Reaal & PGGM · DBA / BI Developer
Database migrations, a generic SOX audit implementation (DBSP Policy), conversions and ETL for the Actuarial Database (coverage ratio reporting, annual accounts).
1992 — 2011 · DBA/BI work for clients including:
Tools I've built for SQL Server
Alongside consulting work, I also build my own tooling — AI-assisted with Claude Code — for problems the standard tools don't handle well.
SQLRestoreSOS: restore for junior DBAs
A junior dev dropped a table, and now the junior DBA has to fix it. SQLRestoreSOS is a free Windows app around Brent Ozar's sp_DatabaseRestore: restore a full backup chain, recover to an exact point in time with STOPAT to undo the accidental drop, and keep a standby copy current with log shipping.
Try the tool →Log shipping to Fabric?
Shipping large SQL Server tables into Microsoft Fabric for analytics, without real log shipping: SQLtoParquet exports tables to Parquet, uploads them to a Fabric workspace, and validates with Spark. On every run, DuckDB diffs the old and new snapshot to work out exactly which rows were added, changed or removed, instead of re-exporting the whole table. Self-contained Windows executable, no .NET install required. (In Dutch)
Try the tool →
SQLModelViewer
Interactive ER diagrams for SQL Server, auto-generated from the schema — built to replace SSMS's database diagram tool, which is slow, doesn't scale, and has no search or filtering. Produces a single self-contained HTML file with pan/zoom, search and isolate mode, viewable in any browser.
View on GitHub →SQL Server 2025 Backup/Restore Compression: A Benchmark Tool
SQL Server 2025 ships three backup compression algorithms — MS_XPRESS, QAT_DEFLATE and ZSTD — and none of them wins outright. SQLBackupCompression is a small Windows tool that runs all eleven backup/restore combinations against a real database side by side, showing file size, throughput and CPU cost instead of guessing, with live CPU detection that disables QAT_DEFLATE on non-Intel hardware. Source and a compiled build are on GitHub.
Try the tool →A compass in SQL Error Atlas
Onsite but offline for security: the "SQL Error Atlas", a standalone app holding almost every SQL Server errorlog message with its causes and solutions — search, browse and runbooks, with DuckDB underneath. So that on corruption you don't panic and restart the engine.
Try the tool →Statistics Parser
Paste your STATISTICS IO/TIME output and get clear signals instantly — physical reads, worktables, skewed CPU/elapsed time. Free, 100% in your browser, with an optional full report by email.
Try the tool →From the trenches: execution plans & indexes
Practical articles about the topics I work with every day.
Fabric demo: Azure SQL and local SQL into one warehouse table
A PowerShell demo that loads one customer from Azure SQL and one from a local SQL Server into a single Fabric warehouse table, enriches the data with T-SQL and publishes it as a reporting table. Every step is a script, and one cleanup script removes it all.
Read on dbaronald.nl → -- left join · on vs whereLEFT JOIN: why your filter returns too many rows — or too few
One query, three versions: filtering bookings for a missing invoice in status Exported or Printed produces completely different results depending on whether the filter sits in the ON clause or the WHERE clause. One underlying rule explains it all.
Read on dbaronald.nl → -- adaptive joins · bitmap filteringExecution Plan: Adaptive Joins
SQL Server's adaptive join dynamically switches between a nested loop and a hash join mid-execution, using bitmap (bloom) filtering to short-circuit rows when matching transactions against a banned-card list. Walks through the mechanics — false positives, memory grants, and how index design tips the balance.
Read on dbaronald.nl → -- duckdb · columnstoreIn The Ring.. On the Left Side DuckDB, on the Right Side We Have SQL Server Columnstore..
A head-to-head of DuckDB and SQL Server Columnstore indexes on the Backblaze drive dataset (559M+ rows). Grouping by an expression versus a plain column turns out to matter enormously — a 4.7-second query optimized down to 0.058 seconds through aggregate pushdown.
Read on dbaronald.nl → -- inserts · last-page contentionFaster Inserts Using OPTIMIZE_FOR_SEQUENTIAL_KEY
Benchmarking against last-page insert contention: throughput stays stable at 25,000-27,000 rows/sec once concurrent insert sessions exceed the scheduler count — up to 35% faster than with the setting disabled, though it barely matters at low concurrency.
Read on dbaronald.nl → -- index maintenance · fragmentationIndex Maintenance .. the good, the bad and you decide if it's ugly..
A sequential IDENTITY key holds ~99.7% page density after heavy inserts; a random GUID key on the same workload ends up 98% fragmented at 62% density. A head-to-head of REORGANIZE vs. REBUILD against Jeff Moden's "Low Threshold Rebuild" approach — the low-threshold strategy needed 11x less maintenance time and still finished less fragmented.
Read on dbaronald.nl → -- backup chain · LSNBackup @CleanupTime constallations.. all green untill red?!
A restore chain that looks all green but breaks on a point-in-time restore. A diagnostic script validates @CleanupTime timing and backup jobs and shows where the LSN chain breaks — rely on LSNs, not file timestamps.
Read on dbaronald.nl → -- performance monitoring · erik darlingNew Kid in Town: SQL Server Performance Monitoring
Deploying Erik Darling's free PerformanceMonitor on a Windows Server 2022 VM to collect metrics from five SQL Servers into a central PostgreSQL store with a web dashboard — the .NET 10 runtime, service account, JSON config and SQL permissions, plus the certificate and service-identity gotchas.
Read on dbaronald.nl → -- availability groups · log backupYour AG is healthy .. until it feels a little unwell..
A corrupt transaction log backup on the primary replica — yet the database stays online and the Availability Group keeps reporting healthy. A hands-on investigation into why, with the diagnostic approach in a companion GitHub repo.
Read on dbaronald.nl → -- blocking · extended eventsBlocking & Locking, please help..
Capture blocking systematically with an Extended Events session on blocked_process_report, an Agent job that collects into DBA.dbo.BlockWatch every minute, and Erik Darling's sp_HumanEventsBlockViewer to turn the XML reports into readable output.
Read on dbaronald.nl → -- parameter sniffing · PSPParameter Sensitive Plans (PSP) versus Parameter Sniffing
SQL Server 2022's Parameter Sensitive Plans route skewed parameter values to their own cached plan variant instead of forcing one plan to fit all — demonstrated on the classic Posts.ParentId cardinality problem.
Read on dbaronald.nl → -- string functions · execution plansExecution Plans of all String Functions
Thirty-three T-SQL string functions tested one by one against StackOverflow2010, each with its own execution plan — from ASCII to UPPER.
Read on dbaronald.nl → -- table variables · temp tablesTable Variables versus #Temp Tables
Table variables have no statistics? A common assumption — but on recent SQL Server versions, indexed table variables can carry real statistics too, visible right in the execution plan.
Read on dbaronald.nl → -- partitioning · index maintenanceYou Want to Partition Your Huge Table.. Ok Fine.. Let's Go.
How to partition a huge existing table using only metadata-only SWITCH operations and index seeks — no size-of-data operation required.
Read on dbaronald.nl → -- join order · execution plansWhy Join Order Can Make or Break Your Query Performance
Seven variations of one query on StackOverflow2013 show how picking the wrong build/outer side wastes most of the runtime — hints included.
Read on dbaronald.nl → -- query plan · aiAI and Where Does Query Time Go? Using Claude's Query Plan Analysis Skill
A scalar function hides where query time goes. Claude's plan-analysis skill flags it — inlining with STRING_AGG and one index fix it.
Read on dbaronald.nl → -- query store · aiAutomate Executionplan Analysis by Skill and Query Store
Execution plans from Query Store, analyzed automatically by Erik Darling's execution plan skill for Claude Code — performance recommendations included. (In Dutch)
Read on dbaronald.nl → -- ai · query tuningIs AI making an end to my job as a SQL Server query tuner?
Claude reads an execution plan and recommends the index that takes a query from 73 seconds to 435 ms. What's left for the human tuner?
Read on dbaronald.nl → -- query processing · seriesRereading Craig Freedman: ten parts of query processing
Freedman's classic blog (2006–2010) re-tested on modern SQL Server, with real execution plans. The reading guide to all ten parts.
Read article → -- index maintenance · updatedIndexOptimize and additions to Ola Hallengren's dbo.CommandLog
Extra columns that pull page count, fragmentation, size and duration straight out of the ExtendedInfo XML in dbo.CommandLog.
Read on dbaronald.nl → -- performance tuningReading execution plans: what to check first?
An execution plan can be overwhelming. With these five checks you'll find the culprit in most plans within minutes.
Read article → -- indexesIndex tuning: clustered, nonclustered and included columns
The right index is the difference between milliseconds and minutes. How to choose column order and when INCLUDE pays off.
Read article → -- all articlesMore SQL tips
Browse the full list of articles about SQL Server, performance and Azure.
To the overview →Recent projects on GitHub
From server room to cockpit
When I'm not tuning queries, I fly my own plane — the PH-3B7, a Tecnam P96 Golf. And once a developer, always a developer: I built my own flight tools in C#, AI-assisted with Claude Code.
NavigationPlan
A simple but very handy tool for creating a VFR navigation plan: legs, headings, times and fuel — ready for the kneeboard.
View on GitHub → -- C# · open source
WeightBalance
Weight & balance calculator for the Sonaca (Sling 2): enter fuel, crew and baggage and see instantly whether you're inside the envelope.
View on GitHub →A slow query, or a migration that has to succeed?
Happy to help — from a second opinion on an execution plan to full Azure SQL migrations and remote DBA services via OpenData.nl.