The Bit Bucket

SQL: sys.dm_fts_parser for Full-Text Word Breaking

SQL: sys.dm_fts_parser for Full-Text Word Breaking

One of my favorite DMFs that most people seem to be completely unaware of, is sys.dm_fts_parser(). It allows you to see the result of the word-breaking occurring within full text search. If you execute the query:

SELECT * 
FROM sys.dm_fts_parser('"Hello Greg. How are you? I haven''t seen you for a while."', 1033, 0, 0);

It returns the following data (along with some other columns):

occurrence special_term display_term
1 Exact Match hello
2 Exact Match greg
10 End Of Sentence END OF FILE
11 Noise Word how
12 Noise Word are
13 Noise Word you
21 End Of Sentence END OF FILE
22 Noise Word i
23 Exact Match haven’t
24 Exact Match seen
25 Noise Word you
26 Noise Word for
27 Noise Word a
28 Noise Word while
36 End Of Sentence END OF FILE

That’s really impressive as it lets you parse text into words. The 1033 was the locale I chose (for US English) and the other two parameters were a stop word list (formerly called a noise word list) and whether or not it should be accent sensitive.

2026-02-03

Fabric RTI 101: Message Brokers and Event Streams

Fabric RTI 101: Message Brokers and Event Streams

Let’s talk about message brokers and event streams — these are the backbone technologies that make real-time systems work at scale.

At the simplest level, a message broker acts as a middleman between the systems producing events and the systems consuming them. Instead of producers and consumers being tightly coupled — where the producer has to know exactly where to send data and the consumer has to be available at the exact right moment — the broker sits in between and handles that communication.

2026-02-02

SQL: Practical SQL Server Encryption - TDE, Always Encrypted, and When to Use Each

SQL: Practical SQL Server Encryption - TDE, Always Encrypted, and When to Use Each

Encryption in SQL Server is often discussed as a checklist item:

  • Is the database encrypted?
  • Do we need Always Encrypted?
  • What does compliance require?

What gets discussed far less often is how these features behave in real systems, what problems they actually solve, and what trade-offs they introduce.

This post looks at Transparent Data Encryption (TDE) and Always Encrypted from a practical standpoint: what each one protects, what it doesn’t, and how to decide which one belongs in your design.

2026-02-01

Fabric RTI 101: Event-Driven vs Request-Driven Systems

Fabric RTI 101: Event-Driven vs Request-Driven Systems

Most of the systems we’ve worked with historically are request-driven. In this model, a client asks for information and the server provides it. Think about browsing a website: you type in a URL, your browser requests the page, and the server responds with the content. That’s a pull model — the client decides when it wants data. It’s predictable, it’s synchronous, and it’s been the backbone of web applications for decades.

2026-01-31

SQL: How SQL Server Really Uses the Service Master Key

SQL: How SQL Server Really Uses the Service Master Key

The Service Master Key (SMK) is one of the most misunderstood security components in SQL Server.

It is frequently described as:

  • The root of all encryption
  • The key that protects everything
  • Something you must back up constantly

Those statements are not entirely wrong - but they are incomplete, and in some cases actively misleading.

It’s important to understand what the Service Master Key actually does, when it matters, when it doesn’t, and why many operational decisions around it are based on myth rather than mechanics.

2026-01-30

Fabric RTI 101: What is the Real-Time Hub?

Fabric RTI 101: What is the Real-Time Hub?

The Real-Time hub is the single, tenant-wide entry point for working with real-time data in Microsoft Fabric. Every Fabric tenant has exactly one Real-Time hub, and it exists independently of individual workspaces.

Real-Time Hub

Single logical place for streaming data

The Real-Time hub is the single, tenant-wide entry point for working with real-time data in Microsoft Fabric. Every Fabric tenant has exactly one Real-Time hub, and it exists independently of individual workspaces.

2026-01-29

Fabric RTI 101: What are Actions?

Fabric RTI 101: What are Actions?

We’ve talked about events, streams, ingestion, and processing — but all of that only really matters if we take the final step: taking action. Actions are what turn insight into outcomes.

It’s one thing to detect that something unusual has happened. Maybe you see a spike in failed logins, a sudden drop in sales, or an overheating sensor. But if you stop at simply noticing it, the value is lost. The real payoff comes when the system — or the people using it — can respond.

2026-01-27

SQL: Common Anti-Patterns that Stop Parallelism

SQL: Common Anti-Patterns that Stop Parallelism

One of SQL Server’s greatest strengths is its ability to execute queries in parallel. When parallelism is available, the engine can divide work across multiple CPU cores and dramatically reduce query duration for large or complex workloads.

Yet in real systems, it’s surprisingly common to find queries that could run in parallel but don’t. The reason is often not hardware, configuration, or cost threshold settings — but query anti-patterns that quietly force the optimizer into a serial plan.

2026-01-26

SQL: Tempdb, Temporary Tables, and Collation: A Design Trap You Can Avoid

SQL: Tempdb, Temporary Tables, and Collation: A Design Trap You Can Avoid

One of the more frustrating classes of SQL Server application failures is also one of the most avoidable: collation conflicts involving tempdb.

Background

I see these issues all the time. Developers create applications that require specific collations at the server level, because they don’t handle temporary tables (and by extension) tempdb well.

All this can be avoided, and you can easily build applications that will work with temporary tables, without worrying about the server (and tempdb) collation.

2026-01-26

Fabric RTI 101: What is Processing?

Fabric RTI 101: What is Processing?

Once events have been ingested, the next step is processing. This is where we take the raw firehose of events and turn it into something meaningful and usable.

NOTE: We’re not talking about storing the events in a database, and then querying them. We can do that, but here we’re talking about transforming the events in-flight. It’s similar to what we could do with Azure Stream Analytics. I like the description that says that instead of throwing a query at the data, you’re throwing the data at a query.

2026-01-25