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

Troubleshooting Guide: SQL Server Error 4018

Why This Error Happens

This error occurs when a login’s default language, as defined in sys.server_principals or sys.sql_logins, references a language name (syslanguages/sys.syslanguages) that has been removed, renamed, or was never properly registered on the SQL Server instance. This commonly happens after a server migration, an in-place upgrade to SQL Server 2025, or a restoration of logins from an older server instance where regional language packs differed. Since SQL Server cannot locate a matching entry in the sys.syslanguages catalog view, it silently falls back to the server-wide default language (typically us_english) and raises Error 4018 as a warning.

Step-by-Step Resolution Guide

Step 1: Identify the Affected Login and Its Configured Language

  • Open SQL Server Management Studio (SSMS) 21 or later and connect to the instance via Windows Authentication (sysadmin role required).
  • Run the following query to find logins with invalid default languages:
SELECT name, language 
FROM sys.syslogins 
WHERE language NOT IN (SELECT name FROM sys.syslanguages);
  • Note down the exact login names returned — these are the accounts triggering Error 4018.

Step 2: Verify Installed Languages on the SQL Server Instance

  • Run EXEC sp_helplanguage; to list all official language names recognized by this instance.
  • Compare the output against the language value found in Step 1 (common mismatches include British vs British English, or deprecated regional names from SQL Server 2016/2019).
  • Confirm the server-wide default language setting via:
EXEC sp_configure 'default language';

Step 3: Correct the Login’s Default Language

  • Use ALTER LOGIN to reset the affected login to a valid, officially supported language name:
ALTER LOGIN [YourLoginName] WITH LANGUAGE = N'us_english';
  • If managing multiple logins, script this change in bulk using a cursor over the result set from Step 1.
  • Restart the SQL Server service via services.msc or Restart-Service MSSQLSERVER (PowerShell, run as Administrator) to clear cached session language settings.

Step 4: Re-check Server and Client Collation Settings

  • Navigate to C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Binn\ and confirm the sqlservr.exe version matches SQL Server 2025 build requirements.
  • Ensure client connection strings do not explicitly pass a deprecated Language= parameter in the connection string (common in legacy ODBC/OLEDB drivers).

Alternative or Verification Steps

  • Reconnect using the affected login and check the SSMS “Messages” tab — Error 4018 should no longer appear, and SELECT @@LANGUAGE; should return the corrected value.
  • If the error persists after altering the login, run DBCC FREEPROCCACHE to clear any cached execution plans referencing the old language metadata, then retry the connection.