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