首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`CHANGE_TRACKING = AUTO` `无法填充全文索引

`CHANGE_TRACKING = AUTO` `无法填充全文索引
EN

Database Administration用户
提问于 2019-10-03 21:32:47
回答 2查看 1.3K关注 0票数 1

我使用以下选项(简化)为表创建了全文索引:

代码语言:javascript
复制
CREATE FULLTEXT INDEX ON [schema].[table]  
(  
    ColumnA Language 'English',
    ColumnB Language 'English'
)  
KEY INDEX pk_table ON database_ft_catalog 
WITH
    CHANGE_TRACKING = AUTO,
    STOPLIST = OFF
GO  

这是可行的,并且在索引生成之后行是可搜索的。

代码语言:javascript
复制
Select Top 100 * from [schema].[table]
  where contains(*, '"searchTerm*"');

我的问题是,行不会像它们应该的那样自动填充到全文索引中。

有一次,我在日志中看到全文守护进程死亡,所以我使用sp_fulltext_service 'restart_all_fdhosts'重新启动了这些守护进程。(sys.fulltext_indexes显示,一个完整的人口仍在进行中。)

这在一段时间内有效,但是现在新的行再次没有被索引。这是我从全文日志中收到的最新错误消息:

A full-text retry pass of Auto population started for table or indexed view Error '0x80004005' occurred during full-text index population for table or indexed view Informational: Full-text retry pass of Auto population completed for table or indexed view '[db].[schema].[table]'... Number of retry documents processed: 1. Number of documents failed: 1.

任何关于如何解决这个问题的信息都将不胜感激。这些行失败了四次,然后被忽略,也就是说,它们不再被跟踪,并且在我重新构建它之前不会将其放入全文索引中。

事实上,我确实试图增加ism_size,如文章中所列出的。然而,这并没有解决这个问题。(我知道这是个旧版本,但值得一试。)

更新:

我今天发现了一些额外的帖子,上面说要在事件查看器中查找。我得到了活动ID 30089:

完全文本筛选守护进程(FDHost)进程异常停止。如果语言组件(如断字器、词干器或过滤器)配置不当或出现故障,在全文索引或查询处理过程中导致无法恢复的错误,就会发生这种情况。进程将自动重新启动。

Windows (SQL全文过滤器、守护进程启动程序- FDHost)在1秒到30秒之间重新启动。全文服务使用默认的Server帐户NT Service\MSSQLFDLauncher,我确保它具有对C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn文件夹和所有子对象的读取和执行访问权,这是sp_help_fulltext_system_components 'wordbreaker'报告断字包都位于的位置。

还是没变。

更新2019-10-07

事实证明,这些用户在AWS中使用的是EC2,上面有亚马逊的Windows2016图像。不过,我们自己安装了Server标准2017。看起来AMI是Windows_Server-2016-English-Full-Base-2019.07.12

更新2019-10-08

在测试环境中,我使用的是Server。数据库处于兼容级别140 (2017),Server实例和数据库都是新安装的,没有升级。

数据库文件被设置为无限制的最大大小,日志文件被设置为最大2TB,两者都增长了64 by。数据库文件当前为1.288 GB,日志为776 MB。在配置的磁盘上有足够的空间让它再增长20-40 GB。

对于性能问题,我可以做的一个调整是将全文索引放在单独的磁盘上,但我是目前唯一使用此数据库的人。我只想要过程完成,没有错误,并能够添加新插入或修改的记录到索引。

注意,我的主键是每个性能建议的标识列,我的所有列都是内置的数据类型(varchar(255)似乎是最大的),如果有任何影响,这些表都启用了系统版本控制。

更新2019年-12-ish,决议

对不起,这没有更早更新(这个实际更新是在2022-02)。自从我最后一次考试后发生了很多事情。我有一个大职位等的计划。

在我遇到所有这些问题后不久,在2019年11月或12月的某个时候,一个服务包被应用到Server上。解决了我的服务稳定性问题。我从来不知道到底是哪个补丁修复了这台机器,但这将是最近最接近那个日期的服务包。

EN

回答 2

Database Administration用户

发布于 2019-10-08 14:16:10

您说过SQL全文过滤器守护进程启动程序- FDHost正在重新启动。事件查看器中是否有任何错误,表明它没有运行的适当权限?

您可以检查帐户和密码,并检查其运行的计算机上的权限是否足够。

您应该检查是否启用了命名管道。

例如,文档声明:

如果在本地计算机上禁用了命名管道功能,或者如果Server已配置为使用默认命名管道以外的命名管道,则SQL全文筛选器守护进程启动器服务可能无法启动。

它还说,如果同一个命名管道的另一个实例已经在运行,您可能会遇到问题。

如果您可以提供额外的错误日志,也许我们可以帮助您进一步。

我阅读了一篇文章这里,其中说一旦Service、代理服务和全文服务都在同一个帐户上运行,这个错误就会得到解决。也许这是值得一试的东西。

您可以尝试查询sys.dm_fts_fdhosts或另一个与全文索引相关的DMV视图。也许你能找到更多关于那里发生的事情的信息。

票数 1
EN

Database Administration用户

发布于 2019-10-08 16:01:27

您是否检查了全文日志中是否有任何问题?解决全文填充中的错误(爬行)

“(.)默认情况下,为给定实例(在本例中为默认实例)爬行日志位于%ProgramFiles%\Microsoft \MSSQL15.MSSQLServer\MSSQL\LOG文件夹中。(..)”

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/250225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档