Full-Text Search のアップグレード (SQL Server Search)

適用対象:SQL Server

SQL Server は、セットアップ中、または SQL Server 2005 (9.x) 以前のバージョンからデータベース ファイルとフルテキスト カタログをアタッチ、復元、またはコピーするときに、フルテキスト検索をアップグレードします。

サーバー インスタンスをアップグレードする

インプレース アップグレードでは、SQL Server のインスタンスが SQL Server の旧バージョンとサイド バイ サイドでセットアップされ、データが移行されます。 旧バージョンの SQL Server にフルテキスト検索がインストールされている場合、新しいバージョンのフルテキスト検索が自動的にインストールされます。 サイド バイ サイド インストールとは、SQL Server のインスタンスごとに次のコンポーネントが存在することを意味します。

ワード ブレーカー、ステミング機能、フィルター

各インスタンスは、オペレーティング システムのバージョンと関係なく、固有のワード ブレーカー、ステミング機能、フィルターのセットを使用するようになりました。 これらのコンポーネントは、インスタンス レベルで簡単に登録し、構成できます。 詳細については、「 ワードブレーカーとステマーの設定と管理 」および 「フィルターの設定と管理」をご覧ください。

フィルター デーモン ホスト

フルテキスト フィルター デーモン ホストは、インデックスとクエリに使用する外部の拡張コンポーネント (ワード ブレーカー、ステミング機能、フィルターなど) を、Full-Text Engine の整合性を損なわずに安全に読み込み、駆動するプロセスです。 サーバー インスタンスでは、マルチスレッド フィルターに対してはすべてマルチスレッド処理が使用され、シングル スレッド フィルターに対してはすべてシングル スレッド処理が使用されます。

FDHOST Launcherサービス(MSSQLFDLauncher)は、特定のデータベース エンジンインスタンスのフィルターデーモンホストプロセスにサービスアカウント情報を伝播させます。 サービスアカウントの設定については、 全文のFilter Daemon Launcherの「サービスアカウントを設定する」をご覧ください。

SQL Server 2005 アップグレードの互換性

フルテキスト カタログは、フルテキスト インデックスのグループを含む論理オブジェクトまたは仮想オブジェクトです。 そのため、新しいフルテキスト カタログは、物理パスを持つデータベース ファイルとして扱われません。 しかし、SQL Server 2005(9.x)からアップグレードすると、データファイルを含む全文カタログに対して同じディスク上で新しいファイルグループが作成されます。

この手順では、アップグレード後も古いディスク I/O の動作が維持されます。 ルート パスが存在する場合、そのカタログのフルテキスト インデックスは、すべて新しいファイル グループに配置されます。 前のフルテキスト カタログのパスが無効の場合、フルテキスト インデックスは、ベース テーブルと同じファイル グループで保持されるか、パーティション テーブルの場合にはプライマリ ファイル グループで保持されます。

フルテキスト アップグレード オプション

SQL Serverインスタンスをアップグレードする際、ユーザーインターフェースでは以下のいずれかの全文アップグレードオプションを選択できます。 これらのオプションはSQL Server 2005(9.x)データベースのみで利用可能です。

Import

フルテキスト カタログがインポートされます。 通常、インポートの方が再構築よりもかなり高速に処理されます。 例えば、CPUコアが1つだけの場合、インポートはリビルドの約10倍速く実行されます。 ただし、インポートされたフルテキスト カタログでは、最新バージョンの SQL Server と共にインストールされた新しいワード ブレーカーは使用されません。 クエリ結果の一貫性を維持するためには、フルテキスト カタログを再作成する必要があります。

Rebuildはマルチスレッドモードで動作でき、CPUコアが10個以上ある場合、Rebuildが全コアを使用できるようにすれば、Rebuildはインポートよりも速く動作するかもしれません。

フルテキスト カタログを使用できない場合は、関連付けられているフルテキスト インデックスが再構築されます。

全文索引のインポート効果については、この記事後半の 「全文アップグレードオプション選択時の考慮事項 」を参照してください。

