sp_fulltext_table (Transact-SQL)
適用対象: SQL Server
Azure Synapse Analytics
フルテキスト インデックス作成のためにテーブルをマークまたはマーク解除します。
重要
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに、
構文
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)であり、これらの値のいずれかを指定できます。
値 | 説明 |
---|---|
作成 | @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'
create アクションの有効な既存のフルテキスト カタログ名。 その他のすべてのアクションでは、このパラメーターは NULL である必要があります。 @ftcat は sysname で、既定値は NULL
です。
[ @keyname = ] N'keyname'
create アクションの@tabnameに対する有効な単一キー列の一意の null 非許容インデックス。 その他のすべてのアクションでは、このパラメーターは NULL である必要があります。 @keyname は sysname で、既定値は NULL
です。
リターン コードの値
0
(成功) または 1
(失敗)。
結果セット
ありません。
解説
特定のテーブルに対してフルテキスト インデックスが非アクティブ化された後、既存のフルテキスト インデックスは、次の完全作成までそのまま残ります。ただし、SQL Server では非アクティブ化されたテーブルに対するクエリがブロックされるため、このインデックスは使用されません。
テーブルが再アクティブ化され、インデックスが再作成されない場合、古いインデックスは、新しいフルテキスト対応の列ではなく、残りのクエリに対して引き続き使用できます。 削除された列のデータは、フルテキスト列の検索を指定するクエリで照合されます。
フルテキスト インデックス作成用にテーブルを定義した後、その列のデータ型を変更するか、フルテキスト一意キーを 1 つの列から別の列に変更することで、フルテキスト一意キー列を別のデータ型に切り替えると、後続のクエリ中にエラーが発生し、エラー メッセージが返される可能性があります。
フルテキスト検索キー値key_valuedata_type型への変換に失敗しました。
このエラーを回避するには、sp_fulltext_table
の drop アクションを使用してこのテーブルのフルテキスト定義を削除し、sp_fulltext_table
とsp_fulltext_column
を使用して再定義します。
フルテキスト キー列は、900 バイト以下に定義する必要があります。 パフォーマンス上の理由から、キー列のサイズはできるだけ小さくすることをお勧めします。
アクセス許可
sysadmin固定サーバー ロール、db_ownerおよびdb_ddladmin固定データベース ロールのメンバー、またはフルテキスト カタログに対する参照権限を持つユーザーのみが、sp_fulltext_table
を実行できます。
例
A. フルテキスト インデックス作成用にテーブルを有効にする
次の例では、AdventureWorks
データベースのDocument
テーブルのフルテキスト インデックス メタデータを作成します。 Cat_Desc
はフルテキスト カタログです。 PK_Document_DocumentID
は Document
の一意な単一列のインデックスです。
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