ALTER DATABASE SCOPED CONFIGURATION
SET FULLTEXT_INDEX_VERSION = 2;
フルテキストインデックスに不具合が出ている可能性があるため、以下のSQLを実行します。
SELECT
name,
FULLTEXTCATALOGPROPERTY(name, 'ItemCount') AS item_count,
FULLTEXTCATALOGPROPERTY(name, 'PopulateStatus') AS populate_status
FROM sys.fulltext_catalogs;
以下の結果となります。フルテキストカタログ名が取得できます。
| name | item_count | populate_status |
|---|---|---|
| catalog_working | 11 | 0 |
取得したフルテキストカタログ名を利用して以下の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_countが0でないこと、populate_statusが 0 であることを確認します。
SELECT
FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','ItemCount') AS item_count,
FULLTEXTCATALOGPROPERTY('(テキストカタログ名)','PopulateStatus') AS populate_status;
今回の場合、結果は以下でした。正常に再構築できています。
| item_count | populate_status |
|---|---|
| 11 | 0 |
はじめに、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_name | table_name | index_version | change_tracking_state_desc | is_enabled |
|---|---|---|---|---|
| dbo | Working | 1 | AUTO | 1 |
index_version = 1 ですので、旧バージョンのフルテキストインデックスであることがわかります。
v2を利用する設定になっているかを確認します。次のSQL文を実行します。
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = N'FULLTEXT_INDEX_VERSION';
以下の結果でした。value の値が 2 のため、バージョン2を利用する設定になっています。
| configuration_id | name | value | value_for_secondary | is_value_default |
|---|---|---|---|---|
| 44 | FULLTEXT_INDEX_VERSION | 2 | NULL | 1 |
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;
次の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_versionが2になりました。
| schema_name | table_name | index_version | change_tracking_state_desc | is_enabled |
|---|---|---|---|---|
| dbo | Working | 2 | AUTO | 1 |
以下のSQL(一例)を実行して、フルテキスト検索ができるかを確認します。
SELECT *
FROM dbo.Working
WHERE CONTAINS(memo, N'砂漠');
SELECT * FROM dbo.(テーブル名) WHERE FREETEXT(memo, N'砂漠');
メッセージ 30053、レベル 16、状態 102、行 1
フルテキスト クエリの実行中にエラーが発生しました。一般的な原因には、単語区切りのエラーまたはタイムアウト、FDHOST の権限/ACL の問題、サービス アカウントの権限の不足、IFilters の誤動作、FDHost および sqlservr.exe との通信チャネルのイシューなどがあります。