Cannot drop a clustered index created on a view using drop clustered index clause. Clustered index '%.*ls' is created on view '%.*ls'.

Error Message:
Msg 3747, Level 16, State 1, Line 1
Cannot drop a clustered index created on a view using drop clustered index clause. Clustered index ‘%.*ls’ is created on view ‘%.*ls’.

Severity level:
16.

Description:
This error message appears when you try to drop a clustered index created on a view with DROP INDEX options reserved for clustered indices created on base tables.

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. You must remove those options from the DROP INDEX command that apply only to clustered indices on base tables.

Versions:
All versions of SQL Server.

Example(s):
USE Northwind;
GO
SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING,
    ANSI_WARNINGS,
    CONCAT_NULL_YIELDS_NULL,
    ARITHABORT,
    QUOTED_IDENTIFIER,
    ANSI_NULLS ON;
GO

IF OBJECT_ID (‘dbo.MyOrderView’, ‘View’) > 0
   DROP VIEW dbo.MyOrderView;
GO
CREATE VIEW dbo.MyOrderView
WITH SCHEMABINDING
AS
SELECT SUM(od.UnitPrice*od.Quantity*(1.00-od.Discount)) AS Revenue,
    o.OrderDate, od.ProductID, COUNT_BIG(*) AS MyCount
  FROM dbo.[Order Details] AS od
  JOIN dbo.Orders AS o
    ON od.OrderID = o.OrderID
 GROUP BY o.OrderDate, od.ProductID;
GO

CREATE UNIQUE CLUSTERED INDEX cix_MyOrderView
    ON dbo.MyOrderView (OrderDate, ProductID);
GO
DROP INDEX cix_MyOrderView ON MyOrderView
 WITH (ONLINE = ON)

Remarks:
In the above example we try to drop the clustered index on the view MyOrderView online. This raises the error.

]]>

Leave a comment

Your email address will not be published.