次の方法で共有


Full-Text 検索機能のアップグレード

SQL Server 2014 へのフルテキスト検索のアップグレードは、セットアップ中、および以前のバージョンの SQL Server のデータベース ファイルとフルテキスト カタログが、データベースのコピー ウィザードを使用してアタッチ、復元、またはコピーされるときに行われます。

このトピックでは、フルテキスト検索のアップグレードに関する次の側面について説明します。

サーバー インスタンスのアップグレード

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

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

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

SQL Server 2008 では、FDHOST Launcher サービス (MSSQLFDLauncher) のサービス アカウントが導入されました。 このサービスは、サービス アカウント情報を SQL Server の特定のインスタンスのフィルター デーモン ホスト プロセスに伝達します。 サービス アカウントの設定の詳細については、「 フルテキスト フィルター デーモン ランチャーのサービス アカウントの設定」を参照してください。

SQL Server 2005 では、各フルテキスト インデックスは、ファイル グループに属し、物理パスを持ち、データベース ファイルとして扱われるフルテキスト カタログに存在します。 SQL Server 2008 以降のバージョンでは、フルテキスト カタログは、フルテキスト インデックスのグループを含む論理オブジェクトまたは仮想オブジェクトです。 そのため、新しいフルテキスト カタログは、物理パスを持つデータベース ファイルとして扱われません。 ただし、データ ファイルを含むフルテキスト カタログのアップグレード中に、同じディスクに新しいファイル グループが作成されます。 これにより、アップグレード後の古いディスク I/O 動作が維持されます。 ルート パスが存在する場合、そのカタログのフルテキスト インデックスは新しいファイル グループに配置されます。 古いフルテキスト カタログ パスが無効な場合、アップグレードでは、フルテキスト インデックスがベース テーブルと同じファイル グループに保持されるか、パーティション テーブルの場合はプライマリ ファイル グループに保持されます。

SQL Server 2005 Transact-SQL フルテキスト カタログを指定する DDL ステートメントは引き続き正常に動作します。

Full-Text アップグレードの選択肢

サーバー インスタンスを SQL Server 2014 にアップグレードする場合、ユーザー インターフェイスでは、次のいずれかのフルテキスト アップグレード オプションを選択できます。

輸入
フルテキスト カタログがインポートされます。 通常、インポートは再構築よりも大幅に高速です。 たとえば、1 つの CPU のみを使用する場合、インポートはリビルドの約 10 倍速く実行されます。 ただし、インポートされたフルテキスト カタログでは、最新バージョンの SQL Server と共にインストールされた新しいワード ブレーカーは使用されません。 クエリ結果の一貫性を確保するには、フルテキスト カタログを再構築する必要があります。

リビルドはマルチスレッド モードで実行できます。10 個を超える CPU が使用可能な場合は、すべての CPU のリビルドを許可すると、インポートよりもリビルドの実行速度が速くなる可能性があります。

フルテキスト カタログを使用できない場合は、関連付けられているフルテキスト インデックスが再構築されます。 このオプションは、SQL Server 2005 データベースでのみ使用できます。

フルテキスト インデックスのインポートによる影響については、このトピックで後述する「Full-Text アップグレード オプションの選択に関する考慮事項」を参照してください。

建て直す
フルテキスト カタログは、新しい拡張ワード ブレーカーを使用して再構築されます。 インデックスの再構築には時間がかかる場合があり、アップグレード後に大量の CPU とメモリが必要になる場合があります。

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

Full-Text アップグレード オプションの選択に関する考慮事項

