Press "Enter" to skip to content

Author: Kevin Feasel

Monitoring Fabric Mirroring of SQL Server 2025

Meagan Longoria wants to make sure things are working as expected:

previously wrote about how the underlying technology for Fabric mirroring changed with SQL Server 2025. The latest version of mirroring that uses the SQL Server Change Feed is reading from the database transaction logs and pushing the data to a landing zone in OneLake. The data is then merged into the Delta tables for the Fabric mirrored database.

In this blog post, we will look at how to monitor this process, both in SQL Server and in Fabric.

Click through for information on the right DMVs to query and what you can find within Microsoft Fabric itself.

Leave a Comment

Explaining Non-Yielding Schedulers during Backups

Sean Gallardy provides an explanation:

Sparked by my friends at Straight Path SQL, we’re going to look at a rare cause of non-yielding scheduler dumps. This is another one of those items that I meant to write about a long time ago when I worked in Support and then, well, I suck and clearly forgot about it. This should give you an idea of how rare this specific issue hits.

Read on to see what might cause this scenario and why you’re likely never to see it in the wild.

Though now that I’ve typed it, I’m sure someone will take that as a challenge.

Leave a Comment

Background on a Performance Monitoring Tool

Erik Darling has a new video:

In this video, I introduce my new free performance monitoring tool for SQL Server, which was developed after a bit of boredom during the holidays and a desire to create something simple yet powerful. The main issue I’ve noticed is that many existing tools are either overly complex or too expensive, making them less accessible to smaller teams or individuals. My goal with this tool was to provide a straightforward solution that doesn’t require setting up VMs, dealing with firewalls, or managing domain accounts—essentially streamlining the process for anyone looking to monitor SQL Server performance without the hassle of a full-blown enterprise setup. The tool supports various editions of SQL Server and even Azure SQL DB, offering both a full version with database logging and an easier-to-use light version that’s self-contained within DuckDB. I also highlight how it integrates machine learning models for those who prefer not to dive deep into dashboards, providing quick answers through natural language queries.

It’s good to have yet another example of the productive powers of boredom.

Also, I need to get back into this tool now that the Linux bug has been fixed.

Leave a Comment

Code to Perform Binary Search in SQL Server

Andy Brownsword has a procedure:

Let’s recap what we’re doing here:

Large append-heavy tables – like logs or audits – often don’t have a useful index on the timestamp. These types of tables do however have a strong correlation between their clustering key and the timestamp due to chronological inserts.

A binary search approach splits the table in half to narrow down the search space with each iteration. By abusing the incremental relationship between the clustering key and timestamps, we can quickly zero in on the point in time we’re after. If you want to see the mechanics, check out last week’s post.

I love the approach for log tables, assuming that a timestamp is part of the filter. This is a clever application of a very common computer science algorithm to database operations.

Leave a Comment

dbt and Microsoft Fabric

Pradeep Srikakolapu and Abhishek Narain dig into dbt:

Modern analytics teams are adopting open, SQL-first data transformation, robust CI/CD and governance, and seamless integration across lakehouse and warehouse platforms. dbt is now the standard for analytics engineering, while Microsoft Fabric unifies data engineering, science, warehousing, and BI in OneLake.

By investing in dbt + Microsoft Fabric integration, Microsoft empowers customers with a unified, enterprise-grade analytics platform that supports native dbt workflows—future-proofing analytics engineering on Fabric.

I’ll be interested to see if this retains corporate investment longer than some of their open-source collaborations. That’s been a consistent issue over the years: announce some neat integrations with a popular technology, release a couple of versions, and then quietly deprecate it a year or two later. This sounds like it’s less likely to end up in that boat, simply based on how the Fabric team is collaborating compared to, say, the various Spark on .NET efforts over the years.

Leave a Comment

Exploring the Fabric Ontology

Jens Vestergaard takes a peek at Ontologies in Microsoft Fabric:

I have been spending a little time with the Microsoft Fabric data agent documentation lately, and one pattern keeps showing up, and it is not just in the official guidance but in community posts from people who have actually tried to deploy these things: the demo runs beautifully. The AI answers questions in plain English, leadership gets excited, the pilot gets approved. Then it hits production. Real users send real questions. The answers start drifting. Numbers that should match do not. The same question returns different results on different days. Trust evaporates faster than it was built.

And almost every time, the root cause is the same thing: the semantic foundation was not solid enough before anyone pointed an agent at it.

That is exactly the problem the Fabric Ontology is designed to address. It is the piece I think most teams will underestimate right up until the moment they need it.

Click through for an explanation. As I continue learning more about the concept of ontologies (not just in Fabric but in general), I’m slowly coming around to the idea. Though it still reminds me a lot of object-oriented programming with a no-code interface.

Leave a Comment

Aggregation on a Filtered Range with SUMIFS()

Ben Richardson uses a DAX function:

Sometimes the columns have shifted, the totals row isn’t showing up, or the colour coding they used last month is gone.

This is not a pivot table problem, pivot tables are excellent tools! The issue is using them for the wrong job.

If you need to explore data – rotating it, slicing it, asking “what does this look like by region?” – pivot tables are unbeatable.

But if you just need a report that always looks the same, month after month, we really recommend SUMIFS.

Click through to see an example of the function in Excel, though it also works the same way in Power BI.

Leave a Comment

Finding SQL Agent Jobs that Start Other Jobs

David Plaut is looking for the root cause:

SQL Server Agent job can start other jobs. Writing jobs this way makes it easy to compartmentalize jobs: start a “child” job only when the “parent” reaches a certain step. Finding these steps can be challenging. There is no field or property in sysjobs or its associated tables to help find child jobs.

Imagine this situation: Job B has started, and you don’t know why. You examine Job B, and it has no schedule. What started Job B?

Read on to learn how you can track down jobs that start other jobs, as well as a recursive lineage of who’s starting whom.

Leave a Comment

An Overview of Major FabCon Announcements

Nicky van Vroenhoven lays out some of the most important changes:

I am sure you have seen, there has been a lot of Fabric and Power BI news lately. Not surprisingly, Fabric Conference was also last week!

I won’t list all the updates here, you can read Arun’s blog, or either of the Fabric or Power BI monthly feature summary blogs to go through the whole list:

Click through for a dozen or so major changes that Nicky highlights.

Leave a Comment

Query Folding and Staging in Fabric Dataflows Gen2

Chris Webb goes digging:

A few years ago I wrote this post on the subject of staging in Fabric Dataflows Gen2. In it I explained what staging is, how you can enable it for a query inside a Dataflow, and discussed the pros and cons of using it. However one thing I never got round to doing until this week is looking at how you can tell if query folding is happening on staged data inside a Dataflow – which turns out to be harder to do than you might think.

Read on to learn more, and also check out the comment describing an alternative approach to part of Chris’s solution.

Leave a Comment