我尝试在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 ------------------------------
答案 0 :(得分:5)
正如错误所述,您不能在不受架构限制的视图上拥有索引。要使用
架构视图create view with schemabinding.
视图中引用的所有表必须使用schemaname完全quallified,即dbo.table,而不仅仅是表
答案 1 :(得分:2)
本文详细解释了架构绑定。
答案 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