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

Why This Error Happens

This error occurs because the IGNORE_DUP_KEY index option is specifically designed to control behavior when duplicate key values are inserted into a unique index, so SQL Server rejects the ALTER INDEX statement when applied to a non-unique index since the option has no logical function there. This typically happens when a script or migration tool (common during upgrades to SQL Server 2025) attempts to apply this setting to an index that was never explicitly created with the UNIQUE constraint. It can also surface if an index was previously unique but was altered or rebuilt without the unique attribute, breaking a legacy maintenance script that assumes the original schema.

Step-by-Step Resolution Guide

Step 1: Verify the Index Uniqueness Property

  • Open SQL Server Management Studio (SSMS) or Azure Data Studio connected to your Windows Server 2025 instance.
  • Run the following query to check the is_unique column for the specific index in question:
SELECT name, is_unique, type_desc 
FROM sys.indexes 
WHERE object_id = OBJECT_ID('YourTableName') AND name = 'YourIndexName';
  • If is_unique returns 0, this confirms the index is non-unique and incompatible with the IGNORE_DUP_KEY option.

Step 2: Correct the T-SQL Script Logic

  • Locate the deployment script or stored procedure generating Error 1915.
  • Remove the WITH (IGNORE_DUP_KEY = ON) clause from the ALTER INDEX statement if the index is intentionally non-unique.
  • Example of the corrected syntax:
ALTER INDEX [YourIndexName] ON [dbo].[YourTableName] REBUILD;

Step 3: Recreate the Index as Unique (If Required)

  • If business logic requires this index to enforce uniqueness, you must drop and recreate it rather than altering it.
  • Use the DROP_EXISTING clause to recreate the index with the UNIQUE keyword and the duplicate key option simultaneously:
CREATE UNIQUE NONCLUSTERED INDEX [YourIndexName] 
ON [dbo].[YourTableName] (ColumnName)
WITH (DROP_EXISTING = ON, IGNORE_DUP_KEY = ON);

Step 4: Check for Underlying Data Duplicates

  • Before converting the index to unique, scan the table for existing duplicate values that would cause the CREATE UNIQUE INDEX command to fail.
  • Run a GROUP BY and HAVING COUNT(*) > 1 query on the target column to identify and resolve conflicting rows prior to re-running Step 3.

Alternative or Verification Steps

  • To verify the fix, re-run the original ALTER INDEX statement; if the fix was successful, the command should complete without returning Error 1915.
  • As an alternative, use the SQL Server 2025 Database Engine Tuning Advisor to analyze the specific index and automatically generate the correct syntax based on the current uniqueness constraints of the table.