次の方法で共有


フルテキスト検索のアップグレード

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

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

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

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

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

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

注意

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

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

注意

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

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

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

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

注意

再構築はマルチスレッド モードで実行できます。10 を超える CPU が使用可能な場合に、再構築でそれらの CPU をすべて使用できるようにすると、再構築の方がインポートよりも高速に実行されることがあります。

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

フルテキスト インデックスのインポートによる影響については、後の「フルテキスト アップグレード オプションの選択に関する注意点」を参照してください。

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

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

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

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

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

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

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

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

    注意

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

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

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

SQL Server 2005 フルテキスト インデックスのインポート後にクエリ結果の一貫性を確保する

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

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

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

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

ノイズ ワード ファイルからストップリストへのアップグレード

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

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

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

  • noise-word ファイルが 2005 年SQL Server変更された場合、アップグレード中にこれらの変更は失われます。 これらの更新プログラムを再作成するには、対応する 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 句は、ストップワードのフィルター処理を削除し、テーブル作成のトリガーとなります。このとき、ノイズと見なされたワードはフィルター処理されません。

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

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

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

データベースを SQL Server 2014 にアップグレードする際のフルテキスト インデックスの移行

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

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

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

SQL Server 2005 のフルテキスト カタログを 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-name が のcat1場合、SQL Server 2014 データベース ファイルの既定の名前は になりますftrow_cat1.ndf。 ただし、作成先のディレクトリでこの既定の名前が既に使用されている場合は、新しいデータベース ファイルの名前は ftrow_catalog-name{GUID}.ndfとなります。 GUID は、新しいファイルのグローバル一意識別子です。

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

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

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

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

  • データベース ファイル ftdb1.mdfC:\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 からデタッチされたときと同じです。 デタッチ操作によってフルテキスト インデックスの作成が中断された場合、2014 年SQL Serverに作成が再開され、フルテキスト インデックスがフルテキスト検索で使用できるようになります。

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

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

参照

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