Press "Enter" to skip to content

Author: Kevin Feasel

Data Corruption in PostgreSQL

Josef Machytka explains a new (for PostgreSQL) solution to an old problem:

PostgreSQL 18 made one very important change – data block checksums are now enabled by default for new clusters at cluster initialization time. I already wrote about it in my previous article. I also mentioned that there are still many existing PostgreSQL installations without data checksums enabled, because this was the default in previous versions. In those installations, data corruption can sometimes cause mysterious errors and prevent normal operational functioning. In this post, I want to dissect common PostgreSQL data corruption modes, to show how to diagnose them, and sketch how to recover from them.

Read on to learn more, as well as what this new change means.

Leave a Comment

An Overview of SQL Database in Microsoft Fabric

Rebecca Lewis shares some thoughts:

Now let’s look at an actual transactional database running inside Fabric.

SQL database in Microsoft Fabric became generally available at Ignite in November 2025. This isn’t a data warehouse. It’s not a lakehouse with a SQL endpoint. It’s a real OLTP database — based on the same engine as Azure SQL Database — designed for operational workloads, running as a fully managed SaaS service inside your Fabric capacity.

Read on for some thoughts around capabilities and current limitations.

Leave a Comment

Releasing a tSQLt Test Adapter for VS2022 and Later

Ed Elliott has been busy:

I have had a number of requests for me to update the tSqlt Test Adapter over the years so it would work with more recent versions of Visual Studio. I finally got around to doing this and I am pleased to say that the new version works with VS 2022, 2025 and should continue to work in future releases.

Between Visual Studio 2017 and 2019 the changes required were minimal but between 2017 and 2022 the changes meant a rewrite of the test adapter visual studio integration parts which meant it wasn’t a simple change.

Read on for information on how to install and use the extension.

Leave a Comment

Split Screens in SSMS

Greg Low has a large monitor:

If you are working with really long script files in SSMS, you might need to work on more than one part of the script at the same time. Perhaps you need to work on a function, and also on the code that calls the function.

Click through for a short-but-sweet demonstration. I rarely used split screen in SSMS, but it is nice for comparisons or viewing two parts of a file at the same time.

Leave a Comment

Diagnosing DirectQuery Performance Woes

Chris Webb digs into one type of DirectQuery performance slowdown:

One very common cause of Power BI performance problems is having a table with a large number of rows on your report. It’s a problem I wrote about here, and while I used an Import mode for my example in that post I also mentioned that this can be an even bigger problem in DirectQuery mode: while the DAX query for the table visual might have a TOPN filter that asks for 502 rows, the query going back to the DirectQuery data source (usually a SQL query) may not have that filter applied and could return a much larger number of rows, which could then take a long time for Power BI to read. I wrote about this in more detail here and showed how you can diagnose the problem in Performance Analyzer by looking at the Execute DirectQuery event and ActualQueryDuration, RowsRead and DataReadDuration metrics. But now I have a custom visual to display Performance Analyzer export data, what does this look like? Also, what can Execution Metrics tell us?

Read on to learn more.

Leave a Comment

Thoughts on the State of SSIS

Andy Leonard shares some thoughts:

At the outset of 2026, I live in two worlds.

I continue to support clients who use SSIS for enterprise data engineering. Some of the enterprises are small-ish by comparison. Others are huge. Some friends also continue to support these clients and clients like them. That’s World 1.

World 2 is social media. I have some friends on social media. Many I know IRL (in real life). Most, though? Most are acquaintances. Most of my interactions on social media are with people I don’t really know or don’t know that well. Conversely, many of them – of you – don’t know me that well, either. I touched on this in a recent newsletter / post titled 2025: A Number Containing Two 2’s, One 5, and a 0.

My biggest problem with SSIS is that Microsoft has almost zero real effort into it in the past decade, which makes me hesitant to use it anymore. Yeah, I have gripes about CI/CD—BIML resolved a lot of those for me, but I haven’t seen anybody talk about that topic in the past 8 or so years, either. Andy has done a lot of good stuff with his DILM suite as well, and there are some good third-party components that implement functionality Microsoft never got around to doing. But at the end of the day, how long does Microsoft continue to “support” SSIS, and at what point does this become a corporate risk?

Leave a Comment

A Quick Explanation of Terraform and Ansible

Amy Abel explains a pair of technologies:

Terraform and Ansible are often mentioned in tech conversations, but DBAs, product teams, and even support staff may not always know what they are or why they matter. Here is a simple way to understand them.

Amy uses the analogy of the crew setting up for a concert. The post doesn’t get into the details of how either technology works, but it does help explain for an outsider why they are interesting technologies to use.

Leave a Comment

Performance of Regular vs Limited Relationships in DAX

Marco Russo and Alberto Ferrari do a performance comparison:

Relationships between different data islands are the most common case of limited relationships. In that scenario, performance depends on multiple factors, most of which are not under the control of a DAX developer. Indeed, when mixing data from different data islands, the DAX formula engine must act as a bridge between them, resulting in complex execution plans. Besides, when two tables reside in different data islands, only limited relationships can connect them. Therefore, a performance comparison would not make sense, as there are no alternative options to link the tables.

However, a model can have limited relationships in the very special case of two tables stored in the same data island and connected by a many-to-many cardinality relationship. By nature, many-to-many cardinality relationships are limited. While they seem like a convenient way to link two tables when the key used to link them together is not unique in both tables, many-to-many cardinality relationships are extremely expensive, and a wise data modeler should limit their use strictly to cases where they are absolutely necessary. In this article, we analyze the differences between regular and limited relationships, focusing solely on performance.

Read on to learn more.

Leave a Comment

The Cost of Heaps in SQL Server

Heaps killed Vlad Drumea’s dog and now it’s time to get revenge:

In this post I cover some unpleasant side-effects of using heaps in SQL Server for anything else than staging tables.

In the past couple of months I’ve been running into performance issues caused by the strange decision to have very active tables as heaps.
And, at this point, I’m on a personal vendetta against heaps in SQL Server.
As a result, I’m writing this blog post so that I can refer people to it the next time I’ll have to explain why heaps don’t match their use cases.

I, for one, wholeheartedly support Vlad’s vendetta. There are very rare circumstances in which it makes sense to use a heap in a non-temporary SQL Server table. Otherwise, define that clustered index.

Leave a Comment