我使用以下选项(简化)为表创建了全文索引:
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 这是可行的,并且在索引生成之后行是可搜索的。
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 viewError '0x80004005' occurred during full-text index population for table or indexed viewInformational: 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'报告断字包都位于的位置。
还是没变。
事实证明,这些用户在AWS中使用的是EC2,上面有亚马逊的Windows2016图像。不过,我们自己安装了Server标准2017。看起来AMI是Windows_Server-2016-English-Full-Base-2019.07.12
在测试环境中,我使用的是Server。数据库处于兼容级别140 (2017),Server实例和数据库都是新安装的,没有升级。
数据库文件被设置为无限制的最大大小,日志文件被设置为最大2TB,两者都增长了64 by。数据库文件当前为1.288 GB,日志为776 MB。在配置的磁盘上有足够的空间让它再增长20-40 GB。
对于性能问题,我可以做的一个调整是将全文索引放在单独的磁盘上,但我是目前唯一使用此数据库的人。我只想要过程完成,没有错误,并能够添加新插入或修改的记录到索引。
注意,我的主键是每个性能建议的标识列,我的所有列都是内置的数据类型(varchar(255)似乎是最大的),如果有任何影响,这些表都启用了系统版本控制。
对不起,这没有更早更新(这个实际更新是在2022-02)。自从我最后一次考试后发生了很多事情。我有一个大职位等的计划。
在我遇到所有这些问题后不久,在2019年11月或12月的某个时候,一个服务包被应用到Server上。解决了我的服务稳定性问题。我从来不知道到底是哪个补丁修复了这台机器,但这将是最近最接近那个日期的服务包。
发布于 2019-10-08 14:16:10
您说过SQL全文过滤器守护进程启动程序- FDHost正在重新启动。事件查看器中是否有任何错误,表明它没有运行的适当权限?
您可以检查帐户和密码,并检查其运行的计算机上的权限是否足够。
您应该检查是否启用了命名管道。
例如,文档声明:
如果在本地计算机上禁用了命名管道功能,或者如果Server已配置为使用默认命名管道以外的命名管道,则SQL全文筛选器守护进程启动器服务可能无法启动。
它还说,如果同一个命名管道的另一个实例已经在运行,您可能会遇到问题。
如果您可以提供额外的错误日志,也许我们可以帮助您进一步。
我阅读了一篇文章这里,其中说一旦Service、代理服务和全文服务都在同一个帐户上运行,这个错误就会得到解决。也许这是值得一试的东西。
您可以尝试查询sys.dm_fts_fdhosts或另一个与全文索引相关的DMV视图。也许你能找到更多关于那里发生的事情的信息。
发布于 2019-10-08 16:01:27
您是否检查了全文日志中是否有任何问题?解决全文填充中的错误(爬行)
“(.)默认情况下,为给定实例(在本例中为默认实例)爬行日志位于%ProgramFiles%\Microsoft \MSSQL15.MSSQLServer\MSSQL\LOG文件夹中。(..)”
https://dba.stackexchange.com/questions/250225
复制相似问题