2013-09-22 32 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) 

希望这有助于:)