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

Troubleshooting Guide: Error 10503 – “Operation ‘%.*ls’ is not allowed”

Why This Error Happens

Error 10503 in SQL Server 2025 typically occurs when an operation is attempted on a database object that is in an inconsistent or restricted state, such as attempting DDL changes on a table involved in an active replication topology, Change Data Capture (CDC) session, or while a database snapshot is in progress. This error is also commonly triggered when attempting schema modifications on memory-optimized tables or columnstore indexes during an unsupported transaction isolation level. Additionally, it can surface when a database is in a READ_ONLY state, is part of an Availability Group secondary replica, or has pending schema lock conflicts from concurrent sessions.

Step-by-Step Resolution Guide

Step 1: Identify the Database and Object State

  • Open SQL Server Management Studio (SSMS) and run the following query to check database state:
  • SELECT name, state_desc, is_read_only FROM sys.databases WHERE name = 'YourDatabaseName';
  • Confirm whether the database is READ_ONLY, RESTORING, or part of an Availability Group.
  • Check if the target table is enabled for CDC or Replication using sys.tables and sys.change_tracking_tables.

Step 2: Disable Conflicting Features Temporarily

  • If CDC is enabled, disable it before running the operation using:
  • EXEC sys.sp_cdc_disable_table @source_schema = 'dbo', @source_name = 'YourTable', @capture_instance = 'all';
  • If the table is part of transactional replication, pause the Log Reader Agent via SQL Server Agent in SSMS under SQL Server Agent > Jobs.
  • For Availability Groups, ensure you are executing the command on the Primary Replica only, not a read-only secondary.

Step 3: Verify Database Compatibility and Isolation Level

  • Check the database compatibility level, as SQL Server 2025 defaults to 170; legacy syntax may trigger this error.
  • Run: SELECT compatibility_level FROM sys.databases WHERE name = 'YourDatabaseName';
  • If using memory-optimized tables, ensure the session isolation level is set to SNAPSHOT rather than READ COMMITTED:
  • ALTER DATABASE YourDatabaseName SET READ_COMMITTED_SNAPSHOT ON;

Step 4: Check for Active Locks or Blocking Sessions

  • Navigate to Activity Monitor in SSMS or run sp_who2 to identify blocking session IDs (SPIDs).
  • Kill the blocking process ID (PID) if it is safe to do so:
  • KILL [SPID];
  • Retry the original DDL or DML operation once the schema lock is released.

Step 5: Re-enable Previously Disabled Features

  • Once the operation completes successfully, re-enable CDC or resume the Replication Log Reader Agent to restore data synchronization.
  • EXEC sys.sp_cdc_enable_table @source_schema = 'dbo', @source_name = 'YourTable', @role_name = NULL;

Alternative or Verification Steps

  • Verification: Re-run the original query or stored procedure that triggered Error 10503; if successful, check the SQL Server Error Log (via SSMS Management > SQL Server Logs) to confirm no residual state conflicts remain.
  • Alternative: If the error persists on a specific table, create a new table with the identical schema, migrate the data using INSERT INTO ... SELECT, and rename the tables to swap them, bypassing the locked object state entirely.