Azure-Sql-Db

SQL: Common Anti-Patterns that Stop Parallelism

SQL: Common Anti-Patterns that Stop Parallelism

One of SQL Server’s greatest strengths is its ability to execute queries in parallel. When parallelism is available, the engine can divide work across multiple CPU cores and dramatically reduce query duration for large or complex workloads.

Yet in real systems, it’s surprisingly common to find queries that could run in parallel but don’t. The reason is often not hardware, configuration, or cost threshold settings — but query anti-patterns that quietly force the optimizer into a serial plan.

2026-01-26

Data Tales 13: The case of the invisible brake

Data Tales 13: The case of the invisible brake

This is the thirteenth tale in a series of stories about data. I hope you enjoy the series.

Today’s tale relates to a SQL Server system that had wonderful hardware, yet was unbelievably slow. Let’s discuss what happened.

Some background information

I had a call from the Microsoft office in Brisbane, Queensland, asking if I had time to look at a problem at a customer site. Both they, and the customer, had thrown considerable resources at trying to resolve a performance problem, but frustratingly, it persisted.

2026-01-24

SQL Interview: 112 Trigger and constraint execution order

SQL Interview: 112 Trigger and constraint execution order

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Development Level: Medium

Question:

You have tables that have both constraints and triggers. You need to explain the order of execution for these. Which execution order (from first to last), are used for:

  • Check constraints
  • After triggers
  • Instead of triggers

Answer:

2026-01-18

SQL Interview: 111 Simple recovery and log truncation

SQL Interview: 111 Simple recovery and log truncation

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Administration Level: Advanced

Question:

If a database is configured for simple recovery model, what could stop the truncation of the transaction log being effective, and for the transaction log to keep growing in size?

Answer:

Here are the most frequent reasons:

2026-01-16

SQL Interview: 107 Timestamp data type and time

SQL Interview: 107 Timestamp data type and time

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Development Level: Intro

Question:

You are reviewing the design of a database and note that in the dbo.Customers table, there is a column called CustomerTimestamp that has the timestamp data type.

Can you extract the date from the CustomerTimestamp column by using the CONVERT function?

2026-01-08

SQL Interview: 100 Query duration vs execution plan cost

SQL Interview: 100 Query duration vs execution plan cost

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Administration Level: Medium

Question:

You are tracing queries using Extended Events. Two queries have exactly the same execution plan, and the same plan costs. In the trace, one query showed a duration of 2 minutes. The other query showed a duration of over an hour.

2026-01-07

SQL: Stop connecting applications as dbo or sa

SQL: Stop connecting applications as dbo or sa

I can’t tell you how many sessions for developers that I have attended, where the demonstration shows an application connecting to a database as the database owner (dbo) or as a system administrator (like sa). Are we then surprised when developers do this in their own applications?

Please don’t do this.

If you’re running a utility application that’s only used by administrators, and is run within a secure part of the environment, that might be ok. But for normal user applications, it’s just not safe to do so, and it’s really poor practice.

2026-01-05

SQL Interview: 103 Stored procedures and transactions

SQL Interview: 103 Stored procedures and transactions

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Development Level: Medium

Question:

Does a stored procedure automatically provide a transaction i.e., if a statement within a stored procedure fails, are all previous data modification statements rolled back?

Answer:

No, a stored procedure does not automatically provide an implicit transaction.

2025-12-30

SQL Interview: 102 Checkpoint writes

SQL Interview: 102 Checkpoint writes

This is a post in the SQL Interview series. These aren’t trick or gotcha questions, they’re just questions designed to scope out a candidate’s knowledge around SQL Server and Azure SQL Database.

Section: Administration Level: Advanced

Question:

When checkpoint writes occur, is only committed data written, or is uncommitted data written?

If only committed data, explain why.

If both, explain why.

Answer:

Checkpoint is a background process that:

  • Flushes dirty pages (pages in memory that have been modified since they were read from disk) to disk.
  • Records a log sequence number (LSN) in the transaction log that marks the point at which the database is known to be consistent on disk.

This means that SQL Server doesn’t flush only committed transactions — it flushes all dirty pages, whether the transactions that modified them are committed or not.

2025-12-28

SQL: The most frequently misunderstood query plan operators

SQL: The most frequently misunderstood query plan operators

Execution plans are one of the most valuable tools in SQL Server for understanding how a query is executed. But even experienced developers and DBAs regularly misinterpret certain operators. Some of these operators look deceptively simple, others have subtle side effects, and a few behave differently depending on cardinality estimates or memory availability.

This post walks through the execution plan operators that are most frequently misunderstood, what they actually mean, and how to interpret them correctly.

2025-12-24