2013-09-22 28 views
4

我有一個已經創建這樣一個觀點:問題在視圖中創建一個全文索引

CREATE VIEW [dbo].[vwData] WITH SCHEMABINDING 
AS 
    SELECT [DataField1] , 
      [DataField2] , 
      [DataField3] 
    FROM dbo.tblData 

當我嘗試在其上創建全文索引,這樣的:

CREATE FULLTEXT INDEX ON [dbo].[vwData](
[DataField] LANGUAGE [English]) 
KEY INDEX [idx_DataField]ON ([ft_cat_Server], FILEGROUP [PRIMARY]) 
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM) 

我得到這個錯誤:

View 'dbo.vwData' is not an indexed view. 
Full-text index is not allowed to be created on it. 

任何想法,爲什麼?必須

回答

5

,讓您的視圖索引創建唯一聚集索引:

create unique clustered index ix_vwData on vwData(<unique columns>) 

之後,指數idx_DataField必須是唯一的,不可爲空的,單列索引。

12

首先,您需要在創建全文索引之前在視圖上創建唯一的聚簇索引。

假設你有一個表:

CREATE TABLE [dbo].[tblData](
    [DataField1] [Varchar] NOT NULL, 
    [DataField2] [varchar](10) NULL, 
    [DataField3] [varchar](10) NULL 
    ) 

而當你已經做了,你有一個觀點:

CREATE VIEW [dbo].[vwData] 
WITH SCHEMABINDING 
AS 
    SELECT [DataField1] , 
      [DataField2] , 
      [DataField3] 
    FROM dbo.tblData 
GO 

現在,你需要在一個視圖中創建唯一聚集索引:

CREATE UNIQUE CLUSTERED INDEX idx_DataField 
    ON [dbo].[vwData] (DataField1); 
GO 

由於您已經擁有全文目錄,所以創建唯一密鑰後f t_cat_Server你可以創建一個全文索引:

CREATE FULLTEXT INDEX ON [dbo].[vwData](
[DataField1] LANGUAGE [English]) 
KEY INDEX [idx_DataField]ON ([ft_cat_Server], FILEGROUP [PRIMARY]) 
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM) 

希望這有助於:)