Cannot recreate index '%.*ls'. The new index definition does not match the constraint being enforced by the existing index.

Error Message:
Msg 1907, Level 16, State 1, Line 2
Cannot recreate index ‘%.*ls’. The new index definition does not match the constraint being enforced by the existing index.

Severity level:
16.

Description:
This error message appears when you try recreate an index, but the new index definition does not match the constraint that is enforced by the index.

Consequences:
The T-SQL statement can be parsed, but causes the error at runtime.

Resolution:
Error of the Severity level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be run this way. When you recreate an index, the index definition must match the constraint when the index is used by SQL Server to enforce a index.

Versions:
This error message was introduced with SQL Server 2005.

Example(s):
IF OBJECT_ID(‘dbo.t’) IS NOT NULL
    DROP TABLE dbo.t;
GO

CREATE TABLE dbo.t
(
    c1 INT
    CONSTRAINT CIX_t_C1 PRIMARY KEY NONCLUSTERED
)
GO

CREATE UNIQUE CLUSTERED INDEX CIX_t_C1 ON dbo.t(c1)
    WITH (
    DROP_EXISTING = ON,
    ONLINE = ON,
    IGNORE_DUP_KEY = ON
    );
   
DROP TABLE dbo.t;

Remarks:
In the above example we try to recreate an index that is used to enforce a PRIMARY KEY constraint with the IGNORE_DUP_KEY option set to ON. This raises the error.

]]>

Leave a comment

Your email address will not be published.