SQL Server のアップデート後に フルテキストインデックス検索が動作しない

しゃみなー
質問: フルテキスト検索が動作しない
SQL Serverをアップデートしたらフルテキスト検索が動作していないようです。どうすればよいでしょうか?

対処法

フルテキストインデックスに不具合が出ている可能性があるため、以下のSQLを実行します。

SELECT 
  name,
  FULLTEXTCATALOGPROPERTY(name, 'ItemCount')      AS item_count,
  FULLTEXTCATALOGPROPERTY(name, 'PopulateStatus') AS populate_status
FROM sys.fulltext_catalogs;


以下の結果となります。フルテキストカタログ名が取得できます。

nameitem_countpopulate_status
catalog_working110


取得したフルテキストカタログ名を利用して以下のSQL文を実行してフルテキストカタログを再構築します。

-- 停止
ALTER FULLTEXT INDEX ON dbo.(テーブル名) STOP POPULATION;

-- カタログ再構築
ALTER FULLTEXT CATALOG [(テキストカタログ名)] REBUILD;

-- 再開
ALTER FULLTEXT INDEX ON dbo.Contents START FULL POPULATION;

-- 監視
SELECT
  FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','ItemCount') AS item_count,
  FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','PopulateStatus') AS populate_status;


以下のSQLの結果でitem_count0でないこと、populate_status0 であることを確認します。

SELECT
  FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','ItemCount') AS item_count,
  FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','PopulateStatus') AS populate_status;


今回の場合、結果は以下でした。正常に再構築できています。

item_countpopulate_status
110

対処法 SQL Server 2025 の場合

SQL Server 2025 の累積的な更新プログラム 1の適用

はじめに、SQL Server 2025 の累積的な更新プログラム 1を適用します。
以下のページから更新プログラムのインストーラーをダウンロードして適用します。

フルテキストインデックスの調査

SQL Server 2025にアップデートした場合には破壊的変更が行われ、ワードブレイカーやフィルタがバージョン2にアップデートされています。 フルテキストインデックスのバージョンを確認します。

次のSQLコマンドを実行します。

SELECT 
    OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
    OBJECT_NAME(i.object_id)        AS table_name,
    i.index_version,
    i.change_tracking_state_desc,
    i.is_enabled
FROM sys.fulltext_indexes AS i
WHERE i.object_id = OBJECT_ID(N'dbo.(テーブル名)');


以下の結果となりました。

schema_nametable_nameindex_versionchange_tracking_state_descis_enabled
dboWorking1AUTO1


index_version = 1 ですので、旧バージョンのフルテキストインデックスであることがわかります。

v2利用設定の確認

v2を利用する設定になっているかを確認します。次のSQL文を実行します。

SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = N'FULLTEXT_INDEX_VERSION';


以下の結果でした。value の値が 2 のため、バージョン2を利用する設定になっています。

configuration_idnamevaluevalue_for_secondaryis_value_default
44FULLTEXT_INDEX_VERSION2NULL1


補足
値が2でない場合は以下のSQLを実行します。
ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 2;

アップデートするフルテキストカタログ名を取得

次のSQLを実行して、アップデートするフルテキストカタログ名を取得します。

SELECT 
  c.[name] AS fulltext_catalog_name
FROM sys.fulltext_indexes i
JOIN sys.fulltext_catalogs c
  ON i.fulltext_catalog_id = c.fulltext_catalog_id
WHERE i.object_id = OBJECT_ID(N'[dbo].[(テーブル名)]');


今回の場合、以下の結果でした。

fulltext_catalog_name
catalog_working

カタログのリビルド

次のSQLコマンドを実行してフルテキストカタログをリビルドします。

ALTER FULLTEXT CATALOG [(フルテキストカタログ名)] REBUILD;

v2に更新されたかの確認

次のSQLを実行してv2になったかを確認します。

SELECT 
    OBJECT_SCHEMA_NAME(i.object_id) AS schema_name,
    OBJECT_NAME(i.object_id)        AS table_name,
    i.index_version,
    i.change_tracking_state_desc,
    i.is_enabled
FROM sys.fulltext_indexes AS i
WHERE i.object_id = OBJECT_ID(N'[dbo].[(テーブル名)]');


結果は下図です。index_version2になりました。

schema_nametable_nameindex_versionchange_tracking_state_descis_enabled
dboWorking2AUTO1


動作確認

以下のSQL(一例)を実行して、フルテキスト検索ができるかを確認します。

SELECT *
FROM dbo.Working
WHERE CONTAINS(memo, N'砂漠');


回避不能な症状
環境により、SQL文でFREETEXT,FREETEXTTABLE を利用した検索の場合、以下のメッセージが表示され、実行に失敗する場合があります。 回避方法は現状不明のため、CONTAINS, CONTAINSTABLEへの置き換えが対処法です。
SELECT * FROM dbo.(テーブル名) WHERE FREETEXT(memo, N'砂漠');
メッセージ 30053、レベル 16、状態 102、行 1
フルテキスト クエリの実行中にエラーが発生しました。一般的な原因には、単語区切りのエラーまたはタイムアウト、FDHOST の権限/ACL の問題、サービス アカウントの権限の不足、IFilters の誤動作、FDHost および sqlservr.exe との通信チャネルのイシューなどがあります。

AuthorPortraitAlt
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
作成日: 2026-02-01