Rebuild

全文カタログは現在のバージョンのワードブレーカーを使って再構築されます。 インデックスの再構築には時間がかかり、アップグレード後に膨大な量の CPU とメモリが必要になる可能性があります。

リセット

フルテキスト カタログがリセットされます。 SQL Server 2005(9.x)からアップグレードすると、全文カタログファイルは削除されますが、全文カタログや全文索引のメタデータは保持されます。 アップグレード後、すべてのフルテキスト インデックスは変更の追跡に対して無効になり、クロールは自動的に開始されません。 アップグレードが完了した後、手動で完全ポピュレーションを実行するまで、カタログは空のままです。

フルテキスト アップグレード オプションの選択に関する注意点

アップグレードオプションを選ぶ際には、以下の点を考慮してください。

  • クエリ結果の一貫性が必要かどうか。

    データベース エンジンは Full-Text とセマンティックサーチで使える新しいワードブレイカーをインストールします。 ワード ブレーカーは、インデックスの作成時とクエリ時の両方に使用されます。 フルテキスト カタログを再構築しないと、検索結果に一貫性がない可能性があります。 もし、以前のバージョンのデータベース エンジンと現在のワードブレーカーで異なる形で区切られたフレーズを探す全文クエリを発行すると、そのフレーズを含む文書や行が取得されないことがあります。 これはインデックスされたフレーズがクエリとは異なるロジックで区切られたためです。 この問題を解決するには、新しいワード ブレーカーを使用してフルテキスト カタログを再作成 (再構築) し、インデックス時とクエリ時の動作が同一になるようにします。 これを実現するには 「再構築 」オプションを選ぶか、 インポート オプションを選んだ後に手動で再構築することもできます。

  • 整数型のフルテキスト キー列に基づいて構築されているフルテキスト インデックスがあるかどうか。

    再構築では内部最適化処理が実行されます。これにより、アップグレードされたフルテキスト インデックスのクエリ パフォーマンスが向上することがあります。 具体的には、ベース テーブルのフルテキスト キー列が整数データ型であるフルテキスト インデックスを含むフルテキスト カタログがある場合、再構築によって、アップグレード後のフルテキスト クエリのパフォーマンスが理想的なものになります。 この場合、 リビルド オプションを使うべきです。

    全文インデックスの場合、全文キーとして使う列は整数のデータ型であるべきです。 詳細については、「 全文索引のパフォーマンス改善」をご覧ください。

  • サーバー インスタンスをオンラインにする場合に何を優先するか。

    アップグレード時のインポートまたは再構築では CPU リソースを大量に消費するので、その他のサーバー インスタンスがアップグレードされてオンラインになるのが遅れます。 できるだけ早くサーバー インスタンスをオンラインにすることが重要であり、アップグレード後に手動作成を実行する場合は、 リセット が適しています。

フルテキスト インデックスをインポートした後にクエリ結果に不一致が生じないようにする

SQL Server 2005(9.x)データベースをアップグレードする際に全文カタログをインポートした場合、旧ワードブレーカーと新しいワードブレーカーの挙動の違いにより、クエリと全文インデックスの内容に不一致が生じる可能性があります。 この場合、クエリとフルテキスト インデックスの内容を確実に完全一致させるためには、次のいずれかのオプションを選択します。

  • ALTER FULLTEXT CATALOGを使用して、フルテキスト インデックスを含むフルテキスト カタログを再構築します。

    ALTER FULLTEXT CATALOG <catalog_name> REBUILD;
    
  • ALTER FULLTEXT INDEX を使用して全文索引で FULL POPULATION を実行します:

    ALTER FULLTEXT INDEX ON <table_name> START FULL POPULATION;
    

ワードブレーカーについての詳細は、「 ワードブレーカーおよびステマーの設定および管理」をご覧ください。

ノイズ ワード ファイルをストップリストにアップグレードする

