sp_fulltext_table (Transact-SQL)

適用対象:SQL ServerAzure Synapse Analytics

フルテキスト インデックス作成のためにテーブルをマークまたはマーク解除します。

重要

この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに、CREATE FULLTEXT INDEX、ALTER FULLTEXT INDEX、DROP FULLTEXT INDEX を使用してください。

Transact-SQL 構文表記規則

構文

sp_fulltext_table
    [ @tabname = ] N'tabname'
    , [ @action = ] 'action'
    [ , [ @ftcat = ] N'ftcat' ]
    [ , [ @keyname = ] N'keyname' ]
[ ; ]

引数

[ @tabname = ] N'tabname'

1 部構成または 2 部構成のテーブル名。 テーブルは、現在のデータベース内に存在している必要があります。 @tabnameは nvarchar(517)で、既定値はありません。

[ @action = ] 'action'

実行するアクション。 @actionは nvarchar(50) で、既定値はありません。これらの値のいずれかを指定できます。

Value 説明
作成 @tabnameによって参照されるテーブルのフルテキスト インデックスのメタデータを作成し、このテーブルのフルテキスト インデックス データが@ftcat存在することを指定します。 このアクションでは、フルテキスト キー列として@keyname使用も指定します。 この一意なインデックスは既に存在していて、テーブル内の列に定義しておく必要があります。

フルテキスト カタログが設定されるまで、このテーブルに対してフルテキスト検索を実行することはできません。
Drop @tabnameのフルテキスト インデックスのメタデータを削除します。 フルテキスト インデックスがアクティブな場合、削除される前に自動的に非アクティブになります。 フルテキスト インデックスを削除する前に列を削除する必要はありません。
アクティブ化します 非アクティブ化された後、@tabnameフルテキスト インデックス データを収集する機能をアクティブにします。 フルテキスト インデックスをアクティブにするには、フルテキスト インデックスの対象となる列が少なくとも 1 つ必要です。

フルテキスト インデックスは、インデックス作成用の最初の列が追加されるとすぐに自動的にアクティブになり、作成を開始できるようになります。 最後の列がインデックスから削除されると、インデックスは非アクティブになります。 変更の追跡がオンの場合、非アクティブなインデックスをアクティブにすると、新しく作成が開始されます。

これは実際にはフルテキスト インデックスを設定しませんが、次のフルテキスト インデックスの作成中に@tabname行を取得できるように、ファイル システムのフルテキスト カタログにテーブルを登録するだけです。
非アクティブ化 @tabnameのフルテキスト インデックス データを収集できないように、@tabnameのフルテキスト インデックスを非アクティブ化します。 フルテキスト インデックス メタデータはそのまま残り、テーブルは再びアクティブにできます。

変更の追跡がオンになっている場合、アクティブなインデックスを非アクティブにすると、インデックス作成は停止します。つまり、実行中の作成操作は停止し、インデックスは変更されなくなります。
start_change_tracking フルテキスト インデックスの増分作成を開始します。 テーブルにタイムスタンプがない場合は、フルテキスト インデックスの完全作成を開始します。 テーブルへの変更の追跡を開始します。

フルテキスト変更の追跡では、image、text、または ntext 型のフルテキスト インデックス付き列に対して実行される WRITETEXT または UPDATETEXT 操作は追跡されません。
stop_change_tracking テーブルへの変更の追跡を停止します。
update_index 現在の変更履歴のセットをフルテキスト インデックスに反映します。
start_background_updateindex 変更の追跡中に発生した変更を、発生した時点でフルテキスト インデックスに反映します。
stop_background_updateindex 変更履歴の反映を、フルテキスト インデックスの発生時に停止します。
start_full テーブルのフルテキスト インデックスの完全作成を開始します。
start_incremental テーブルのフルテキスト インデックスの増分作成を開始します。
停止 完全または増分の作成を停止します。

[ @ftcat = ] N'ftcat'

作成アクションの有効な既存のフルテキスト カタログ名。 その他のすべてのアクションでは、このパラメーターは NULL である必要があります。 @ftcatは sysname で、既定値は NULL.

[ @keyname = ] N'keyname'

作成アクションの@tabnameに対する有効な単一キー列の一意の null 非許容インデックス。 その他のすべてのアクションでは、このパラメーターは NULL である必要があります。 @keynameは sysname で、既定値は NULL.

リターン コードの値

0 (成功) または 1 (失敗)。

結果セット

ありません。

解説

特定のテーブルに対してフルテキスト インデックスが非アクティブ化されると、既存のフルテキスト インデックスは次の完全な作成まで再メインされます。ただし、SQL Server は非アクティブ化されたテーブルに対するクエリをブロックするため、このインデックスは使用されません。

テーブルが再アクティブ化され、インデックスが再入力されていない場合でも、古いインデックスは、フルテキスト対応の新しい列ではなくメインクエリで使用できます。 削除された列のデータは、フルテキスト列の検索を指定するクエリで照合されます。

フルテキスト インデックス作成用にテーブルを定義した後、その列のデータ型を変更するか、フルテキスト一意キーを 1 つの列から別の列に変更することで、フルテキスト一意キー列を別のデータ型に切り替えると、後続のクエリ中にエラーが発生し、エラー メッセージが返される可能性があります。

フルテキスト検索キー値key_value data_type型への変換に失敗しました。

このエラーを回避するには、削除アクションを使用してこのテーブルのフルテキスト定義を削除し、次sp_fulltext_columnsp_fulltext_table使用してsp_fulltext_table再定義します。

フルテキスト キー列は、900 バイト以下に定義する必要があります。 パフォーマンス上の理由から、キー列のサイズはできるだけ小さくすることをお勧めします。

アクセス許可

sysadmin 固定サーバー ロールのメンバー、固定データベース ロールのdb_ownerdb_ddladmin、またはフルテキスト カタログに対する参照権限を持つユーザーのみが実行sp_fulltext_tableできます。

A. フルテキスト インデックス作成用にテーブルを有効にする

次の例では、データベースのテーブルのフルテキスト インデックス メタデータをDocumentAdventureWorks作成します。 Cat_Desc はフルテキスト カタログです。 PK_Document_DocumentIDDocument の一意な単一列のインデックスです。

USE AdventureWorks2022;
GO

EXEC sp_fulltext_table 'Production.Document',
    'create',
    'Cat_Desc',
    'PK_Document_DocumentID';

--Add some columns
EXEC sp_fulltext_column 'Production.Document',
    'DocumentSummary',
    'add';

-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document',
    'activate';
GO

B. 変更履歴のアクティブ化と伝達

次の例では、変更の追跡をアクティブにし、発生した変更を直ちにフルテキスト インデックスに反映します。

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO

C: フルテキスト インデックスを削除する

次の例では、Document データベースの AdventureWorks テーブルに対する、フルテキスト インデックス メタデータを削除します。

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO