Sql Server 2005错误中的索引视图

时间:2009-05-19 19:46:18

标签: sql-server sql-server-2005 indexed-view

我尝试在Sql Server 2005中的视图上添加索引,我收到此错误:“无法在视图上创建索引'AllAssignmentNotes',因为视图不是架构绑定的。”

我不想在这里放太多信息,因为它可能超负荷。只是想知道是否有人可以给我一些帮助。

我去了错误给我的网址,让我无处可去。完整错误如下。

我知道你不能给出真正的答案,因为我没有给你所有的信息,我的道歉。

TITLE: Microsoft SQL Server Management Studio
------------------------------

Create failed for Index 'IX_AssignmentId'.  (Microsoft.SqlServer.Smo)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Create+Index&LinkId=20476

------------------------------
ADDITIONAL INFORMATION:

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)

------------------------------

Cannot create index on view 'AllAssignmentNotes' because the view is not schema bound. (Microsoft SQL Server, Error: 1939)

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=1939&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------

4 个答案:

答案 0 :(得分:5)

正如错误所述,您不能在不受架构限制的视图上拥有索引。要使用

架构视图
create view with schemabinding.

视图中引用的所有表必须使用schemaname完全quallified,即dbo.table,而不仅仅是表

答案 1 :(得分:2)

本文详细解释了架构绑定。

http://www.mssqltips.com/tip.asp?tip=1610

答案 2 :(得分:1)

假设您使用SCHEMABINDING创建了视图,那么在执行CREATE INDEX语句时,必须将这些SET选项设置为ON,这可能是连接设置:

ANSI_NULLS 
ANSI_PADDING 
ANSI_WARNINGS 
ARITHABORT 
CONCAT_NULL_YIELDS_NULL 
QUOTED_IDENTIFIERS 

NUMERIC_ROUNDABORT选项必须设置为OFF。

答案 3 :(得分:1)

处理索引视图是他们引入以来的主要痛苦。实际制作支持索引的视图的规则非常严格,错误消息也没用。

您应该检查BOL http://msdn.microsoft.com/en-us/library/ms191432(sql.90).aspx