アップグレード オプションを選択する際は、次の点を考慮してください。

  • クエリ結果の一貫性が必要ですか?

    SQL Server 2014 では、Full-Text およびセマンティック検索で使用する新しいワード ブレーカーがインストールされます。 ワード ブレーカーは、インデックス作成時とクエリ時の両方で使用されます。 フルテキスト カタログを再構築しないと、検索結果に一貫性がない可能性があります。 以前のバージョンの SQL Server と現在のワード ブレーカーでワード ブレーカーによって異なる方法で壊れている語句を検索するフルテキスト クエリを発行した場合、その語句を含むドキュメントまたは行が取得されない可能性があります。 これは、インデックス付きフレーズが、クエリで使用されているロジックとは異なるロジックを使用して破損したためです。 解決策は、インデックス時刻とクエリ時間の動作が同じになるように、フルテキスト カタログに新しいワード ブレーカーを再入力 (再構築) することです。 [再構築] オプションを選択してこれを行うか、[インポート] オプションを選択した後で手動でリビルドできます。

  • 整数のフルテキスト キー列に基づいてフルテキスト インデックスが作成されたかどうか。

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

    SQL Server 2014 のフルテキスト インデックスの場合、フルテキスト キーとして機能する列は整数データ型にすることをお勧めします。 詳細については、「 Full-Text インデックスのパフォーマンスの向上」を参照してください。

  • サーバー インスタンスをオンラインにするための優先順位は何ですか?

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

SQL Server 2005 Full-Text インデックスのインポート後のクエリ結果の一貫性を確保する

SQL Server 2005 データベースを SQL Server 2014 にアップグレードするときにフルテキスト カタログがインポートされた場合、古いワード ブレーカーと新しいワード ブレーカーの動作が異なるため、クエリとフルテキスト インデックスの内容が一致しない可能性があります。 この場合、クエリとフルテキスト インデックスコンテンツの間の完全一致を保証するには、次のいずれかのオプションを選択します。

  • フルテキスト インデックスを含むフルテキスト カタログを再構築する (ALTER FULLTEXT CATALOGcatalog_name REBUILD)

  • フルテキスト インデックスに対して FULL POPULATION を発行します (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION)。

ワード ブレーカーの詳細については、「 検索用のワード ブレーカーとステマーの構成と管理」を参照してください。

Noise-Word ファイルをストップリストにアップグレードする

SQL Server 2005 のノイズ ワードは、SQL Server 2008 以降のバージョンではストップワードに置き換えられました。 データベースを SQL Server 2005 から SQL Server 2014 にアップグレードすると、ノイズ ワード ファイルは使用されなくなります。 ただし、古いノイズ ワード ファイルは FTDATA\ FTNoiseThesaurusBak フォルダーに格納され、対応する SQL Server 2014 ストップリストを更新またはビルドするときに後で使用できます。

SQL Server 2005 からアップグレードした後:

  • SQL Server 2005 のインストールでノイズ ワード ファイルを追加、変更、削除したことがない場合は、システム ストップリストがニーズを満たす必要があります。

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

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

    Use database;   
    ALTER FULLTEXT INDEX ON table  
       SET STOPLIST OFF;  
    GO  
    

    STOPLIST OFF 句は、ストップワード フィルタリングを解除し、ノイズと見なされる単語をフィルターせずにテーブルのデータを集める処理を開始します。

バックアップとインポートされた Full-Text カタログ

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

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

データベースを SQL Server 2014 にアップグレードするときの Full-Text インデックスの移行

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

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

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

SQL Server 2005 Full-Text カタログを SQL Server 2014 に復元する際の考慮事項

フルテキスト データを SQL Server 2005 データベースから SQL Server 2014 にアップグレードする方法の 1 つは、データベースの完全バックアップを SQL Server 2014 に復元することです。

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

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

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

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

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

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

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

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

次の例では、 RESTORE ステートメントの MOVE 句を使用して、 ftdb1という名前の SQL Server 2005 データベースを復元します。 SQL Server 2005 データベース、ログ、カタログ ファイルは、次のように SQL Server 2014 サーバー インスタンスの新しい場所に移動されます。

  • データベース ファイル ftdb1.mdfは、 C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL12.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 2014 にアタッチする

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

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

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

データベースのデタッチとアタッチの詳細については、「 データベースのデタッチとアタッチ (SQL Server)CREATE DATABASE (SQL Server Transact-SQL)sp_attach_dbsp_detach_db (Transact-SQL)」を参照してください。

こちらもご覧ください

フルテキスト検索の概要
検索用のワード ブレーカーとステミング機能の構成と管理
検索用フィルターの構成と管理