Создание полнотекстового индекса для представления в SQL Server 2005 - PullRequest
7 голосов
/ 04 ноября 2008

У меня проблемы с созданием полнотекстового индекса для представления в SQL Server 2005. Просмотр документации Я не нашел проблему. Я получаю сообщение об ошибке: «Id» не является допустимым индексом для принудительного применения ключа полнотекстового поиска. Ключ полнотекстового поиска должен быть уникальным, не обнуляемым, одноколонным индексом, который не является автономным, не определено для недетерминированного или неточного вычисляемого столбца без опозданий и имеет максимальный размер 900 байт. Выберите другой индекс для полнотекстового ключа. " Мне удалось проверить все требования в строке ошибок, кроме требования «офлайн», где я действительно не знаю, что это значит. Я чертовски уверен, что он не в автономном режиме, хотя.

У меня есть скрипт для создания целевой таблицы, представления и индекса ниже. В приведенном ниже примере мне не нужно представление, оно упрощено, поскольку я пытаюсь выделить проблему.

DROP VIEW [dbo].[ProductSearchView]
DROP TABLE [dbo].[Product2]
GO


SET NUMERIC_ROUNDABORT OFF;
SET ANSI_PADDING, ANSI_WARNINGS, CONCAT_NULL_YIELDS_NULL, ARITHABORT,
    QUOTED_IDENTIFIER, ANSI_NULLS ON;
GO

CREATE TABLE [dbo].[Product2](
    [Id] [bigint] NOT NULL,
    [Description] [nvarchar](max) NULL,
    CONSTRAINT [PK_Product2] PRIMARY KEY CLUSTERED 
    (
        [Id] ASC
    )WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

CREATE VIEW [dbo].[ProductSearchView] WITH SCHEMABINDING
AS
SELECT   P.Id AS Id,  
         P.Description AS Field
FROM [dbo].Product2 AS P
GO

-- this index may be overkill given the PK is set...
CREATE UNIQUE CLUSTERED INDEX PK_ProductSearchView ON [dbo].[ProductSearchView](Id)
GO

-- This is the command that fails
CREATE FULLTEXT INDEX ON [dbo].[ProductSearchView](Id, Field)
KEY INDEX Id
ON FullText WITH CHANGE_TRACKING AUTO;
GO

1 Ответ

14 голосов
/ 05 ноября 2008

При создании полнотекстового индекса необходимо указать имя индекса вместо имени столбца:

CREATE FULLTEXT INDEX ON [dbo].[ProductSearchView](Id, Field)
KEY INDEX PK_ProductSearchView
ON FullText WITH CHANGE_TRACKING AUTO;
GO

Это исправит полученную ошибку, но даст еще одну ошибку, потому что вы пытаетесь включить в текстовый поиск столбец без символов Возможно, вы захотите выбрать другой столбец индексированных символов для использования в вашем полнотекстовом каталоге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...