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

Why This Error Happens

Error 4868 occurs when the SQL Server BULK INSERT or bcp operation references a code page that is not registered in the Windows Server 2025 or Windows 11 system locale/globalization settings. This commonly happens with legacy code pages (e.g., 850, 932, 1250) that are not installed by default on newer, minimized Windows Server Core or clean OS deployments. It can also occur if the source data file was generated on a system with a different regional configuration than the SQL Server host, causing a mismatch between the expected and available code page.

Step-by-Step Resolution Guide

Step 1: Identify the Missing Code Page

  • Check the exact error message for the specific code page number (e.g., %d = 850, 1252, 932).
  • Open the data file in a hex editor or text editor to confirm its actual encoding/character set.
  • Run sqlcmd or check SSMS Job History logs to confirm which BULK INSERT/bcp statement triggered the failure.

Step 2: Verify Installed Code Pages on Windows

  • Open PowerShell as Administrator and run:
  Get-WinSystemLocale
  Get-WinHomeLocation
  • Check installed code pages via Registry Editor at:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
  • Confirm whether the required code page value (e.g., “850”=”c_850.nls”) exists in this registry key.

Step 3: Install the Missing Language/Code Page Pack

  • Go to Settings > Time & Language > Language & Region on Windows 11, or use Server Manager > Add Roles and Features > Language Pack on Windows Server 2025.
  • For Server Core installations, use DISM instead:
  DISM /Online /Add-Capability /CapabilityName:Language.Basic~~~en-US~0.0.1.0
  • Reboot the server after installation to ensure the NLS (National Language Support) files are properly registered in the C:\Windows\System32 directory.

Step 4: Update the BULK INSERT Command with Correct Codepage Syntax

  • Modify your T-SQN script to explicitly define the codepage parameter:
  BULK INSERT dbo.YourTable
  FROM 'C:\Data\yourfile.csv'
  WITH (
      CODEPAGE = '850',
      DATAFILETYPE = 'char',
      FIELDTERMINATOR = ','
  );
  • Alternatively, use CODEPAGE = 'ACP' (ANSI) or CODEPAGE = 'RAW' if character translation is not required and the file is already in a compatible format.

Alternative or Verification Steps

  • Re-run the BULK INSERT command after installing the code page and rebooting; confirm success via SELECT * FROM dbo.YourTable to check data integrity and correct character rendering.
  • As an alternative, convert the source file encoding to UTF-8 using PowerShell (Get-Content file.csv | Set-Content -Encoding UTF8 newfile.csv) and use CODEPAGE = '65001' in the BULK INSERT statement to bypass legacy code page dependencies entirely.