Press "Enter" to skip to content

Day: October 30, 2026

Load Testing Azure SQL GP and BC

Reitse Eskens continues a series on load testing. First up is Azure SQL Database General Purpose edition:

My previous post on load testing Azure SQL covered the Premium Edition; today I’m moving to the General Purpose Tier.

The GP tier comes in two flavours: regular and serverless. Serverless has only one hardware tier: Gen5. With provisioned, you can also select memory-optimised or confidential compute. In earlier tests, I never found significant differences between serverless and provisioned, so I skipped testing both SKUs. Given the nature of these tests, going memory-optimised didn’t seem to make much sense either. Also, I’ve never seen any other deployment than the regular Gen5 General Purpose database.

And then there’s Business Critical:

My previous post on load testing Azure SQL covered the General Purpose Edition, let’s move it up to the Business Critical Tier

The Business Critical tier comes in two flavours: General and confidential compute. For my testing, I’ve stuck with the General SKU. I haven’t seen confidential compute with customers, and it has very specific use cases: you want to protect your threads on the processor itself. A lot happens behind the scenes to make that work, and it costs more. There are scenarios where this makes sense, but not in my work. For example, using 8 cores for regular business-critical workloads costs about 3,650 euros each month. Confidential Compute will cost about 6,000 euros each month. So yeah, you need a use case for that.

Click through for results on each.

Leave a Comment

The Limits of CHOOSE()

Steve Jones performs a test:


I was looking over the CHOOSE() function while editing an article at SQL Server Central. I realized there isn’t a documentation note on how many parameters can be included. I decided to test.

This post looks at the tests and results.

Click through to see how many parameters Steve was able to cram in before the whole thing fell apart. This is definitely a place where Swart’s 10% Rule comes into play.

Leave a Comment

Clean Up the Housekeeping Jobs

Aaron Bertrand shares some advice:

When I inspect a new SQL Server instance for the first time, I am often surprised by the number of maintenance and housekeeping jobs. There can be a lot going on, and it’s not uncommon to find several of these jobs scheduled to start at the same time, usually at exactly midnight. This can create compounded resource usage and practically invites the processes to interfere with each other.

For many of these routine tasks, I would much rather have a single job that runs them sequentially. This avoids concurrency issues and gives us a much cleaner view of the job list, current activity, and execution history. And no, I don’t mean putting every maintenance operation into one ginormous job, but there are definitely some consolidation opportunities worth pursuing, particularly for things that run once a day or less.

Click through for a series of examples and what Aaron would do with each.

Leave a Comment

The Shape of a Shape Profile

Jonathan Stewart continues a series on Shape:

Read it top down:

  • Title and row count. 1 table(s) · 5,000 rows profiled. Check this first. If it’s not the population you meant to profile, nothing below answers your question.
  • Capture line. captured safe (k=5). A safe capture shows statistics and formats only for a sensitive column, and lists a category only if at least 5 rows have it.
  • Table line. 5,000 rows · 8 columns · primary key: order_id. The primary key is detected from the data, not read from a schema.
  • Sampling. read whole: 5,000 rows; adequacy adequate. Shape read every row. Two analyses sample inside: pattern detection on 1,000 rows and distribution fitting on 2,000. The adequacy line says a value that appears in at least 0.06% of rows is seen with 95% probability.

Click through for the demo.

Leave a Comment

Table Distributions in Azure Synapse Analytics Dedicated SQL Pools

Andy Brownsword has a revelation:

When designing tables in a Synapse Dedicated SQL Pool, I initially focussed on the ‘SQL’ and not so much the ‘pool’. How tables are stored is fundamentally different to other Azure SQL offerings, so it’s easy to get tripped up and impact efficiency and performance.

Let’s see how the SQL pools work differently and how to tailor your tables for optimal performance.

Click through for an explanation of the three distribution strategies and when you might use each. As a quick note, the REPLICATED option sounds like it’d be really great, but in practice, there are some major drawbacks as table sizes get larger. That’s a big part of why we save them for small, rarely-changing dimensions.

Leave a Comment

Types of Applications in Microsoft Fabric

Valerie Junk disambiguates a term:

When you log in to Power BI online these days, you may notice more than one type of App.  You have the Apps you’ve known for years, Fabric Apps where people can even write data back, and Org apps that can include all kinds of items like reports and even a Fabric App.
Confused? Honestly, so was I, and I’ve been using Power BI for a long time.

In this article, I go through them one by one: where to find each one, what it does, and when to pick each.

Click through for the breakdown of three different classes of application.

Leave a Comment

Administering Power BI at Scale

Heidi Hasting shares some notes:

PPCC26 has wrapped up and I am still buzzing. A huge thank you to everyone who came along to Power BI Administration at Scale: Governance Patterns for Enterprise Deployments with Shabnam Watson and me. I promised I would share the demo code, so here it is.

In this post, I’m going to cover:

  • A quick recap of the session
  • How this builds on my earlier tenant settings post
  • What the demo does and how it works
  • Where to download the notebook and the full kit

Click through for that recap as well as some extra details and tools.

Leave a Comment