2008-11-04 80 views
7

我在SQL Server 2005的視圖上創建全文索引時遇到了麻煩。查看文檔我沒有發現問題。我收到的錯誤消息是:「'Id'不是強制執行全文搜索關鍵字的有效索引。全文搜索關鍵字必須是唯一的,不可爲空的單列索引,它不是脫機的,是沒有在非確定性或不精確的非計算列上定義,並且最大大小爲900字節,請爲全文密鑰選擇另一個索引。 我已經能夠驗證錯誤字符串中的每個需求,除了「脫機」需求,我不知道這意味着什麼。雖然我敢肯定它並沒有離線。在SQL Server 2005的視圖上創建全文索引

我有腳本來創建下面的目標表,視圖和索引。在下面的示例中,我並不真的需要一個視圖,因爲我試圖找出問題的原因,所以將其簡化。

 
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 

回答

14

你需要指定索引的,而不是列名的名稱創建全文索引時:

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

這將彌補你所得到的錯誤,但它會給你另一個錯誤因爲您正試圖在文本搜索中包含一個非字符的列。您可能想要選擇另一個索引字符列來替代您的全文目錄。

+0

感謝解決方案是完美的 – 2011-06-13 07:35:23