3

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

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

我去了错误给我的网址,却一无所获。完整的错误如下。

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

标题:Microsoft SQL Server 管理工作室
------------------------------

索引“IX_AssignmentId”的创建失败。(Microsoft.SqlServer.Smo)

如需帮助,请单击: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

------------------------------
附加信息:

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)

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

无法在视图“AllAssignmentNotes”上创建索引,因为该视图未绑定架构。(Microsoft SQL Server,错误:1939)

如需帮助,请单击:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=1939&LinkId=20476

------------------------------
纽扣:

好的
------------------------------
4

3 回答 3

5

正如错误所说,您不能在未绑定架构的视图上拥有索引。要架构绑定视图,请使用

create view with schemabinding.

在视图中引用的所有表都必须完全符合模式名,即 dbo.table,而不仅仅是表

于 2009-05-19T19:48:49.003 回答
1

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

ANSI_NULLS 
ANSI_PADDING 
ANSI_WARNINGS 
ARITHABORT 
CONCAT_NULL_YIELDS_NULL 
QUOTED_IDENTIFIERS 

NUMERIC_ROUNDABORT 选项必须设置为 OFF。

于 2009-05-19T19:50:51.837 回答
1

自从引入索引视图以来,处理索引视图是主要的痛苦。实际制作支持索引的视图的规则非常严格,并且错误消息是无用的。

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

于 2009-05-19T21:40:12.833 回答