The ALTER TABLE SWITCH statement failed. The table "%.*ls" has a disabled clustered index.

Error Message:
Msg 4985, Level 16, State 1, Line 4
The ALTER TABLE SWITCH statement failed. The table “%.*ls” has a disabled clustered index.

Severity level:
16.

Description:
This error message appears when you try to execute an ALTER TABLE SWITCH command, for which one table has a disabled clustered index.

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

Resolution:
Errors of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The statement cannot be executed this way. The clustered index must be enabled.

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

Example(s):
CREATE PARTITION FUNCTION myPartFunction (int)
    AS RANGE LEFT FOR VALUES (1, 10, 100);
GO

CREATE PARTITION SCHEME myPartScheme
    AS PARTITION myPartFunction
   ALL TO ([PRIMARY]);
GO

CREATE TABLE myPartTable
(
    c1 int
    CONSTRAINT PK_myPartTable PRIMARY KEY
) ON myPartScheme (c1);
GO
ALTER INDEX PK_myPartTable ON mypartTable DISABLE;

CREATE TABLE myNonPartTable
(
 c1 int PRIMARY KEY,
 myXML xml
)
ON [PRIMARY];
GO
CREATE PRIMARY XML INDEX ix_XML_myNonPartTable_myXML
    ON myNonPartTable(myXML);

ALTER TABLE myPartTable SWITCH PARTITION 1 TO myNonPartTable ;
GO

DROP TABLE myNonPartTable, myPartTable;
DROP PARTITION SCHEME myPartScheme;
DROP PARTITION FUNCTION myPartFunction;

Remarks:
In the above example we try to execute an ALTER TABLE SWITCH command. Because the table myPartTable has a disabled clustered index, the error is raised.

]]>

Leave a comment

Your email address will not be published.