View Single Post

   
  #2 (permalink)  
Old 02-29-2008, 06:43 PM
Erland Sommarskog
 
Posts: n/a
Default Re: Error (8626) while inserting record into table with text field and which is the base for indexed view

ing42 (Inga.Korczowska@gmail.com) writes:
> Do the insert into aTable (also through aView).
>
> INSERT INTO dbo.aTable VALUES (1, 'a')
> INSERT INTO dbo.aView VALUES (2, 'b')
>
> Still do not have any problem. But when I need index on view
>
> CREATE UNIQUE CLUSTERED INDEX [id] ON dbo.aView ([id])
> GO
>
> I get following error while inserting record into aTable:
>
> -- Server: Msg 8626, Level 16, State 1, Procedure aTrigger, Line 4
> -- Only text pointers are allowed in work tables, never text, ntext, or
> image columns. The query processor produced a query plan that required
> a text, ntext, or image column in a work table.
>
> Does anyone know what causes the error?


Did you notice the warning when you created the index:

Warning: The optimizer cannot use the index because the select list of
the view contains a non-aggregate expression.

So the index is not of much use. I guess you have hit a restriction
in SQL Server, which does not report as such in a nice way. When I
run your code in SQL 2005, I get:

Msg 1942, Level 16, State 1, Line 1
Cannot create index on view 'tempdb.dbo.aView'. It contains text, ntext,
image or xml columns.

Which is a more resolute message.

--
Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/pro...ads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinf...ons/books.mspx
Reply With Quote