SQL SERVER 2025 CU4 (Cumulative Update 4) Is OUT! A Hot Take on the New Features for DBAs

SQL SERVER 2025 CU4 Is OUT! A Hot Take on the New Features


👉 If you missed my latest posts on the new SSMS 22.5:


💡 The Hook

SQL Server 2025 CU4 IS OUT.

In this post, I’ll start to break down what really matters in this CU. What can break or save your production environment. So, if you care about stability, parallelism bugs, and hidden engine fixes… you MUST read this.


⚡ TL;DR

✔️ 11 critical fixes targeting engine stability, HA, and JSON behavior 🛠️
✔️ Dangerous bug in SESSION_CONTEXT with parallel plans ⚠️
✔️ Improvements in SQLPAL, Full-Text Search, and replication reliability 🔧
✔️ Multiple fixes that prevent crashes, hangs, and memory corruption
💣

🧠 Intro

Hi SQL SERVER Guys,

The CU releases are where real stability lives, stability doesn't live in RTM! and this SQL Server 2025 Cumulative update 4 is a classic example:

  • Nothing flashy ❌
  • Everything critical ✔️

👉 This is the kind of update that quietly prevents outages.

Today, we’ll start walking through the key fixes and why they matter. Then, in the next posts, we’ll break each of them down in detail—what they fix, why they happen, and how they impact real workloads.

Stay tuned.


💣 The Dangerous One: SESSION_CONTEXT + Parallelism

Let’s start with the most critical issue addressed by this CU4, which we have already discussed in greater detail here:

SQL Server Scalability: The SESSION_CONTEXT + Parallelism Trap Exposed ...and why we are waiting for the SQL SERVER 2025 CU4

👉 Queries using SESSION_CONTEXT can return WRONG results or crash under parallel plans.

What it really is:

SESSION_CONTEXT is not thread-safe in certain parallel execution scenarios.

👉 When SQL Server reuses sessions and distributes work across threads:

  • Data inconsistency may occur ❌
  • Access violations (AV dumps) may occur 💣

This is NOT a minor bug resolved, this is: correctness + stability.

👉 Official Microsoft reference: 

SESSION_CONTEXT documentation



⚙️ Engine Fixes That Actually Matter

Let’s go straight to the impactful ones:

🧠 Non-yielding scheduler fix

    Fix ID: 5063278
  • Fix for lazy writer I/O issues
  • Prevents scheduler stalls
  • Eliminates random freezes under load

💣 If you saw unexplained hangs → this is your fix.

🔁 Replication stability

  • Fixes non-yielding scheduler errors
  • Improves high I/O reliability

🧬 Memory corruption (HA)

    Fix ID: 5019346
  • Fix in contained availability groups
  • Critical for audit reliability

💣 Memory corruption = silent data risk.



📦 JSON Behavior Change (IMPORTANT)

Fix ID: 5029490

👉 JSON_CONTAINS now supports ONLY:

  • 0 → exact match
  • 1 → pattern match

Default = 0

👉 This is a behavior restriction, not just a fix.

If you relied on previous undocumented behavior:

  • Your queries may change results ⚠️
  • Your logic may silently break 💣

📨 Database Mail Fix (YES, finally!)

Fix ID: 4954486 

Contained AG + sp_RunMailQuery issue:

  • Emails sent WITHOUT attachments ❌
  • Now FIXED ✔️

👉 If you automate reporting → this was painful.


🔐 Security & Permissions Fix

Fix ID: 5000227

  • Permissions in msdb could disappear after upgrade
  • Unexpected access issues

💣 This is the kind of bug that breaks production silently.


🐧 Linux Engine Improvement

Fix ID: 5001765

Fix in SQLPAL (the layer in SQL Server that abstracts OS-level operations, enabling the engine to run consistently across different platforms like Windows and Linux)

  • Threads no longer block incorrectly
  • Uses spin-wait instead

👉 Translation:

  • Better concurrency ✔️
  • Less risk of deadlocks/hangs ✔️

🔍 Full-Text Search Fixes

  • Fix for fdhost.exe hangs
  • Fix for inflectional search errors

👉 If you use FREETEXT / FORMSOF → upgrade.


🧪 List of the Improvement and Fixes in SQL SERVER 2025 CU4

Bug Reference Description Fix Area Component Platform
4954486 Fixes an issue in contained availability groups that causes DatabaseMail to send email messages without attachments when using sp_RunMailQuery. SQL Server Client Tools Database Mail All
5000227 Fixes an issue where permissions on stored procedures and other objects in msdb are lost during SQL Server upgrade, causing unexpected permission removal. SQL Server Engine Management Services Windows
5001765 Fixes an issue where the server enters unintended wait states on threads that do not support suspension. Now uses spin-wait instead of blocking. SQL Server on Linux SQLPAL Linux
5003709 Fixes an issue where DTSWizard.exe does not open if SQL Server is installed without SSIS features. Integration Services Integration Services Windows
5008479 Fixes an issue where indexing certain Word 6.0 documents via Full-Text Search causes fdhost.exe to stop responding. SQL Server Engine Search All
5019346 Fixes a memory corruption issue in audit functionality for contained availability groups. SQL Server Engine High Availability and Disaster Recovery All
5028791 Fixes an access violation when querying sys.dm_xe_session_targets on Windows Server 2025. SQL Server Engine SQL OS Windows
5029490 Limits Json_contains comparison mode to 0 (exact match) or 1 (pattern match). Default is 0. SQL Server Engine JSON All
5033606 Restricts adding databases to the current contained availability group and enforces database owner matching. SQL Server Engine High Availability and Disaster Recovery All
5063278 Fixes non-yielding scheduler errors and dump issues during heavy lazy writer I/O. SQL Server Engine Replication All
5071334 Fixes inflectional Full-Text Search failures for languages without IStemmer support. SQL Server Engine Search All



🚀 My REAL Strategy

No theory. Just what I actually do in production:

  • ✔️ Apply CU4 immediately on systems using SESSION_CONTEXT
  • ✔️ Test JSON logic regression (very important)
  • ✔️ Monitor wait stats after upgrade
  • ✔️ Validate msdb permissions post-update
  • ✔️ Always benchmark before/after

👉 CU4 is NOT optional if you run critical workloads.


📚 Official Sources




📢 Support the Blog: Did you find this deep-dive helpful? The ads you see here are selected to reflect your interests. If a partner's offer catches your eye, give it a look! Your engagement helps me continue publishing premium SQL Server content for the community.

Biondi Luca @2026 - Sharing over 25 years of Gained Knowledge for Passion. Share if you like my posts!

Comments

I Post più popolari

Speaking to Sql Server, sniffing the TDS protocol

SQL Server, find text in a Trigger, Stored Procedures, View and Function. Two ways and what ways is better

SQL Server, Avoid that damn Table Spool!