sp_fulltext_catalog (Transact-SQL)
フルテキスト カタログの作成と削除、およびカタログのインデックス作成の開始と中止を行います。データベースごとに複数のフルテキスト カタログを作成できます。
重要
この機能は、Microsoft SQL Server の将来のバージョンで削除されます。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。代わりに、CREATE FULLTEXT CATALOG、ALTER FULLTEXT CATALOG、および DROP FULLTEXT CATALOG を使用してください。
適用対象: SQL Server (SQL Server 2008: から現在のバージョンまで)、SQL Database V12。 |
構文
sp_fulltext_catalog [ @ftcat= ] 'fulltext_catalog_name' ,
[ @action= ] 'action'
[ , [ @path= ] 'root_directory' ]
引数
[ @ftcat=] 'fulltext_catalog_name'
フルテキスト カタログの名前を指定します。カタログ名は各データベース内で一意である必要があります。fulltext_catalog_name のデータ型は sysname です。[ @action=] 'action'
実行する操作を指定します。action のデータ型は varchar(20) で、次のいずれかの値を指定できます。注意
フルテキスト カタログは必要に応じて作成、削除、修正できますが、複数のカタログで同時にスキーマを変更することは避けてください。このようなアクションは、sp_fulltext_table ストアド プロシージャを使用して実行できます。これが推奨される方法です。
値
説明
作成
ファイル システムに空の新しいフルテキスト カタログを作成し、fulltext_catalog_name と root_directory が存在する場合はその値を使用して、sysfulltextcatalogs 内に関連する行を追加します。データベース内で fulltext_catalog_name は一意である必要があります。
Drop
ファイル システムから該当ファイルを削除し、sysfulltextcatalogs 内の関連する行を削除することで、fulltext_catalog_name を削除します。このカタログに 1 つ以上のテーブルのインデックスが含まれている場合、このアクションは失敗します。カタログからテーブルを削除するには、sp_fulltext_table 'table_name', 'drop' を実行する必要があります。
カタログが存在しない場合、エラーが表示されます。
start_incremental
fulltext_catalog_name の増分作成を開始します。カタログが存在しない場合、エラーが表示されます。フルテキスト インデックス作成が既にアクティブな場合、警告が表示され、作成は行われません。増分作成では、変更された行だけがフルテキスト インデックス作成用に取得されます。ただしフルテキスト インデックスが作成されるテーブルには、timestamp 列が含まれていることが前提となります。
start_full
fulltext_catalog_name の完全作成を開始します。既にインデックス作成が行われている場合でも、このフルテキスト カタログと関連するすべてのテーブルにあるすべての行が、フルテキスト インデックス作成用に取得されます。
[停止]
fulltext_catalog_name のインデックス作成を中止します。カタログが存在しない場合、エラーが表示されます。インデックスの作成を既に中止している場合、警告は表示されません。
Rebuild
fulltext_catalog_name を再構築します。カタログの再構築では、既存のカタログが削除され、代わりに新しいカタログが作成されます。フルテキスト インデックスの参照を持つすべてのテーブルが新しいカタログに関連付けられます。再構築すると、データベース システム テーブル内のフルテキスト メタデータがリセットされます。
変更の追跡がオフになっていると、再構築しても、新しく作成されたフルテキスト カタログにデータが再び追加されることはありません。その場合、データを再び追加するには、sp_fulltext_catalog に start_fullまたはstart_incremental アクションを指定して実行する必要があります。
[ @path=] 'root_directory'
create アクションのルート ディレクトリです。物理的なフル パスではありませんroot_directory のデータ型は nvarchar(100) で、既定値は NULL です。この場合、セットアップ時に指定された既定の場所が使用されます。これは Mssql ディレクトリ内の Ftdata サブディレクトリです。たとえば、C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\FTData がこれに相当します。指定するルート ディレクトリは、同じコンピューター上のドライブに存在している必要があります。ルート ディレクトリ名には、ドライブ文字だけを指定したり、相対パスを指定することはできません。ネットワーク ドライブ、リムーバブル ドライブ、フロッピー ディスク、および UNC パスはサポートされていません。フルテキスト カタログは、SQL Server インスタンスに関連付けられているローカル ハード ドライブ上に作成する必要があります。@path は、action が create の場合にのみ有効です。create 以外のアクション (stop、rebuild など) の場合は、@path を NULL にするか省略します。
SQL Server インスタンスがクラスター内の仮想サーバーの場合、指定するカタログ ディレクトリは、SQL Server リソースが依存する共有ディスク ドライブ上にある必要があります。@path を指定しない場合、既定のカタログ ディレクトリの場所は、共有ディスク ドライブ上の、仮想サーバーのインストール時に指定したディレクトリになります。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
なし
解説
fulltext_catalog_name でフルテキスト データの完全なスナップショットを作成するには、start_full アクションを使用します。データベースで変更された行についてのみインデックスを再作成するには、start_incremental アクションを使用します。増分作成は、テーブルに timestamp 型の列がある場合のみ指定できます。フルテキスト カタログ内のテーブルに timestamp 型の列が含まれていない場合、そのテーブルでは完全作成が行われます。
フルテキスト カタログおよびインデックス データは、フルテキスト カタログ ディレクトリに作成したファイルに格納されます。フルテキスト カタログ ディレクトリは、@path で指定したディレクトリのサブディレクトリとして作成されます。@path を指定しない場合は、サーバーの既定のフルテキスト カタログ ディレクトリにサブディレクトリが作成されます。フルテキスト カタログ ディレクトリの名前は、サーバー上で一意になるように作成されます。したがって、特定のサーバー上のすべてのフルテキスト カタログ ディレクトリで、同じパスを共有できます。
権限
このストアド プロシージャを呼び出すには、db_owner ロールのメンバーであることが必要です。必要なアクションに応じて、ユーザーは対象のフルテキスト カタログに対し、(db_owner が持つ) ALTER または CONTROL 権限を持っている必要があります。
使用例
A.フルテキスト カタログを作成する
次の例では、AdventureWorks2012 データベースに空のフルテキスト カタログ Cat_Desc を作成します。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'create';
GO
B.フルテキスト カタログを再構築するには
次の例では、AdventureWorks2012 データベースで既存のフルテキスト カタログ Cat_Desc を再構築します。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'rebuild';
GO
C.フルテキスト カタログの作成を開始する
次の例では、Cat_Desc カタログの完全作成を開始します。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'start_full';
GO
D.フルテキスト カタログの作成を中止する
次の例では、Cat_Desc カタログの作成を中止します。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'stop';
GO
E.フルテキスト カタログを削除する
次の例では、Cat_Desc カタログを削除します。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'drop';
GO
参照
FULLTEXTCATALOGPROPERTY (Transact-SQL)
sp_fulltext_database (Transact-SQL)
sp_help_fulltext_catalogs (Transact-SQL)
sp_help_fulltext_catalogs_cursor (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)
フルテキスト検索