Sql-Server

CHANGE_TRACKING = AUTO 無法填充全文索引

  • February 25, 2022

我使用以下選項(簡化)在表上創建了全文索引:

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 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 全文過濾守護程序啟動器 - FDH​​ost)在 1 到 30 秒之間的任何時間重新啟動。全文服務使用預設 SQL Server 帳戶NT Service\MSSQLFDLauncher,我確保該帳戶具有對C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\Binn文件夾和所有子對象的 READ & EXECUTE 訪問權限,這是sp_help_fulltext_system_components 'wordbreaker'報告的 wordbreaker 包都位於的位置。

還是沒有變化。

2019-10-07 更新

事實證明,這些都是在 AWS 中使用 EC2 和 Amazon 的 Windows 2016 映像。不過,我們自己安裝了 SQL Server Standard 2017。看起來AMI是Windows_Server-2016-English-Full-Base-2019.07.12

2019-10-08 更新

因為我在測試環境中,所以我使用的是 SQL Server Edition。該數據庫的兼容性級別為 140 (2017),並且 SQL Server 實例和數據庫都是全新安裝的,沒有升級。

數據庫文件設置為無限制的最大大小,日誌文件設置為最大 2TB,兩者都增長了 64MB。數據庫文件目前為 1.288 GB,日誌為 776 MB。配置的磁碟上有足夠的空間讓它再增長 20-40 GB。

我可以針對性能問題進行的一項調整是將全文索引放在單獨的磁碟上,但我目前是唯一使用此數據庫的人。我只是希望該過程能夠順利完成,並且能夠將新插入或修改的記錄添加到索引中。

請注意,我的主鍵是每個性能建議的標識列,並且我的所有列都是內置數據類型(varchar(255)似乎是最大值),並且這些表啟用了系統版本控制,如果這會影響任何事情。

更新 2019-12-ish,解析度

抱歉,這沒有更早更新(實際更新時間為 2022-02)。自從我最後一次測試並弄清楚所有事情以來發生了很多事情。我有一個大職位的計劃,等等。

TLDR;在我遇到所有這些問題後不久,即在 2019 年 11 月或 12 月的某個時間,一個服務包被應用於 SQL Server。這解決了我遇到的服務穩定性問題。我從來不知道究竟是哪個更新檔修復了這台機器,但它應該是最接近那個日期的最新服務包。

您說 SQL 全文過濾守護程序啟動器 - FDH​​ost 正在重新啟動。您在事件查看器中是否有任何錯誤表明它沒有適當的執行權限?

您可以檢查帳戶和密碼,並檢查它執行的電腦上的權限是否足夠。

您應該檢查命名管道是否已啟用。

例如,文件指出:

如果已在本地電腦上禁用命名管道功能,或者已將 SQL Server 配置為使用預設命名管道以外的命名管道,則 SQL 全文篩選器守護程序啟動器服務可能無法啟動。

它還說,如果同一個命名管道的另一個實例已經在執行,您可能會遇到問題。

如果您可以提供額外的錯誤日誌,也許我們可以進一步幫助您。

我在這裡讀到一篇文章,說一旦 SQL 服務、代理服務和全文服務都在同一個帳戶上執行,這個錯誤就會得到解決。也許這是值得嘗試的事情。

您可以嘗試查詢 sys.dm_fts_fdhosts 或其他與全文索引相關的 DMV 視圖。也許您可以找到有關那裡發生的事情的其他資訊。

您是否檢查過全文日誌是否有任何問題? 對全文填充(爬網)中的錯誤進行故障排除

“(..) 預設情況下,給定實例(在本例中為預設實例)的爬網日誌位於 %ProgramFiles%\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\LOG 文件夾中。(..)”

引用自:https://dba.stackexchange.com/questions/250225