sql-server - 通过查询索引名称创建全文索引

标签 sql-server full-text-indexing

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

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.

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

最佳答案

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

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)

关于sql-server - 通过查询索引名称创建全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444698/

相关文章:

mySQL 全文索引减慢查询速度

python - 在 Python 中索引 CSV 文件内容

sql - 何时使用 GROUPING SETS、CUBE 和 ROLLUP

MySQL 全文搜索返回 0 个结果

sql-server - SQL Server : SELECT only the rows with MAX(DATE)

mysql - 在 mysql 中替换 count(*) OVER ()

mysql - MySQL 全文索引额外消耗多少存储空间?

搜索电子邮件地址时 MySQL MATCH AGAINST

sql-server - 我们可以从数据库中删除内存优化文件组吗

sql-server - 如何查找哪个 SQL Server 作业正在使用存储过程?