Cannot convert a nonclustered index to a clustered index online using DROP_EXISTING option.

Error Message:
Msg 1968, Level 16, State 1, Line 2
Cannot convert a nonclustered index to a clustered index online using DROP_EXISTING option.

Severity level:
16.

Description:
This error message appears when you try to convert a nonclustered index to a clustered index by using the DROP_EXISTING option.

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 want to change a nonclustered index to a clustered index you can not use the DROP_EXISTING option. You have to use a DROP INDEX & and CREATE INDEX statement combination instead.

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   
    );
   
DROP TABLE dbo.t;

Remarks:
In the above example we try to convert a nonclustered index to a clustered index by using the DROP_EXISTING option. This raises the error.

]]>

Leave a comment

Your email address will not be published.