2009-05-19 47 views
3

我試圖在Sql Server 2005中的視圖上添加一個索引,我得到這個錯誤:「無法在視圖'AllAssignmentNotes'上創建索引,因爲視圖不是模式綁定。在Sql Server 2005中的索引視圖錯誤

我不想在這裏提供太多信息,因爲它可能會超載。只是想知道是否有人可以給我一些幫助。

我去了錯誤給我的網址,讓我無處可去。完整的錯誤如下。

我知道你不能給出一個真正的答案,因爲我沒有給你所有的信息,我的道歉。

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 
------------------------------ 

回答

5

就像錯誤說的那樣,在不受模式限制的視圖上不能有索引。爲了schemabind視圖使用

create view with schemabinding. 

INT視圖中引用的所有表必須與SCHEMANAME,即dbo.table,不只是表

1

假設您創建視圖WITH SCHEMABINDING那麼它可能它的連接設置在執行CREATE INDEX語句時,這些SET選項必須設置爲ON:

ANSI_NULLS 
ANSI_PADDING 
ANSI_WARNINGS 
ARITHABORT 
CONCAT_NULL_YIELDS_NULL 
QUOTED_IDENTIFIERS 

的NUMERIC_ROUNDABORT選項必須被設置爲OFF。

+0

SQL服務器應該給出一個描述性錯誤,如「不正確的設置:「ANSI_NULLS」在這種情況下,從來沒有一個1939年的錯誤 – 2009-05-19 19:56:58