sp_fulltext_table (Transact-SQL)
テーブルに対してフルテキスト インデックスの作成をアクティブにするかどうかを設定します。
重要 : |
---|
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに新しいフルテキスト データ定義言語 (DDL) ステートメントを使用してください。詳細については、CREATE、ALTER、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 です。
結果セット
なし
解説
特定のテーブルに対してフルテキスト インデックスを非アクティブにした後も、次にカタログの完全作成を行うまでは、既存のフルテキスト インデックスはそのままに残ります。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 固定データベース ロールのメンバ、またはフルテキスト カタログの参照権限を持つユーザーだけです。
戻り値
0 (成功) または 1 (失敗)
例
A. フルテキスト インデックスに対してテーブルを有効にする
次の例では、AdventureWorks
データベースの Document
テーブルに対して、フルテキスト インデックス メタデータを作成します。Cat_Desc
はフルテキスト カタログです。PK_Document_DocumentID
は Document
の一意な単一列のインデックスです。
USE AdventureWorks;
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 AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
C. フルテキスト インデックスを削除する
次の例では、AdventureWorks
データベースの Document
テーブルに対する、フルテキスト インデックス メタデータを削除します。
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO
参照
関連項目
INDEXPROPERTY (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
sp_help_fulltext_tables (Transact-SQL)
sp_help_fulltext_tables_cursor (Transact-SQL)
sp_helpindex (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
フルテキスト検索ストアド プロシージャ (Transact-SQL)