How to fix Error 2794 on Windows Server 2025 / Windows 11

Troubleshooting Guide: SQL Server Error 2794

Why This Error Happens

Error 2794 occurs when a custom error message (added via sys.sp_addmessage) or a RAISERROR statement contains a format specifier (such as %d, %s, or %ls) that exceeds the maximum number of substitutable arguments SQL Server allows, which is capped at 20 parameters. This typically happens due to a malformed message template stored in sys.messages, a poorly constructed dynamic SQL string, or a third-party application/extended stored procedure that generates error messages programmatically without validating parameter counts. In rare cases, this can also surface after an in-place upgrade to SQL Server 2025 if legacy message catalogs contain deprecated formatting that no longer aligns with the updated Database Engine parser.

Step-by-Step Resolution Guide

Step 1: Identify the Offending Message or Statement

  • Run the following query to locate custom messages with excessive placeholders:
  SELECT message_id, text FROM sys.messages WHERE text LIKE '%\%%' ESCAPE '\';
  • Review any recent RAISERROR calls in stored procedures, triggers, or SSIS packages that may use more than 20 % format tokens.
  • Check the SQL Server Error Log (Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG) for the exact statement or batch that triggered Error 2794.

Step 2: Correct the Message Definition or Query

  • If using a custom message, drop and recreate it with a compliant parameter count:
  EXEC sp_dropmessage @msgnum = 50001;
  EXEC sp_addmessage @msgnum = 50001, @severity = 16, 
       @msgtext = N'Process failed for item %d with status %s.';
  • For dynamic RAISERROR statements, refactor the code to concatenate strings beforehand instead of passing more than 20 individual substitution parameters.
  • Ensure any application-layer code (e.g., .NET or PowerShell scripts calling SQL Server 2025) isn’t auto-generating message text with unbounded parameter loops.

Step 3: Validate Configuration and Apply Updates

  • Open SQL Server Configuration Manager on Windows Server 2025 and confirm the instance is running the latest Cumulative Update (CU) to rule out a known parser bug.
  • Navigate to C:\Program Files\Microsoft SQL Server\170\Setup Bootstrap\Log\ to verify the installed build version matches Microsoft’s latest patch release for SQL Server 2025.
  • Restart the SQL Server service via Services.msc or net stop MSSQLSERVER && net start MSSQLSERVER to clear any cached execution plans referencing the faulty message.

Alternative or Verification Steps

  • Re-execute the original query or stored procedure that triggered Error 2794 and confirm it completes without exceptions in SQL Server Management Studio (SSMS).
  • If the error persists, isolate the issue by testing the RAISERROR statement in a blank query window with a reduced parameter set to confirm the 20-argument threshold is the root cause.