我在 SQL Server 2005 中的 View 上创建全文索引时遇到问题。查看文档我没有发现问题。我收到的错误消息是:“'Id' 不是强制执行全文搜索键的有效索引。全文搜索键必须是唯一的、不可为空的单列索引,并且不脱机,是未在非确定性或不精确的非持久计算列上定义,并且最大大小为 900 字节。为全文键选择另一个索引。”
我已经能够验证错误字符串中的每个要求,除了“离线”要求,我真的不知道这意味着什么。我很确定它没有离线。
我有脚本来创建下面的目标表、 View 和索引。我真的不需要下面示例中的 View ,它在我尝试隔离问题时进行了简化。
删除 View [dbo].[ProductSearchView]
删除表 [dbo].[Product2]
走
设置 NUMERIC_ROUNDABORT 关闭;
设置 ANSI_PADDING、ANSI_WARNINGS、CONCAT_NULL_YIELDS_NULL、ARITHABORT、
QUOTED_IDENTIFIER, ANSI_NULLS ON;
走
创建表 [dbo].[Product2](
[Id] [bigint] 非空,
[说明] [nvarchar](max) NULL,
约束 [PK_Product2] 主键集群
(
[ID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) 在 [主要]
走
使用 SCHEMABINDING 创建 View [dbo].[ProductSearchView]
作为
选择 P.Id 作为 Id,
P.Description AS 字段
FROM [dbo].Product2 AS P
走
-- 鉴于 PK 已设置,此索引可能有点过分...
在 [dbo].[ProductSearchView](Id) 上创建唯一的集群索引 PK_ProductSearchView
走
-- 这是失败的命令
在 [dbo].[ProductSearchView](Id, Field) 上创建全文索引
关键索引 ID
ON FullText WITH CHANGE_TRACKING AUTO;
走
最佳答案
创建全文索引时需要指定索引名而不是列名:
CREATE FULLTEXT INDEX ON [dbo].[ProductSearchView](Id, Field)
KEY INDEX PK_ProductSearchView
ON FullText WITH CHANGE_TRACKING AUTO;
GO
这将修复您遇到的错误,但它会给您另一个错误,因为您试图在文本搜索中包含基于非字符的列。您可能希望选择另一个索引字符列以在全文目录中使用。
关于sql-server-2005 - 在 SQL Server 2005 中的 View 上创建全文索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/263071/