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

Troubleshooting Guide: SQL Server Error 2205 – “%s””%ls”” was expected.”

Why This Error Happens

Error 2205 in Microsoft SQL Server 2025 is a parser-level syntax error that occurs when the T-SQL engine encounters a token or keyword that does not match the expected grammar at a specific point in the statement. This typically stems from malformed DDL/DML syntax, mismatched quotation marks or brackets, or incompatible syntax carried over from a legacy compatibility level during an upgrade to SQL Server 2025. It can also surface when a stored procedure, view, or trigger was created using deprecated syntax that the updated parser no longer silently tolerates.

Step-by-Step Resolution Guide

Step 1: Identify the Exact Statement and Line Number

  • Open the SQL Server Error Log via SSMS (Management > SQL Server Logs) or check C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG on Windows Server 2025.
  • Locate the full error message, which will reference the line number and the specific token expected (e.g., a missing comma, parenthesis, or keyword).
  • Isolate the exact batch or script that triggered the error by checking the client application log or SQL Profiler trace.

Step 2: Validate and Correct T-SQL Syntax

  • Open the offending script in SSMS and use Query > Parse (Ctrl+F5) to pinpoint the exact character position of the syntax failure.
  • Check for common culprits: unmatched single/double quotes, missing END statements, incorrect bracket nesting [ ], or trailing commas in column lists.
  • If the script was auto-generated or migrated from an older SQL Server version, verify it against SQL Server 2025 Books Online for deprecated syntax changes (e.g., removed COMPUTE BY, legacy *= outer joins).

Step 3: Check Database Compatibility Level

  • Run the following to check the current compatibility level:
  SELECT name, compatibility_level FROM sys.databases WHERE name = 'YourDatabaseName';
  • If the database was recently migrated, temporarily test against the newer compatibility level to confirm the syntax is now strictly enforced:
  ALTER DATABASE YourDatabaseName SET COMPATIBILITY_LEVEL = 170;
  • Update any legacy stored procedures or dynamic SQL strings flagged by the parser to align with current T-SQL standards.

Step 4: Rebuild or Re-deploy the Object

  • Drop and recreate the affected stored procedure, function, or view using the corrected syntax.
  • If using SSDT or a DACPAC deployment, rebuild the project in Visual Studio 2025 to catch syntax errors at compile time before deployment to the server.

Alternative or Verification Steps

  • Re-run the corrected script in a non-production environment on Windows 11 (Developer Edition) to confirm the batch executes without Error 2205 before deploying to Windows Server 2025 production instances.
  • If the error persists despite clean syntax, verify client-side driver compatibility (ODBC Driver 18+ or OLE DB Driver) since outdated drivers can sometimes malform queries before they reach the server parser.