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

Troubleshooting Guide: SQL Server Error 3994 — “User Defined Routine” Failure

Why This Error Happens

Error 3994 typically occurs when a user-defined routine (function, stored procedure, or CLR assembly) encounters an unhandled exception during execution, often due to corrupted or outdated CLR assembly bindings within SQL Server 2025. This can also stem from insufficient permissions on the TRUSTWORTHY database property or missing SQL Server service account access to the referenced assembly files. In some cases, the issue arises from version mismatches between the .NET runtime used by Windows Server 2025 and the CLR integration expected by SQL Server.

Step-by-Step Resolution Guide

Step 1: Verify CLR Integration Status

  • Open SQL Server Management Studio (SSMS) and connect to the affected instance.
  • Run SELECT * FROM sys.configurations WHERE name = 'clr enabled'; to confirm CLR is active.
  • If disabled, enable it using sp_configure 'clr enabled', 1; RECONFIGURE;

Step 2: Check Assembly and Permission Integrity

  • Navigate to Object Explorer > Databases > [YourDB] > Programmability > Assemblies.
  • Right-click the relevant assembly and select Script Assembly as > DROP and CREATE to refresh its binary definition.
  • Ensure the database has TRUSTWORTHY set correctly: ALTER DATABASE [YourDB] SET TRUSTWORTHY ON; (only if the source is verified safe).
  • Confirm the SQL Server service account has Read & Execute permissions on the assembly’s source .dll path, typically under C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Binn\.

Step 3: Update and Restart SQL Server Services

  • Open Services.msc on Windows Server 2025 and locate SQL Server (MSSQLSERVER).
  • Restart the service to clear any cached execution plans tied to the faulty routine.
  • Apply the latest Cumulative Update (CU) for SQL Server 2025 via SQL Server Setup > Maintenance Wizard to patch known CLR execution bugs.

Alternative or Verification Steps

  • Re-run the original query or stored procedure that triggered Error 3994 and check the SQL Server Error Log (via EXEC sp_readerrorlog;) to confirm no further CLR-related exceptions appear.
  • If the error persists, consider recompiling the routine entirely using sp_recompile '[RoutineName]'; or rebuilding the assembly from source code to rule out binary corruption.