データベースが SQL Server 2005 (9.x) からアップグレードされると、ノイズ ワード ファイルは使用されなくなります。 ただし、古いノイズ ワード ファイルは FTDATA\FTNoiseThesaurusBak フォルダーに保存され、後で対応する SQL Server ストップリストを更新または作成する際に使用できます。

SQL Server 2005 (9.x) からアップグレードした後:

  • SQL Server 2005 (9.x) のインストール時のノイズ ワード ファイルを追加、変更、または削除しなかった場合は、システム ストップリストでニーズが満たされます。

  • SQL Server 2005 (9.x) でノイズ ワード ファイルが変更された場合は、アップグレード時にその変更が失われます。 このような更新を再作成するには、対応する のストップリストで、これらの変更を手動で再作成する必要があります。 詳細については、ALTER FULLTEXT STOPLISTを参照してください。

  • フルテキスト インデックスにストップワードを適用しない場合 (たとえば、SQL Server 2005 (9.x) インストールでノイズ ワード ファイルを削除または消去した場合)、アップグレードされたフルテキスト インデックスごとにストップリストをオフにする必要があります。 次の Transact-SQL ステートメントを実行します (database をアップグレードされたデータベースの名前に置き換え、tabletable の名前に置き換えます)。

    USE [database];
    GO
    
    ALTER FULLTEXT INDEX ON [table]
    SET STOPLIST OFF;
    GO
    

    STOPLIST OFF節はストップワードフィルタリングを除去し、ノイズとみなされる単語をフィルタリングせずにテーブルの集団をトリガーします。

バックアップとインポートされたフルテキスト カタログ

アップグレード時に再構築またはリセットされる全文カタログ(および新規全文カタログの場合)において、全文カタログは論理的な概念であり、ファイルグループには存在しません。 そのため、フルテキスト カタログをバックアップするには、カタログのフルテキスト インデックスが含まれるファイル グループをすべて特定し、1 つずつバックアップする必要があります。 詳細については、「 フルテキスト カタログとインデックスのバックアップと復元」を参照してください。

SQL Server 2005 (9.x) からインポートされたフルテキスト カタログは、元のファイル グループ内のデータベース ファイルのままです。 MSFTESQL サービスが SQL Server に存在しない点を除き、フルテキスト カタログの SQL Server 2005 (9.x) バックアップ プロセスは引き続き適用されます。 SQL Server 2005 (9.x) におけるプロセスの詳細については、SQL Server 2005 オンライン ブックの「フルテキスト カタログのバックアップと復元」を参照してください。

データベースをアップグレードするときにフルテキスト インデックスを移行する

以前のバージョンの SQL Server のデータベース ファイルおよびフルテキスト カタログは、アタッチ、復元、またはデータベース コピー ウィザードを使用して、既存のインスタンスにアップグレードできます。 SQL Server 2005 (9.x) のフルテキスト インデックスがある場合は、インポート、リセット、または再構築されます。 upgrade_option サーバー プロパティは、これらのデータベースのアップグレード中にサーバー インスタンスが使用するフルテキスト アップグレード オプションを指定します。

SQL Server 2005(9.x)のデータベースを新しいインスタンスに添付、復元、またはコピーすると、そのデータベースは即座に利用可能になり、その後自動的にアップグレードされます。 インデックスを作成するデータ量によっては、インポートに数時間、再構築には最大でその 10 倍の時間がかかることがあります。 アップグレード オプションがインポートに設定されている場合、フルテキスト カタログが使用できない場合は、関連付けられているフルテキスト インデックスが再構築されます。

サーバー インスタンスでのフルテキスト アップグレードの動作を変更する

SQL Server 2005 (9.x) フルテキスト カタログの復元に関する考慮事項

SQL Server 2005(9.x)データベースから全文データをアップグレードする一つの方法は、新しいSQL Serverインスタンスに完全なデータベースバックアップを復元することです。

