Press "Enter" to skip to content

Curated SQL Posts

Stories of Risk and Reward

Steve Jones shares a few stories:

Most of the time that I have had to consider risk and reward in the past relates to the effort to fix a problem. Not necessarily the time, or data loss, because those are factors that are secondary to me to the ability to get a fix in. Time can matter, but if the organization has a tolerance for time, then I can work with that.

This also goes to whether the organization is willing or likely to try to fix things, or even if they are willing to let me fix things. If not, then I am way more careful about how to approach a design decision.

Click through for those stories.

Leave a Comment

CI/CD for Report Development

Eugene Meidinger checks in some reports:

Continuous Integration / Continuous Delivery (CI/CD) is the software development practice of constantly having new features and changes be saved and brought into a shared environment (integration) and then built into a state for testing and review (delivery). This is in contrast to doing all of your report development in a single PBIX file, making a large batch of changes, and then deploying them all to production.

It’s tempting to assume that these practices are only for large enterprises or professional software companies. In this article, we argue that many CI/CD and related practices form a maturity ladder you can climb, incrementally. Even basic steps can be useful. This is true even if you are the only developer in an organization. To use an analogy, you should still wear a seatbelt even if you aren’t a professional racecar driver.

Click through for Eugene’s advice. Granted, the amount of applicable advice when you’re working with Power BI Report Server is…less.

Leave a Comment

Upgrading PostgreSQL on Debian Linux

Dualcore DBA uses pg_upgradecluster:

In my previous post, we upgraded a PostgreSQL 15 cluster to version 18 using pg_upgrade. In this post, we’ll contrast that with using pg_upgradecluster.

As before, the upgrade process is:

  • Install new version of PostgreSQL
  • Upgrade the existing cluster to the new version
  • Remove the old cluster

Note that we have one less step than the pg_upgrade version, that step being creating the new cluster.

Read on for some attempts and some pain points in the process.

Leave a Comment

Near-Zero Downtime Database Schema Changes in MySQL

Lukas Vileikis makes some changes:

Every growing application eventually faces the same challenge: your database schema needs to change, but your users can’t afford the downtime. Whether you’re adding a column, creating an index, or restructuring a table with billions of rows, schema changes can lock tables, strain server resources, and disrupt live traffic if handled carelessly.

The good news is that MySQL offers several ways to make these changes while keeping your database online and responsive. This guide breaks down the main causes of schema-change downtime and walks through the tools and techniques — from built-in online DDL to third-party utilities like Percona Toolkit and gh-ost — that let you evolve your database safely without taking your application offline.

Click through for some thoughts and recommendations.

Leave a Comment

Assessing an Organizational Team’s Fabric Maturity

Paul Turley shares a tip:

Back in Oct 2024, I posted this article on what we were learning after a year of real-world Fabric projects, and one line from it still holds up: “Organizations come in all shapes and sizes, with various needs and different appetites for simplicity, complexity and sophistication. I’ve always been a bit shy about asking my consulting clients how ‘mature’ their business or IT teams are, but this is honestly the most accurate term.”

Maturity isn’t about company size — it’s how nimbly you can move and how much rigor your culture actually needs and wants. Overshoot it and you get process for its own sake; undershoot it and good ideas run without guardrails. The real question is whether your culture lets you move too fast, too slow, or efficiently — and that’s the lens for the assessment below.

Read on for Paul’s thoughts.

Leave a Comment

A Statistical Error

Hugo Kornelis tells a story:

Anyway, the load process at this customer had multiple steps. Truncate and then fill staging tables with the current data from various source systems. Use the data in those staging tables to update the first of the data vault tables. And then use a join between the same staging table plus the just updated data vault table, with a filter on the current date, to update all other data vault tables.

With some of the tables having more than 500 million rows and over 50 columns, this process needed some time. But that was not a problem. The load finished before the offices reopened. Usually. But not always. Sometimes, it would run a few hours longer. And nobody knew why the load would take extra time at those seemingly random moments.

Read on for the full story. It’s a sobering reminder that each environment is different, and something that worked really well in one environment may fare poorly elsewhere.

Leave a Comment

Improvements in the Microsoft Fabric Capacity Metrics App

Reitse Eskens is pleased:

In case you missed it, Microsoft released a new version of the Metrics App. We all know the current one, and we have opinions on it. But it’s all we’ve got from Microsoft, so we made do.

But now, there’s a new one. Or, well, a new one. When you install a new version, you get a second option!

Click through to see this new app, currently in preview. I wonder if it still requires the same level of permissions to see the contents. I recall that being a sticking point for capacity optimization in Fabric, especially when you bring in consultants who can understand the app but aren’t allowed to see it because of the necessary permissions.

Leave a Comment

Running SSIS Packages in Microsoft Fabric

Koen Verbeeck performs some ETL:

We have a large on-premises ETL solution built with Integration Services (SSIS). We are building a new data platform in the cloud using Microsoft Fabric. While we are building this, we would like to migrate the existing SSIS solution to the cloud so we can decommission our old servers. Is there an option to run SSIS packages in Fabric?

Click through for the answer, which is a solid “maybe, just so long as it fits this exact pattern.” But as Koen explains, some of the restrictions will hopefully go away as the feature matures.

Leave a Comment

The Trade-offs of Indexing

Rob Farley thinks about costs and benefits:

“How do you weigh the risk vs the reward of your database design decisions?” asks my old friend Pat Wright. And one of the examples he gives is around indexes. I like indexes, so let’s talk about some of the choices when you’re thinking about adding a new index. And for the sake of simplicity, a new nonclustered rowstore index.

A new index might make an expensive query be much faster. Users might feel like the application has become much snappier. But a new index is not free.

Read on for Rob’s thoughts.

Leave a Comment

The Power of Group Managed Service Accounts

John Sterrett gets rid of a password:

Somewhere in your environment, a SQL Server service account password hasn’t changed in years. Several people know it, and it’s probably in a script or a spreadsheet. I wouldn’t be surprised if someone hasn’t even put it in an AI chat.  Group managed service accounts (gMSAs) remove that problem.

This past weekend, during my Advanced Security Protection talk (online version you can watch) at Days of Data in Pittsburgh, someone asked: “What are the best practices for encrypting passwords in connection strings?” That reminded me I’m overdue to blog about Group Managed Service Accounts, so here we are, because the best way to encrypt them is to not need to encrypt them.

This does get a lot trickier if you’re not on Windows, and it does require Active Directory. But for most environments, gMSAs are an outstanding idea.

Leave a Comment