Press "Enter" to skip to content

Month: August 2025

SQL Server Regular Expressions with Multiple Matches

Louis Davidson has popped and therefore cannot stop:

The goal of this week’s entry is specifically to show how to see how multiple matches can be viewed using SQL Server’s RegEx, specifically to make the examples clearer (especially in the upcoming entries).

There are several functions that you can use where multiple matches are used as part of the output:

Click through for that list and several examples of relevant functions in action.

Leave a Comment

Sundry Causes of Slow Disk Performance

Kevin Hill thinks about I/O:

“SQL Server is slow.”

We’ve all heard it. But that doesn’t always mean SQL Server is the problem. And “slow” means nothing without context and ability to verify.

More often than you’d think, poor performance is rooted in the one thing most sysadmins don’t touch until it’s on fire: the disk subsystem.

There are other potential causes as well, such as choosing the wrong RAID array format (like, say, RAID 6 for your extremely busy log files) and limited bandwidth to a SAN. Note that Kevin’s listings for what constitutes acceptable disk focuses primarily on on-premises solutions, maybe biased toward direct attached storage versus a SAN. For cloud databases, spikes of 30-60 seconds are perfectly fine, of course.

Leave a Comment

Grouping and Binning in Power BI

Reza Rad pulls an older post out of the archives:

The latest update of Power BI Desktop (October 2016) has many features. Two of these features are grouping and binning. These features used to create groups of items and visualize them better in the report. Previously you could do that by Power Query or DAX calculated columns, now it is all possible simply through the graphical user interface of report editor. In this post I’ll show you how to create banding (binning) and grouping simply with these features. If you like to learn more about Power BI; read the Power BI online book from Rookie to Rock Star.

How long has Curated SQL been around? Long enough that I covered this the first time. But hey, it’s still valid information.

2 Comments

Azure API Management in front of Databricks and OpenAI

Drew Furgiuele has a follow-up:

A few months ago, I wrote a blog post about using Azure API Management with Databricks Model Serving endpoints. It struck a chord with a lot of people using Databricks on Azure specifically, because more and more people and organizations are trying their damndest to wrangle all the APIs they use and/or deploy themselves. Recently, I got an email from someone who read it and asked a really good question:

Click through for that question, as well as Drew’s answer.

Leave a Comment

Data Dictionaries in Power BI

Ben Richardson builds a dictionary:

Have you ever opened a Power BI report and felt overwhelmed by all the columns, measures, and tables?

It can feel like a guessing game trying to figure out what each field represents.

A well-built data dictionary eliminates that confusion, giving you clarity and confidence when exploring reports.

This is one of those bits of documentation that can be incredibly useful but people rarely keep it up to date.

Leave a Comment

Microsoft Fabric Data Warehouse July 2025 Recap

Charles Webb lays out some updates:

Welcome to What’s New in Fabric Warehouse, where we’ll spotlight our work improving quality, delivering major performance enhancements, boosting developer productivity, and our continuous investments in security. Whether you’re migrating from Synapse, optimizing your workloads, writing SQL in VS Code, or exploring new APIs, this roundup has something for every data professional. With quality and experience at the forefront, we’ve summarized and highlighted key improvements we think you’ll love, organized into three sections:

  1. What’s New
  2. Docs Updates
  3. Roadmap Updates

Read on for that update.

Leave a Comment

Thoughts on Views

Joe Celko shares some thoughts on views, as well as recursive common table expressions:

VIEWs are an undervalued and underused feature in SQL. They basically consist of a query that has been given a name, and a parameter list, so can be used like an inline macro. Technically, you’re supposed to think of it as a virtual table. 

The idea of an inline macro or inline function goes way back to the first versions of Fortran and later BASIC. Depending on the product, the syntax might look like this: FN DOUBLE (N) = (N + N). You had to give the name of the Macro, a simple optional parameter list, assignment operator, usually an =, and the text of the computation. It was often important to put parentheses around the body of the macro, or to have a compiler that would do this for you. 

Read on for the article and a platform-agnostic coverage of views. My problem with views is that developers try to use them to cover a lot of ruin and then they ask why such a simple SELECT * FROM Something query is so slow.

Leave a Comment

ACE Drivers and Linked Servers

Sean Gallardy has a public service announcement:

There’s been a resurgence of people pointing out dumps occurring in SQL Server when using linked servers with the ACE drivers. It’s been on the MCM email list, forums, SQL Server Feedback site, everywhere, and it’s basically the same response every time… ACE drivers were not made to be used as linked server drivers in SQL Server.

To be fair, how could the company that produces Access and Excel possibly be in contact with the company that produces SQL Server and create a driver that works well?

I have used the ACE drivers for PolyBase, though that was for fairly light-duty work and thus I haven’t seen any dumps. But I guess if you want a higher-quality driver, go with someone like CData.

Leave a Comment

Updates to Extensions in C# 14

The word miners in the NDepend blogging mines clue us in on an update to the C# language:

A few remarks:

  • If the extension is generic, the type parameter (if any) is specified immediately after the extension keyword.
  • The receiver ReadOnlySpan<T> span applies to one or more extension methods (or members) declared within the same extension block. This logical grouping is a core advantage of the new syntax, improving clarity and structure when extending a type.
  • As far as the C# compiler is concerned, the two methods Truncate() are strictly equivalent. Therefore, one must be commented out for the program to compile.
  • Notice the call to AsSpan() in the first line. Extension methods require the receiver type to match exactly ReadOnlySpan<T>, hence it doesn’t apply to string unless you explicitly cast. This is not specific to the new syntax but worth mentioning.

Read on for examples of how extension methods and extension members will open up opportunities to improve existing C# code.

Leave a Comment