sp_fulltext_table (Transact-SQL)
テーブルに対してフルテキスト インデックスの作成をアクティブにするかどうかを設定します。
重要 |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新しい開発作業では、この機能の使用を避け、現在この機能を使用しているアプリケーションは修正するようにしてください。代わりに、CREATE FULLTEXT INDEX、ALTER FULLTEXT INDEX、および DROP FULLTEXT INDEX を使用します。 |
構文
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
引数
[ @tabname=] 'qualified_table_name'
1 つまたは 2 つの要素で構成されるテーブル名を指定します。テーブルは現在のデータベースに存在している必要があります。qualified_table_name のデータ型は nvarchar(517) で、既定値はありません。[ @action=] 'action'
実行する操作を指定します。action のデータ型は nvarchar(50) で、既定値はありません。次のいずれかの値を指定できます。値
説明
Create
qualified_table_name で示されるテーブルに対するフルテキスト インデックスのメタデータを作成し、このテーブルのフルテキスト インデックス データを fulltext_catalog_name に格納します。この操作では、unique_index_name をフルテキスト キー列として使用することも指定します。この一意なインデックスは既に存在していて、テーブル内の列に定義しておく必要があります。
このテーブルに対するフルテキスト検索は、フルテキスト カタログが作成されるまで実行できません。
Drop
qualified_table_name に対するフルテキスト インデックスのメタデータを削除します。フルテキスト インデックスがアクティブな場合は、自動的に非アクティブになってからデータが削除されます。フルテキスト インデックスを削除する前に、列を削除する必要はありません。
Activate
qualified_table_name に対するフルテキスト インデックス データの収集機能が非アクティブな場合に、この機能をアクティブにします。フルテキスト インデックスをアクティブにするには、フルテキスト インデックスの対象となる列が少なくとも 1 つ必要です。
フルテキスト インデックスは、インデックス作成用の最初の列が追加されるとすぐに自動的にアクティブになり、作成を開始できるようになります。インデックスから最後の列が削除されると、インデックスは非アクティブになります。変更の追跡がオンの場合、非アクティブなインデックスをアクティブにすると、新しく作成が開始されます。
この操作では、実際にフルテキスト インデックスを作成するのではなく、ファイル システムのフルテキスト カタログにテーブルを登録するだけです。この操作を行うことで、次にフルテキスト インデックスを作成するときに qualified_table_name から行を取得できるようになります。
Deactivate
qualified_table_name のフルテキスト インデックスを非アクティブにします。この操作を行うと、qualified_table_name のフルテキスト インデックス データを収集できなくなります。フルテキスト インデックス メタデータはそのまま残り、テーブルは再びアクティブにできます。
変更の追跡がオンになっている場合、アクティブなインデックスを非アクティブにすると、インデックス作成は停止します。つまり、実行中の作成操作は停止し、インデックスは変更されなくなります。
start_change_tracking
フルテキスト インデックスの追加作成を開始します。テーブルが timestamp 型でない場合は、フルテキスト インデックスの完全作成を開始します。また、テーブルへの変更の追跡を開始します。
フルテキストの変更の追跡では、データ型が image、text、または ntext のフルテキスト インデックス列に対して行われる WRITETEXT または UPDATETEXT の操作は追跡されません。
stop_change_tracking
テーブルへの変更の追跡を停止します。
update_index
現在までに追跡された一連の変更をフルテキスト インデックスに反映します。
Start_background_updateindex
変更の追跡中に発生した変更を、発生した時点でフルテキスト インデックスに反映します。
Stop_background_updateindex
変更の追跡中に発生した変更を、発生した時点ではフルテキスト インデックスに反映しないようにします。
start_full
テーブルのフルテキスト インデックスの完全作成を開始します。
start_incremental
テーブルのフルテキスト インデックスの追加作成を開始します。
Stop
完全作成または追加作成を停止します。
[ @ftcat=] 'fulltext_catalog_name'
create 操作に対して、有効な既存のフルテキスト カタログ名を指定します。その他すべての操作の場合は、このパラメーターは NULL にする必要があります。fulltext_catalog_name のデータ型は sysname で、既定値は NULL です。[ @keyname=] 'unique_index_name'
create 操作に対して、qualified_table_name 上の有効な単一キー列である、一意でかつ NULL 値を許容しないインデックスを指定します。その他すべての操作の場合は、このパラメーターは NULL にする必要があります。unique_index_name のデータ型は sysname で、既定値は NULL です。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
なし
説明
特定のテーブルに対してフルテキスト インデックスを非アクティブにした後も、次にカタログの完全作成を行うまでは、既存のフルテキスト インデックスはそのままに残ります。Microsoft SQL Server では非アクティブ テーブルに対してクエリは実行できないので、このインデックスが使用されることはありません。
テーブルを再びアクティブにして、インデックスを再作成しない場合、フルテキスト インデックスが有効になっている、新規ではない既存の列に対してクエリを実行するときに、以前のインデックスを引き続き使用できます。フルテキスト列検索を指定したクエリでは、削除された列のデータが照合されます。
テーブルにフルテキスト インデックス作成を指定した後、フルテキスト一意キー列に別のデータ型を指定するか、一意キー列を別の列に変更してデータ型が変わった場合は、全体を再作成しないと以降のクエリが失敗し、"フルテキスト検索キー値 key_value の data_type データ型への変換に失敗しました。" というエラー メッセージが表示されることがあります。この問題を防ぐには、sp_fulltext_table の drop 操作を実行してこのテーブルのフルテキスト定義を完全に削除し、sp_fulltext_table と sp_fulltext_column を実行してテーブルを再定義します。
フルテキスト キー列は 900 バイト以下に定義する必要があります。パフォーマンス上の理由から、キー列のサイズはできる限り小さくすることをお勧めします。
権限
sp_fulltext_table を実行できるのは、sysadmin 固定サーバー ロールのメンバー、db_owner 固定データベース ロールおよび db_ddladmin 固定データベース ロールのメンバー、またはフルテキスト カタログの参照権限を持つユーザーだけです。
例
A. フルテキスト インデックスに対してテーブルを有効にする
次の例では、AdventureWorks2008R2 データベースの Document テーブルに対して、フルテキスト インデックス メタデータを作成します。Cat_Desc はフルテキスト カタログです。PK_Document_DocumentID は Document の一意な単一列のインデックスです。
USE AdventureWorks2008R2;
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 AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
C. フルテキスト インデックスを削除する
次の例では、AdventureWorks2008R2 データベースの Document テーブルに対する、フルテキスト インデックス メタデータを削除します。
USE AdventureWorks2008R2;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO