【问题标题】:Indexed view in Sql Server 2005 ErrorSql Server 2005 错误中的索引视图
【发布时间】:2010-10-27 10:44:36
【问题描述】:

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

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

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

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

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

索引“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

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

好的
------------------------------

【问题讨论】:

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


【解决方案1】:

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

create view with schemabinding.

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

【讨论】:

    【解决方案2】:

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

    ANSI_NULLS 
    ANSI_PADDING 
    ANSI_WARNINGS 
    ARITHABORT 
    CONCAT_NULL_YIELDS_NULL 
    QUOTED_IDENTIFIERS 
    

    NUMERIC_ROUNDABORT 选项必须设置为 OFF。

    【讨论】:

    • Sql Server 在这些情况下应该给出描述性错误,例如“不正确的设置:'ANSI_NULLS”,绝不会出现错误 1939
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-07-16
      • 2019-05-26
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2012-03-01
      • 2011-02-16
      相关资源
      最近更新 更多