Full-Text インデックスのプロパティの表示と変更
Management Studio でフルテキスト インデックスのプロパティを表示または変更するには
オブジェクト エクスプローラーで、サーバーを展開します。
[ データベース] を展開し、フルテキスト インデックスを含むデータベースを展開します。
[テーブル]を展開します。
フルテキスト インデックスが定義されているテーブルを右クリックし、インデックス Full-Text 選択し、 Full-Text インデックス コンテキスト メニューの [プロパティ] をクリックします。 [ フルテキスト インデックスのプロパティ ] ダイアログ ボックスが開きます。
[ ページの選択 ] ウィンドウでは、次のいずれかのページを選択できます。
ページ 説明 全般 フルテキスト インデックスの基本プロパティを表示します。 これには、いくつかの変更可能なプロパティと、データベース名、テーブル名、フルテキスト キー列の名前など、変更できない多数のプロパティが含まれます。 変更可能なプロパティは次のとおりです。
Full-Text インデックス ストップリスト
Full-Text インデックス作成が有効
変更の追跡
検索プロパティ リスト
詳細については、「 Full-Text インデックスのプロパティ ([全般] ページ)」を参照してください。列 フルテキスト インデックス作成に使用できるテーブル列を表示します。 選択した列にフルテキスト インデックスが付けられます。 フルテキスト インデックスに含める列をいくつでも選択できます。 詳細については、「 Full-Text インデックスのプロパティ ([列] ページ)」を参照してください。 スケジュール このページを使用して、フルテキスト インデックス作成の増分テーブル作成を開始する SQL Server エージェント ジョブのスケジュールを作成または管理します。 詳細については、「 フルテキスト インデックスの作成」をご覧ください。
**大事な** [Full-Text インデックスのプロパティ] ダイアログ ボックスを終了すると、新しく作成されたスケジュールが SQL Server エージェント ジョブに関連付けられます (database_nameでテーブルの増分作成を開始します。table_name)。[ OK] をクリックします。をクリックして変更を保存し、[ フルテキスト インデックスのプロパティ ] ダイアログ ボックスを終了します。
インデックス付きテーブルと列のプロパティの表示
OBJECTPROPERTYEX などのいくつかの Transact-SQL 関数を使用して、さまざまなフルテキスト インデックス作成プロパティの値を取得できます。 この情報は、フルテキスト検索の管理とトラブルシューティングに役立ちます。
次の表に、インデックス付きテーブルと列に関連するフルテキスト プロパティと、関連する Transact-SQL 関数を示します。
| プロパティ | 説明 | 機能 |
|---|---|---|
FullTextTypeColumn |
列のドキュメント型情報を保持するテーブル内の TYPE COLUMN。 | COLUMNPROPERTY |
IsFulltextIndexed |
列がフルテキスト インデックス作成に対して有効になっているかどうか。 | COLUMNPROPERTY |
IsFulltextKey |
インデックスがテーブルのフルテキスト キーであるかどうかを示します。 | INDEXPROPERTY |
| テーブルフルテキストバックグラウンド更新インデックスオン | テーブルにフルテキストバックグラウンド更新インデックスが設定されているかどうかを示します。 | OBJECTPROPERTYEX |
TableFulltextCatalogId |
テーブルのフルテキスト インデックス データが存在するフルテキスト カタログ ID。 | OBJECTPROPERTYEX |
TableFulltextChangeTrackingOn |
テーブルでフルテキスト変更追跡が有効になっているかどうか。 | OBJECTPROPERTYEX |
TableFulltextDocsProcessed |
フルテキスト インデックス作成の開始以降に処理された行数。 | OBJECTPROPERTYEX |
| TableFulltextFailCount | 検索 Full-Text インデックスが作成されなかった行の数。 | OBJECTPROPERTYEX |
| テーブル全文項目数 | フルテキスト インデックスが正常に作成された行の数。 | OBJECTPROPERTYEX |
TableFulltextKeyColumn |
フルテキスト検索用の一意キー列の列 ID。 | OBJECTPROPERTYEX |
TableFullTextMergeStatus |
フルテキスト インデックスを持つテーブルが現在マージ中かどうか。 | OBJECTPROPERTYEX (オブジェクトプロパティーEX) |
| TableFulltextPendingChanges | 処理する保留中の変更追跡エントリの数。 | OBJECTPROPERTYEX |
TableFulltextPopulateStatus |
フルテキスト テーブルの充足状況。 | OBJECTPROPERTYEX関数(オブジェクトのプロパティを取得する機能) |
TableHasActiveFulltextIndex |
テーブルにアクティブなフルテキスト インデックスがあるかどうか。 | OBJECTPROPERTYEX |
Full-Text キー列に関する情報の取得
通常、CONTAINSTABLE または FREETEXTTABLE 行セット値関数の結果は、ベース テーブルと結合する必要があります。 このような場合は、一意のキー列名を知る必要があります。 特定の一意のインデックスがフルテキスト キーとして使用されているかどうかを確認し、フルテキスト キー列の識別子を取得できます。
特定の一意のインデックスがフルテキスト キー列として使用されているかどうかを調べるには
SELECT ステートメントを使用して INDEXPROPERTY 関数を呼び出します。 関数呼び出しでは、OBJECT_ID関数を使用してテーブル (table_name) の名前をテーブル ID に変換し、テーブルの一意のインデックスの名前を指定し、
IsFulltextKeyindex プロパティを次のように指定します。SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );このステートメントは、フルテキスト キー列の一意性を強制するためにインデックスを使用する場合は 1 を返し、そうでない場合は 0 を返します。
例
次の例では、次のように、 PK_Document_DocumentID インデックスを使用してフルテキスト キー列の一意性を適用するかどうかを調べます。
USE AdventureWorks
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
次の使用例は、 PK_Document_DocumentID インデックスを使用してフルテキスト キー列の一意性を適用する場合、1 を返します。 それ以外の場合は、0 または NULL を返します。 NULL は、無効なインデックス名を使用している、インデックス名がテーブルに対応していない、テーブルが存在しない、などであることを意味します。
フルテキスト キー列の識別子を検索するには
フルテキスト対応の各テーブルには、テーブルの一意の行 ( unique**key 列) を適用するために使用される列があります。 OBJECTPROPERTYEX 関数から取得した
TableFulltextKeyColumnプロパティには、一意のキー列の列 ID が含まれています。この識別子を取得するには、SELECT ステートメントを使用して OBJECTPROPERTYEX 関数を呼び出します。 OBJECT_ID関数を使用して、テーブル (table_name) の名前をテーブル ID に変換し、次のように
TableFulltextKeyColumnプロパティを指定します。SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
例
次の例では、フルテキスト キー列または NULL の識別子を返します。 NULL は、無効なインデックス名を使用していること、インデックス名がテーブルに対応していない、テーブルが存在しない、などであることを意味します。
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
次の例は、一意キー列の識別子を使用して列の名前を取得する方法を示しています。
USE AdventureWorks;
GO
DECLARE @key_column sysname
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn')
)
SELECT @key_column AS 'Unique Key Column';
GO
次の使用例は、 Unique Key Column という名前の結果セット列を返します。この列には、Document テーブル DocumentID の一意のキー列の名前を含む 1 つの行が表示されます。 このクエリに無効なインデックス名が含まれている場合、インデックス名がテーブルに対応していない、テーブルが存在しない、など、NULL が返されることに注意してください。
Full-Text インデックス作成のテーブルの無効化または再有効化
SQL Server では、ユーザーが作成したすべてのデータベースは、既定でフルテキストが有効になっています。 さらに、フルテキスト インデックスが作成され、列がインデックスに追加されるとすぐに、個々のテーブルでフルテキスト インデックス作成が自動的に有効になります。 最後の列がフルテキスト インデックスから削除されると、テーブルはフルテキスト インデックス作成に対して自動的に無効になります。
フルテキスト インデックスがあるテーブルでは、SQL Server Management Studio を使用して、フルテキスト インデックス作成用のテーブルを手動で無効にしたり、再度有効にしたりできます。
フルテキスト インデックス作成用にテーブルを有効にするには
サーバー グループを展開し、[ データベース] を展開し、フルテキスト インデックス作成で有効にするテーブルを含むデータベースを展開します。
[ テーブル] を展開し、フルテキスト インデックス作成で無効または再度有効にするテーブルを右クリックします。
[ インデックスFull-Text 選択し、[インデックス Full-Text 無効にする ] または [インデックス Full-Text 有効にする] をクリックします。
テーブルから Full-Text インデックスを削除する
テーブルからフルテキスト インデックスを削除するには
オブジェクト エクスプローラーで、削除するフルテキスト インデックスがあるテーブルを右クリックします。
Full-Text インデックスを削除 を選択します。
メッセージが表示されたら、[ OK] を クリックして、フルテキスト インデックスを削除することを確認します。