Does SQL Server Support Custom Domains?
If you have spent time with PostgreSQL or Oracle, or read enough of the SQL standard to regret it, you have probably met the CREATE DOMAIN statement. A domain is a named, reusable type with…
Isolation Is a Contract: Multi-Tenant Data Boundaries
This is the last post in the series, and it is about the promise with the least tolerance for being broken. Most contract violations cost you a bug report or an awkward migration. This one…
What Changed, When, and by Whom: Temporal Tables and CDC
The was about announcing change as it happens. This one is about the opposite direction in time: being able to answer, later, what a row used to look like, when it changed, and ideally who…
The Transactional Outbox: Reliable Messaging Without Distributed Transactions
The made retries safe: when the same message arrives twice, the database refuses to act on it twice. That solves the consuming end. This post is about the producing end, and a problem that sounds…
Idempotency Is a Contract: Making Retries Safe from the Database Side
The closed out the first half of this series, the part of the contract you can see: column names, types, result-set shapes, the behavior of a single call. The rest of the series is about…
Proving the Contract Holds: Testing Database Code
The ended with a contract smoke test: a query that fails the build if a published view loses a promised column or changes a promised type. That test is worth having, and it is not…