Blogs

Msg 195: STRING_SPLIT is not a recognized built-in function name

Yesterday, I was writing some Transact SQL to dust off the cobwebs. I got confused when I was playing around with the STRING_SPLIT function, and kept getting the error:

Msg 195, Level 15, State 10, Line 2 ‘STRING_SPLIT’ is not a recognized built-in function name.

I checked my database compatibility level, which must be 130 or higher for the function to be available. My database compatibility level was 160, so that was fine.

The issue? STRING_SPLIT is a table valued function. If your syntax uses it as a scalar function, you will still see a message that it doesn’t exist – but really the issue is that the function exists, but needs to be called with a different syntax.

Let’s look at some examples.

Continue reading

Dear SQL DBA - Performance Tuning with Erik Darling

SQL Server performance tuning expert Erik Darling joins the podcast today to chat about how good queries can go bad and how bad queries can get better.

He also answers the question on everyone’s mind: if he was a database, what database would he be?

Continue reading

What to do when they are sure it was the database... all the time

It can be tiring to have the database constantly be the Prime Suspect for performance problems.

There’s a right way and a wrong way to handle it.

Continue reading

Dear SQL DBA: Tech Interviews in 2023 With Jeremiah Peschka

Tech interviews are weird and wacky. How did they get this way, and how SHOULD they be? Jeremiah Peschka joins us to discuss.

Continue reading

Database Devops Core Concepts: Migration Scripts

Database migration scripts are a popular and effective way to check database code into version control.

In this post I describe the most common features of popular migration script runners for database code deployment, along with the top gotchas that folks hit when versioning their database code with migrations.

Continue reading

Dear SQL DBA - Data Roles: DBA, DBRE, and Data Engineer

There are lots of jobs for data folks. In this episode, I discuss three hot job titles: Database Administrator (DBA), Database Reliability Engineer (DBRE), and Data Engineer (DE).

Continue reading

Why not call Database DevOps simply DevOps?

Sometimes people are annoyed by the term ‘Database DevOps’. Why not call it simply ‘DevOps’? After all, Database DevOps follows the same core principles.

The answer is simple: implementing DevOps is tricky by itself, but most teams are set up to fail when it comes to implementing DevOps for databases. This makes it worth defining as a specialization.

Continue reading

The difference between DBAs, DBREs, and Data Engineers

Twenty years ago, database administrators (DBAs) were the primary career path when it came to specializing in data management.

Much has changed: development patterns transformed from Waterfall to Agile, DevOps drives automation and shared ownership of code, and cloud services have made many more kinds of PAAS databases, data lakes, and data lakehouses available to organizations of all sizes.

These changes have introduced new and varied career paths for data folks which have different emphases on skill sets. In this post, I talk through the commonalities and differences between DBAs, Database Reliability Engineers (DBREs), and Data Engineers (DEs). Whether you’re a hiring manager or data professional, it’s worth knowing about these roles.

Continue reading

Should we do index maintenance on an Azure SQL Managed Instance or Azure SQL Database?

Have you ever received advice that was technically correct, but it was too hard to understand?

I think of this as “accidental bad advice,” because it can lead to confusion and bad outcomes. There’s a LOT of accidental bad advice out there on index maintenance for SQL Server and cloud versions like Azure SQL, even in the official documentation.

In this post I’m answering a common index maintenance question, and we’re going to keep it simple.

Continue reading

Even smart people make terrible data modeling decisions

I was doing a bit of data analysis, and the resulting numbers didn’t quite add up.

I double-checked my queries. Had I goofed in my sql? Nope. Next, I looked into if some of the data was in an inconsistent state.

What I found was worse than what I’d imagined. As a data person, it made me feel sad and icky.

Continue reading