SQL Server 2005 (9.x) フルテキスト カタログのインポート中に、データベースとカタログ ファイルをバックアップおよび復元できます。 動作は SQL Server 2005 (9.x) と同じです。

  • データベースの完全バックアップには、フルテキスト カタログが含まれます。 フルテキスト カタログを参照するには、SQL Server 2005 (9.x) のファイル名 sysft_+catalog-name を使用します。

  • フルテキスト カタログがオフラインの場合、バックアップは失敗します。

SQL Server 2005 (9.x) のフルテキスト カタログのバックアップと復元の詳細については、SQL Server 2005 (9.x) オンライン ブックの フルテキスト カタログとインデックスバックアップと復元、およびファイル のバックアップと復元および Full-Text カタログ を参照してください。

データベースが SQL Server の新しいインスタンスに復元されると、フルテキスト カタログ用に新しいデータベース ファイルが作成されます。 このファイルの既定の名前は、ftrow_catalog-name.ndf です。 例えば、カタログ名cat1の場合、SQL Serverデータベースファイルのデフォルト名はftrow_cat1.ndfとなります。 しかし、ターゲットディレクトリでデフォルト名がすでに使われている場合、新しいデータベースファイル名は ftrow_catalog-name{GUID}.ndfと名付けられ、 GUID は新しいファイルのグローバルな一意識別子となります。

カタログがインポートされると、sys.database_filessys.master_filesが更新されてカタログ エントリが削除され、pathsys.fulltext_catalogs列がNULLに設定されます。

データベースをバックアップする

データベース バックアップを復元する

以下の例では、MOVE文のRESTORE節を用いて、ftdb1という名前のSQL Server 2005(9.x)データベースを復元しています。 SQL Server 2005 (9.x) のデータベース ファイル、ログ ファイル、およびカタログ ファイルは、SQL Server サーバー インスタンス上の新しい場所に、次のように移動されます。

  • データベース ファイル ftdb1.mdfC:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdfに移動されます。

  • ログ ファイル ftdb1_log.ldfは、ログ ディスク ドライブ上のログ ディレクトリ log_drive:\log_directory\ftdb1_log.ldfに移動されます。

  • sysft_cat90 カタログに対応するカタログ ファイルは、 C:\tempに移動されます。 全文索引がインポートされると、自動的にデータベースファイルに C:\ftrow_sysft_cat90.ndfされ、 C:\temp は削除されます。

RESTORE DATABASE [ftdb1] FROM DISK = N'C:\temp\ftdb1.bak'
    WITH FILE = 1,
    MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',
    MOVE N'sysft_cat90' TO N'C:\temp';

SQL Server 2005 データベースをアタッチする

SQL Server 2008 (10.0.x) 以降のバージョンでは、フルテキスト カタログは、フルテキスト インデックスのグループを指す論理的概念です。 フルテキスト カタログは、どのファイル グループにも属さない仮想オブジェクトです。 ただし、フルテキスト カタログ ファイルを含む SQL Server 2005 (9.x) データベースを新しい SQL Server サーバー インスタンスにアタッチすると、 SQL Server 2005 (9.x) と同様に、カタログ ファイルは他のデータベース ファイルとともに以前の場所からアタッチされます。

SQL Server にアタッチされた各フルテキスト カタログの状態は、データベースが SQL Server 2005 (9.x) からデタッチされたときと同じです。 フルテキスト インデックスの作成がデタッチ操作により中断されていた場合、SQL Server でその作成が再開され、このフルテキスト インデックスがフルテキスト検索に使用できるようになります。

SQL Server でフルテキスト カタログ ファイルが見つからない場合、または新しい場所を指定せずにアタッチ操作中にフルテキスト ファイルが移動された場合、動作は選択したフルテキスト アップグレード オプションによって異なります。 フルテキスト アップグレード オプションが [インポート] または [再構築]の場合、アタッチされたフルテキスト カタログは再構築されます。 フルテキスト アップグレード オプションが [リセット] の場合、アタッチされたフルテキスト カタログはリセットされます。

データベースの切り離しと接続に関する詳細は、「 データベースの切り離しと付け付け」「 CREATE DATABASE」「 sp_attach_db」「 sp_detach_db」をご覧ください。