Cannot create index or statistics '%.*ls' on view '%.*ls' because key column '%.*ls' is imprecise, computed and not persisted. Consider removing reference to column in view index or statistics key or changing column to be precise.

Error Message:
Msg 1901, Level 16, State 1, Line 2
Cannot create index or statistics ‘%.*ls’ on view ‘%.*ls’ because key column ‘%.*ls’ is imprecise, computed and not persisted. Consider removing reference to column in view index or statistics key or changing column to be precise. If column is computed in base table consider marking it PERSISTED there. Severity level:
16. Description:
This error message appears when you try to create an index or statistic on an imprecise, computed, or not persisted column. 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. You cannot create an index or statistic on an imprecise, computed, or not persisted column. Versions:
This error message was introduced with SQL Server 2000. Example(s):
IF OBJECT_ID (‘dbo.v’) IS NOT NULL
   DROP VIEW dbo.v;
GO IF OBJECT_ID (‘dbo.t’) IS NOT NULL
    DROP TABLE dbo.t;
GO CREATE TABLE dbo.t
(
    c1 int PRIMARY KEY,
    c2 float
);
GO CREATE VIEW dbo.v
WITH SCHEMABINDING
AS
SELECT
    c1,
    CASE WHEN c2 = 1 THEN c2 ELSE NULL END AS c2
FROM
    dbo.t;
GO CREATE UNIQUE CLUSTERED INDEX cix_v
    ON dbo.v (c1, c2);
GO Remarks:
In the above example we try to create an index on the view dbo.v. Because the index should contain c2 as index key and c2 in the view definition is derived from c2 in the base table dbo.t which is a float type column, the error is raised. ]]>

Leave a comment

Your email address will not be published.