SQLServerCentral Article

Deprecated but Forgotten: Why SQL Server’s Text, NText, and Image Data Types Still Haunt Your Systems

TEXT, NTEXT, and IMAGE columns have been deprecated for nearly two decades, yet they still silently haunt many SQL Server environments. This article explains their hidden limitations with practical demos and shows why migrating to VARCHAR(MAX), NVARCHAR(MAX), and VARBINARY(MAX) is critical for modern performance, maintainability, and future upgrades.

(4)

You rated this post out of 5. Change rating

2025-09-02 (first published: )

2,099 reads

SQLServerCentral Article

How a Legacy Logic Choked SQL Server in a 30-Year-Old Factory

When a SQL Server Express-based factory app started crawling, the culprit wasn’t hardware or network — it was a decades-old WHILE loop migrated from C/C++ to SQL. This real-world story breaks down how procedural habits, memory grants, and lack of window functions nearly derailed a production floor.

(6)

You rated this post out of 5. Change rating

2025-07-28

14,311 reads

SQLServerCentral Article

We Gave Memory-Optimized Tables a Hash Lookup — Then Tried Pattern Matching Instead

Introduction It was the week before Black Friday — the biggest online ad rush of the year. Our US-based ad-tech platform was gearing up for an insane traffic spike. Hundreds of real-time campaigns were about to go live across multiple brands, each with thousands of user sessions flowing through our system. Every incoming user impression […]

(6)

You rated this post out of 5. Change rating

2025-07-22

2,348 reads

SQLServerCentral Article

When INCLUDE Columns Quietly Inflate Your Transaction Logs

In this article, I wanted to test a common assumption we DBAs make – that adding INCLUDE columns to indexes is harmless. I created a FULL recovery test database with a realistic wide Orders table containing extra large VARCHAR columns to simulate an ERP workload. I ran updates and measured transaction log backup sizes before and after adding INCLUDE columns to a nonclustered index. The results shocked me. The update without INCLUDE columns generated a 10 MB log backup, while the same update with INCLUDE columns produced over 170 MB – a 17x increase in log volume. I explain why this happens: INCLUDE columns are physically stored in index leaf rows, so updates affecting them write bigger log records. I also clarify that updating key columns generates even more log than INCLUDE updates because it involves row movement (delete + insert), but INCLUDE updates still cost more log than if those columns weren’t indexed at all. The takeaway is clear – INCLUDE columns are powerful, but they silently increase transaction log generation, impacting backup sizes, replication lag, and DR readiness. Always measure their real cost before deploying to production.

(3)

You rated this post out of 5. Change rating

2025-07-18

672 reads

SQLServerCentral Article

Unmasking CXPACKET and CXCONSUMER in SQL Server: What Your Execution Plan Isn’t Telling You

This article dives deep into cxpacket and cxconsumer in sql server, explaining how to simulate each, when they appear, and why they matter. Using live execution plans, wait monitoring, and worker thread diagnostics, we uncover how uneven parallelism triggers thread sync waits—and how SQL Server sometimes hides real issues behind innocent-looking CXCONSUMER waits. Includes step-by-step queries, tuning tips, and a real-world scenario where repartition streams quietly ruined performance.

(5)

You rated this post out of 5. Change rating

2025-07-07

3,577 reads

Blogs

Finding the Last Last Name in SQL: #SQLNewBlogger

By

I wrote a piece on the new SUBSTRING in SQL Server 2025 and got...

SQL Server 2025 GAs Today

By

If you aren’t watching the Ignite keynotes today, then you might have missed the...

Run SQL Server 2025 and SQL Server Management Studio on macOS Tahoe

By

Short version You want to get this running as fast as possible. Do these...

Read the latest Blogs

Forums

Email change does not work

By rjkoala1

I changed my email address in Edit Profile page, but it has no effect...

The case for "Understanding our business" training

By David.Poole

Comments posted to this topic are about the item The case for "Understanding our...

Specifying the Collation

By Steve Jones - SSC Editor

Comments posted to this topic are about the item Specifying the Collation

Visit the forum

Question of the Day

Specifying the Collation

I am dealing with issues on my SQL Server 2022 instance related to collation. I have an instance collation of Latin1_General_CS_AS_KS_WS, but a database collation of Latin1_General_CI_AS. I want to force a few queries to run with a specified collation by using code like this:

DECLARE @c VARCHAR(20) = 'Latin1_General_CI_AS'

SELECT  p.PersonType,
        p.Title,
        p.LastName,
        c.CustomerID,
        c.AccountNumber
 FROM Person.Person AS p
 INNER JOIN Sales.Customer AS c
 ON c.PersonID = p.BusinessEntityID
 COLLATE @c
Will this solve my problem?

See possible answers