【问题标题】:Problems creating a full text index on a view在视图上创建全文索引时出现问题
【发布时间】:2013-09-27 13:04:50
【问题描述】:

我有一个这样创建的视图:

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.

知道为什么吗?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2012 full-text-indexing


    【解决方案1】:

    首先您需要在视图上创建唯一的聚集索引,然后再创建全文索引。

    假设你有一张桌子:

    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
    

    创建唯一键后,由于您已经拥有全文目录ft_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)
    

    希望这会有所帮助:)

    【讨论】:

      【解决方案2】:

      您必须通过创建唯一聚集索引来使您的视图被索引:

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

      之后,索引idx_DataField 必须是唯一的、不可为空的、单列索引。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-16
        • 2011-08-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        相关资源
        最近更新 更多