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

Troubleshooting Guide: SQL Server Error 2238 – “Too Many Arguments in Call to Function”

Why This Error Happens

Error 2238 occurs when a T-SQL statement calls a scalar or table-valued function with more arguments than the function definition actually accepts. This typically happens after a function has been altered (parameters removed) but calling code or cached execution plans were not updated to match, or when a developer copies a call signature from a different overloaded function/library. In SQL Server 2025, this can also surface after an in-place upgrade from an older compatibility level where deprecated multi-argument system functions were silently accepted but are now strictly validated against the current catalog definition.

Step-by-Step Resolution Guide

Step 1: Identify the Exact Function Call Causing the Error

  • Open SQL Server Management Studio (SSMS) and locate the failing query using the error message text, which includes the function name (%ls).
  • Run the following to check the current definition and expected parameter count:
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.YourFunctionName'));
  • Cross-reference the parameter list in sys.parameters to confirm how many arguments are truly expected:
SELECT name, parameter_id, system_type_id 
FROM sys.parameters 
WHERE object_id = OBJECT_ID('dbo.YourFunctionName');

Step 2: Correct the Calling Code

  • Edit the stored procedure, view, or application query that references the function and remove the extra argument(s).
  • If the function was recently altered by a schema migration, confirm with your development team which arguments were deprecated.
  • Save and redeploy the corrected script to C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Scripts\ (or your source-controlled repository) to keep versions in sync.

Step 3: Clear Cached Execution Plans and Metadata

  • Stale plans can sometimes reference outdated function signatures. Clear the plan cache for the specific database:
DBCC FREEPROCCACHE;
  • Alternatively, target just the affected database using sys.dm_exec_cached_plans to avoid a full server-wide flush in production environments.

Step 4: Validate Compatibility Level Settings

  • Since this is Microsoft SQL Server 2025 on Windows Server 2025 / Windows 11, verify the database compatibility level isn’t causing legacy function signatures to be misinterpreted:
SELECT name, compatibility_level FROM sys.databases WHERE name = 'YourDatabaseName';
  • If necessary, update it to the current supported level:
ALTER DATABASE YourDatabaseName SET COMPATIBILITY_LEVEL = 170;

Alternative or Verification Steps

  • Re-run the original failing query or stored procedure in SSMS after the fix; it should execute without raising Error 2238.
  • If the error persists, use SQL Server Profiler or Extended Events to trace the exact call stack and confirm no other hidden process (e.g., a linked server job or SSIS package) is still passing the old argument count.