同一个表上有多个全文索引

时间:2017-02-13 12:30:37

标签: sql-server azure-sql-database

我有一个包含不同语言列的表。我想在这个表上创建多个全文索引,每个语言都有一个。它甚至可以在MsSQL(Azure)中使用吗?我有以下代码:

IF NOT EXISTS (SELECT 1 FROM sys.fulltext_catalogs  WHERE NAME = 'BlaBlaFullTextCatalog')
    CREATE FULLTEXT CATALOG BlaBlaFullTextCatalog AS DEFAULT;

CREATE FULLTEXT INDEX ON [IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp] ([OBJ_FreeText_de-DE] LANGUAGE 1043) KEY INDEX [PK_bbca2bbb-a84e-4bd2-b908-92c5329652a5] ON [BlaBlaFullTextCatalog]
    WITH CHANGE_TRACKING = AUTO;

CREATE FULLTEXT INDEX ON [IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp] ([OBJ_FreeText_nl-NL] LANGUAGE 1043) KEY INDEX [PK_bbca2bbb-a84e-4bd2-b908-92c5329652a5] ON [BlaBlaFullTextCatalog]
    WITH CHANGE_TRACKING = AUTO;

ALTER FULLTEXT INDEX ON [IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp] ENABLE;

ALTER FULLTEXT INDEX ON [IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp] START FULL POPULATION;

但它会引发以下错误:

  

表或索引视图的全文索引   ' IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp'已经过了   创建

2 个答案:

答案 0 :(得分:2)

根据MSDN -

  

根据MSDN - 每个表或索引只允许一个全文索引   视图,每个全文索引适用于单个表或索引   图。

因此,您明确得出的错误是IDX_c7296e1d-8cea-40f7-9204-8f017b1e14a8_tmp对象已经有一个全文索引(使用代码块中的第二个sql statement创建)和另一个全文索引在同一个对象上无法创建。

答案 1 :(得分:1)

表的索引名称必须是唯一的。您正在使用重复的名称。