【问题标题】:Create full text index by querying for index name通过查询索引名称创建全文索引
【发布时间】:2013-07-03 09:45:38
【问题描述】:

我想创建一个全文索引,但我不确定索引名称是否在所有数据库中都相同。所以,我打算写下面的选择并获取索引的名称。

DECLARE @keyIndex NVARCHAR(100)
SELECT @keyIndex = name FROM sysobjects WHERE xtype = 'PK' AND parent_obj = OBJECT_ID(N'[dbo].[Table1]')

下面是我尝试过的全文索引的创建语句:

CREATE FULLTEXT INDEX ON dbo.Table1
    (
        [Name] Language 1033,
        [Description] Language 1033
    ) 
    KEY INDEX [@keyIndex] 
    WITH STOPLIST = SYSTEM, CHANGE_TRACKING AUTO;

它给出了这个错误:

Msg 7653, Level 16, State 1, Line 11
'@keyIndex' is not a valid index to enforce a full-text search key. A full-text search key must be a unique, non-nullable, single-column index which is not offline, is not defined on a non-deterministic or imprecise nonpersisted computed column, does not have a filter, and has maximum size of 900 bytes. Choose another index for the full-text key.

我需要一些关于如何动态插入键索引值的帮助。

【问题讨论】:

    标签: sql-server full-text-indexing


    【解决方案1】:

    只需手动构建字符串,然后执行:

    DECLARE @SQLString nvarchar(1000)
    DECLARE @ParmDefinition nvarchar(1000)
    DECLARE @keyIndex nvarchar(100);
    set @keyIndex = 'Id'
    SET @SQLString =
         N'CREATE FULLTEXT INDEX ON dbo.objects
        (
            [Name] Language 1033,
            [Description] Language 1033
        ) 
        KEY INDEX ' + @keyIndex +N' 
        WITH STOPLIST = SYSTEM, CHANGE_TRACKING AUTO;';
    EXEC(@SQLString)
    

    【讨论】:

    • 不起作用,给出错误 - '@keyIndex' 附近的语法不正确。期望 ID 或 Quoted_ID
    • 好的,很抱歉我没有亲自尝试,我确信它会起作用。我试过这个解决方案..
    • 我还有别的办法吗?手动构建字符串并不漂亮。这样做会失去很多功能。例如智能感知
    猜你喜欢
    • 2011-03-20
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 2018-09-22
    • 2012-08-27
    相关资源
    最近更新 更多