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

Troubleshooting Guide: SQL Server Error 1074 – “Creation of Temporary Functions Is Not Allowed”

Why This Error Happens

This error occurs when a user or application attempts to create a temporary function (e.g., using CREATE FUNCTION #FunctionName) in Microsoft SQL Server 2025, which does not support temporary user-defined functions in the same way it supports temporary tables or stored procedures. The root cause is almost always a T-SQL syntax misunderstanding or a legacy script attempting to use the # or ## prefix on a function object, rather than a missing permission or corrupted installation. In rare cases, this can also surface when a third-party ORM or migration tool generates invalid dynamic SQL against tempdb.

Step-by-Step Resolution Guide

Step 1: Identify the Offending Query

  • Review the SQL Server error log or Extended Events session for the exact statement that triggered Error 1074.
  • Look for CREATE FUNCTION # or CREATE FUNCTION ## in application code, stored procedures, or ETL scripts.
  • Check SSMS query history or the client application’s logging (e.g., Entity Framework migrations) to locate the source.

Step 2: Refactor the Code to Use Supported Objects

  • Replace the temporary function with a regular user-defined function stored in a permanent database schema (e.g., dbo.MyFunction).
  • If the intent was session-scoped logic, use a temporary table or table variable (#TempTable or @TableVar) populated by a standard function or inline query instead.
  • For reusable logic needed only within one session, consider an inline table-valued function (iTVF) created once in a utility database, rather than recreated per session.

Step 3: Validate Database Compatibility Level

  • Run the following to confirm the database compatibility level matches SQL Server 2025 expectations:
  SELECT name, compatibility_level FROM sys.databases WHERE name = 'YourDatabaseName';
  • If the compatibility level is outdated (e.g., inherited from a restored SQL Server 2016/2019 backup), update it:
  ALTER DATABASE YourDatabaseName SET COMPATIBILITY_LEVEL = 170;
  • This ensures the query optimizer and parser are not attempting legacy behaviors that may generate confusing errors.

Step 4: Check tempdb Configuration

  • Verify tempdb is healthy and not experiencing corruption, which can sometimes cause object-creation errors to be misreported.
  • Run:
  DBCC CHECKDB (tempdb) WITH NO_INFOMSGS;
  • Restart the SQL Server service via SQL Server Configuration Manager on Windows Server 2025 if tempdb shows inconsistent state (this rebuilds tempdb automatically).

Alternative or Verification Steps

  • After refactoring, re-run the original script or application workflow and confirm Error 1074 no longer appears in the SQL Server Error Log (Management > SQL Server Logs in SSMS).
  • As a quick verification, execute a test creation of the function using a permanent schema (CREATE OR ALTER FUNCTION dbo.TestFn...) to confirm the object creation succeeds, proving the underlying engine and permissions are functioning correctly.