フルテキスト カタログ フォルダとファイルを移動、コピー、およびバックアップする方法

文書翻訳 文書翻訳
文書番号: 240867 - 対象製品
この記事は、以前は次の ID で公開されていました: JP240867
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
すべて展開する | すべて折りたたむ

目次

概要

フルテキスト カタログおよびインデックスは、SQL Server データベースには格納されません。フルテキスト カタログおよびインデックスは、Microsoft Search サービスによって管理されている個別のファイルに格納されます。フルテキスト カタログ ファイルは、Microsoft SQL Server の復旧操作では復旧されません。また、Transact SQL ステートメントの BACKUP と RESTORE を使用して、フルテキスト カタログ ファイルのバックアップや復元を行うこともできません。復旧操作または復元操作を行った後に、フルテキスト カタログを個別に再同期する必要があります。フルテキスト カタログ ファイルにアクセスできるのは、Microsoft Windows NT システム管理者と Microsoft Search サービスだけです。

SQL Server データベースを使用してフルテキスト カタログをバックアップできませんが、フルテキスト検索が有効になっている大きなテーブルを持つ運用中のデータベースを使用してフルテキスト カタログをバックアップすることができます。このデータベースを使用すると、これらのフルテキスト カタログとその運用中のテーブルを移動、バックアップ、または復元する必要が生じる場合があります。フルテキスト カタログの作成または再同期の実行にかかる時間は、一般的な保守計画のウィンドウで処理が行われる時間よりも長くなります。この資料では、全カタログの作成を開始せずに、カタログを移動またはコピーするときに使用する別の方法について説明します。この方法を使用することにより、長期間のダウンタイムを回避できます。

この資料では、次に示す制限が伴う場合に、フルテキスト カタログのフォルダとファイルをコピー、移動、およびバックアップまたは復元するいくつかの方法を説明します。
  • 使用している SQL Server のバージョンが同じである必要があります。
  • フルテキスト カタログのフォルダとファイルをローカル ドライブに保存する必要があります。
  • フルテキスト カタログのフォルダとファイルは、元の名前とフォルダ コンテンツを維持する必要があります。
  • サーバー間でフルテキスト カタログを移動またはコピーしたときに、両方のサーバーでフルテキスト検索を有効にしたデータベース ID とテーブル ID が同じである必要があります。
フルテキスト カタログは、フォルダおよびファイルのコレクションとして管理されています。フルテキスト カタログのデフォルトの場所は、以下のとおりです。

Microsoft SQL Server 7.0
\Mssql7\FTDATA

Microsoft SQL Server 2000
既定のインスタンス : Program Files\Microsoft SQL Server\MSSQL\FTDATA
名前付きインスタンス : Program Files\Microsoft SQL Server\MSSQL$instancename\FTDATA

各フルテキスト カタログとその関連ファイルは、次の名前付け規則を使用するフォルダで管理されます。ここで dbid は関連するデータベース ID で、ftcatid はフルテキスト カタログ ID です。

"SQLxxxxx(dbid)yyyyy(ftcatid)"

ftcatid は、関連するデータベース内で一意な値です。

警告 : レジストリ エディタの使い方を誤ると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリ エディタの誤用により発生した問題に関しては、一切責任を負わないものとします。レジストリ エディタは、自己の責任においてご使用ください。

スタンドアロン コンピュータまたはクラスタでフルテキスト カタログをバックアップする

  1. スタンドアロン コンピュータで Microsoft Search サービスを停止します。クラスタ化された SQL Server 構成では、フルテキスト リソースはオンラインのままにします。Microsoft Search サービスを停止すると、述語 CONTAINS か述語 FREETEXT を使用するフルテキスト クエリや、行セット値関数 CONTAINSTABLE または FREETEXTTABLE を使用するフルテキスト クエリをデータベースに対して実行できなくなります。また、フルテキスト検索クエリは機能せず、次のエラー メッセージが表示されます。
    サーバー : メッセージ 7602、レベル 16、状態 1、行 2 フルテキスト サービス (Microsoft Search) は使用できません。システム管理者がこのサービスを起動する必要があります。
  2. Backup Exec などの Microsoft Windows NT ファイル システム バックアップ ユーティリティを使用して、フルテキスト カタログ、フォルダ、およびファイルをバックアップします。フルテキスト カタログのシステム テーブル (sysfulltextcatalogs) は、SQL Server データベースを使用してバックアップされます。
  3. カタログを個別にバックアップする必要がある場合は、以下のレジストリ エントリをバックアップします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]


    [FT_Catalog_Folder] はカタログ フォルダ名 "SQLxxxxx(dbid)yyyyy(ftcatid)" です。
    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。
  4. すべてのカタログをバックアップするには、以下のレジストリ エントリをバックアップします (この操作により、サーバー上にあるすべてのフルテキスト カタログがバックアップされます)。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer


    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。

同じサーバーの同じローカル ドライブまたはパスにフルテキスト カタログを復元する

  1. Microsoft Search サービスを停止します。
  2. フルテキスト検索を有効にしているデータベースを復元またはアタッチします。データベースを復元したら、データベース ID (dbid) がバックアップ時と同じであることを確認します。
    : データベースが sp_attach_db コマンドを使用してアタッチされた場合、exec sp_fulltext_database 'enable' コマンドを実行してデータベースでフルテキストを有効にしてください。
  3. dbid を確認するには、次のコードを実行します。
    Use dbname
    go
    select db_id()
    : カタログを個別に復元するには、手順 4. に従います。すべてのカタログを復元するには、手順 5. に進みます。
  4. 上記のバックアップの指示に基づいてバックアップしたレジストリ エントリを復元します。この手順を実行する前に、レジストリのバックアップを作成することをお勧めします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]


    [FT_Catalog_Folder] はカタログ フォルダ名 "SQLxxxxx(dbid)yyyyy(ftcatid)" です。
    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。
  5. サーバー上にあるすべてのカタログを復元するには、以下のレジストリ エントリを復元します。この手順を実行する前に、レジストリのバックアップを作成することをお勧めします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer


    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。
  6. バックアップ元のデフォルトの場所にバックアップからカタログを復元します。
  7. Microsoft Search サービスを再開します。
  8. Transact-SQL SELECT ステートメントを使用し、WHERE 句で CONTAINS 述語または FREETEXT 述語を使用して、新しいフルテキスト カタログのフォルダとファイルが機能していることを確認します。

SQL Server を実行しているコンピュータのローカル ドライブまたはパス間でフルテキスト カタログを移動またはコピーする

  1. sp_help_fulltext_catalogs 'FT_Catalog_Name' を使用して、フルテキスト カタログの名前とローカル ドライブまたはパスを確認します。後続の手順では、フルテキスト カタログのドライブ文字と完全修飾パスを使用するため、これらの情報をメモします。
  2. Microsoft Search サービスを停止します。データベースまたはカタログが削除されている場合にのみ、手順 3. と 4. を実行します。それ以外の場合は、手順 5. に進みます。
  3. フルテキスト検索を有効にしているデータベースを復元またはアタッチします。データベースを復元したら、データベース ID (dbid) がバックアップ時と同じであることを確認します。

    : データベースが sp_attach_db コマンドを使用してアタッチされた場合、exec sp_fulltext_database 'enable' コマンドを実行してデータベースでフルテキストを有効にしてください。

    dbid を確認するには、次のコードを実行します。
    Use dbname
    go
    select db_id()
  4. 以下のレジストリ エントリを復元します。この手順を実行する前にバックアップを作成することをお勧めします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]


    [FT_Catalog_Folder] はカタログ フォルダ名 "SQLxxxxx(dbid)yyyyy(ftcatid)" です。
    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。
  5. 新しいフルテキスト カタログのローカル ドライブまたはパスを決定します。フルテキスト カタログを新しい場所にコピーします。
  6. システム ストアド プロシージャ sp_configure および RECONFIGURE WITH OVERRIDE を使用してシステム テーブルの更新を許可し、[database_name].dbo.sysfulltextcatalogs パス列を、フルテキスト カタログのデフォルトのフォルダに代わる新しいドライブまたはパス (たとえば、d:\FTData) に更新します。
  7. Windows NT 4.0 リソース キットの regfind ユーティリティを使用して、各フルテキスト カタログのフォルダ (FT_Catalog_Folder) の HKLM レジストリ キーの値 (たとえば、SQL0000500005) を検索して、置き換えます。
    \SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    また、-p パラメータと -r パラメータの両方のレジストリ キーを二重引用符 ("") で囲んでいることを確認してください。次に例を示します。
    -m \\server_2 -p "<Key Name>" <Old_FT_Catalog_Path_and_Folder> -r <New_FT_Catalog_Path_and_Folder>

    注 : <Key Name>、<Old_FT_Catalog_Path_and_Folder>、および <New_FT_Catalog_Path_and_Folder> は適切な値で置き換えてください。
    例 : -m \\server_2 -p "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\sqlserver$SQL2k\SQL0000500005" d:\programme\Microsoft SQL Server\MSSQL$SQL2K\FTDATA\SQL0000500005 -r d:\programme\Microsoft SQL Server\MSSQL$SQL2K\FTDATA\New Location\SQL0000500005

    regfind ユーティリティを使用するための構文の詳細については、DOS コマンド プロンプトで regfind /? と入力してください。
  8. Microsoft Search サービスを再起動します。
  9. Transact-SQL SELECT ステートメントを使用し、WHERE 句で CONTAINS 述語または FREETEXT 述語を使用して、新しいフルテキスト カタログのフォルダとファイルが機能していることを確認します。

SQL Server のインスタンスの間で同じローカル ドライブまたはパスにフルテキスト カタログをコピーする

以下の手順では、SQL Server を実行している 1 台のコンピュータ (server_1) から SQL Server を実行している別のコンピュータ (server_2) にフルテキスト カタログのフォルダとファイルを移動またはコピーする方法を例示します。この資料では、SQL Server がフルテキスト検索をインストールしており、両方のサーバーでデータベース ID およびテーブル ID が同じであることを想定しています。SQL Server のインスタンス間でフルテキスト カタログを正常にコピーするには、データベース ID が同じである必要があります。そのため、server_2 (カタログのコピー先) を server_1 の完全なレプリカ (クローン) にすることをお勧めします。server_1 と server_2 の両方で dbid が同じであることを確認してください。この操作を行うには、両方のサーバーで以下のコマンドを実行します。
Use dbname
go
select db_id()
dbid を交換して、server_2 の正しい dbid を取得するには、sp_detach_db を使用してデータベースをデタッチし、sp_attach_db を使用して正しいデータベースを再度アタッチします。たとえば、TestDB (dbid = 7) と PerfDB (dbid = 8) という 2 つのデータベースを保持している場合、両方のデータベースをデタッチします。次に、PerfDB データベースを再度アタッチして、その後に TestDB データベースを再度アタッチします。この操作により、dbid が交換されます。TestDB の dbid が 8 になり、PerfDB の dbid が 7 になります。利用できる dbid のプールにある番号の一番小さい dbid が最初に使用されます。

注意 : この操作を行うには、データベースをデタッチする前に、両方のデータベースがフルテキスト カタログを保持していないこと、およびフルテキスト検索が有効になっていないことを確認します。フルテキスト カタログを削除して、データベースでフルテキスト検索を無効にする手順については、「詳細」の「クリーンアップ処理」を参照してください。
  1. 両方のサーバーで、フルテキスト検索を有効にしたデータベースの master.dbo.sysdatabases の dbid 値が同じであることを確認します。
  2. 両方のサーバーで、フルテキスト検索を有効にしたテーブルの [database_name].dbo.sysobjects の ID 値が同じであることを確認します。テーブル ID の値を取得する方法の詳細については、SQL Server Books Online の「OBJECT_ID」を参照してください。
  3. sp_help_fulltext_catalogs 'FT_Catalog_Name' を使用して、両方のサーバーでフルテキスト カタログ名およびローカル ドライブまたはパスが同じであることを確認します。
  4. server_1 と server_2 の両方で Microsoft Search サービスを停止します。
  5. server_1 のドライブ文字を server_2 の対応するドライブまたはパスにマップします。
  6. 手順 3. で確認したフルテキスト カタログのフォルダとファイルを、DOS コマンド xcopy を使用して、server_1 から server_2 にコピーします。コピー元にはフルテキスト カタログの完全修飾ドライブ名またはパスおよびフォルダ名を使用し、コピー先にはマップしたフルテキスト カタログのドライブまたはパスおよびフォルダ名を使用します。コピー先フォルダが server_2 に存在しない場合は、xcopy で /I スイッチと /E スイッチを使用して、すべてのコピー先フォルダを作成します。すべてのカタログを復元するには、すべてのカタログ フォルダを server_2 にコピーします。
  7. server_1 で DOS コマンド RMDIR /S /Q [FT_Catalog_drive/path] を使用して、server_1 からフルテキスト カタログ ファイルを削除できます。

    : カタログを個別に復元するには、手順 8. に従います。すべてのカタログを復元するには、手順 9. に進みます。
  8. 上記の指示に基づいてバックアップしたレジストリ エントリを復元します。この手順を実行する前に、レジストリのバックアップを作成することをお勧めします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder] \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer [FT_Catalog_Folder]


    [FT_Catalog_Folder] はカタログ フォルダ名 "SQLxxxxx(dbid)yyyyy(ftcatid)" です。
    SQL Server の名前付きインスタンスの場合、レジストリ エントリは \SQLServer$InstanceName\ です。
  9. サーバー上にあるすべてのカタログを復元するには、以下のレジストリ エントリを復元します。ただし、以下のレジストリ エントリを復元すると、この手順を実行した後に、server_2 上にある既存のカタログがすべて失われます。この手順を実行する前に、レジストリのバックアップを作成することをお勧めします。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    : デフォルトでは、フルテキスト バイナリの場所は次のとおりです。
    SQL Server 7.0 : \Mssql7\FTDATA
    Microsoft SQL Server 2000 既定のインスタンス : \Program Files\Microsoft SQL Server\MSSQL\FTDATA
    SQL Server 2000 名前付きインスタンス : MSSQL$InstanceName\FTDATA
    これらの場所は、コンピュータによって異なることがあります。この場所が異なる場合は、2 つのレジストリ エントリを変更して、server_2 で復元操作が完了した後に、パスがフルテキスト バイナリの正しい場所を指すようにする必要があります。
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    regfindutility ユーティリティを使用すると、レジストリ エントリを検出し、フルテキスト バイナリの場所を変更できます。
  10. 両方のサーバーで Microsoft Search サービスを再開します。
  11. Transact-SQL SELECT ステートメントを使用し、WHERE 句で CONTAINS 述語または FREETEXT 述語を使用して、新しいフルテキスト カタログのフォルダとファイルが機能していることを確認します。

詳細

次の SQL Server スクリプトは、SQL Server 7.0 (server_1) から SQL Server 7.0 を実行している別のコンピュータ (server_2) の別のローカル ドライブまたはパスにフルテキスト カタログのフォルダを移動 ("移行") する方法を例示します。この資料では、Windows NT 4.0 ベースのコンピュータに SQL Server 7.0 と共にフルテキスト検索がインストールされており、両方のサーバーでデータベース ID とテーブル ID が同じであることを想定しています。

この方法の説明を行うために、両方のサーバーで、Pubs データベース (dbid = 5) および pub_info テーブル (id = 645577338) のフルテキスト検索を有効にし、フルテキスト カタログを作成します。このサンプルが正常に実行されるようにするには、server_2 を実際に使用しているサーバー名に変更し、フルテキスト カタログのフォルダ名とドライブまたはパスを実際のフルテキスト カタログのフォルダ名とドライブまたはパスに変更します。

サーバーのローカルの Administrators グループのメンバとしてログオンし、かつ SQL Server sysadmin サーバー ロールのメンバである必要があります (または "sa" としてログオンします)。また、次の SQL Server スクリプトを実行する対象となるデータベースのデータベース所有者 (DBO) である必要があります。

両方のサーバーで次の SQL Server スクリプトを実行します。
use pubs
go
sp_fulltext_service 'clean_up'
go
sp_fulltext_database 'enable'
go

-- Creates and activates the full-text catalog: PubInfo, if it does not exist.
-- Drops, re-creates and activates the full-text catalog: PubInfo, if it does
-- exist.
IF OBJECTPROPERTY ( object_id('pub_info'),
                    'TableHasActiveFulltextIndex') = 1
BEGIN
    print 'Table pub_info is Full-Text Enabled, dropping Full-Text Index
& Catalog...'
    EXEC sp_fulltext_table 'pub_info', 'drop'
    EXEC sp_fulltext_catalog 'PubInfo', 'drop'
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
ELSE IF OBJECTPROPERTY ( object_id('pub_info'),'TableHasActiveFulltextIndex') = 0
BEGIN
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog,
Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
go -- Confirm Database ID, Object ID, FT Catalog ID and FT folder(default)
   -- location.
select dbid, name from master.dbo.sysdatabases where dbid = DB_ID('pubs')
-- dbid = 5
go
select id, name from pubs.dbo.sysobjects where id = object_id('pub_info') 
go
sp_help_fulltext_catalogs 'PubInfo' 
go
sp_help_fulltext_tables 'PubInfo', 'pub_info' 
go
sp_help_fulltext_columns 'pub_info' 
go
exec master..xp_cmdshell 'dir d:\MSSQL70\FTDATA'
go

--- After full-text is enabled and activated, start full crawl/population
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'start_full'
--
--  Wait for crawl to complete
--  NOTE: Forlarger tables, increase the WAITFOR DELAY time appropriately
--
DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount)
- 1) as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = '
+  CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go

-- Stop the Microsoft Search service on both servers
exec master..xp_cmdshell 'net stop "Microsoft Search"'
go
移動元のサーバー (server_1) で次の SQL Server スクリプトを実行します。
use pubs
go
-- Map a Drive letter to the destination server.
exec master..xp_cmdshell 'NET USE K: \\server_2\[drive]$'
go
-- Copy the destination server's FT catalog folder and files as a backup.
exec master..xp_cmdshell 'ROBOCOPY K:\MSSQL70\FTDATA\SQL0000500005
K:\MSSQL70\BACKUP\SQL0000500005 /E /NP'
go
-- Remove the destination server's full-text catalog folder and files.
exec master..xp_cmdshell 'RMDIR /S /Q K:\MSSQL70\FTDATA\SQL0000500005'
go
-- Copy the SOURCE full-text catalog folder and files to the destination server's
NEW full-text catalog location.
exec master..xp_cmdshell 'ROBOCOPY D:\MSSQL70\FTDATA\SQL0000500005
K:\FTData\SQL0000500005 /E /NP'
go
-- Restart the Microsoft Search service.
exec master..xp_cmdshell 'net start "Microsoft Search"'
go
-- Remove the mapped drive letter to the destination server, for example
-- K:\.
exec master..xp_cmdshell 'NET USE K: /delete'
go
移動先サーバー (server_2) で次の SQL スクリプトを実行する必要があります。
use master
go
-- Enable system table updates.
sp_configure allow,1
go
reconfigure with override
go

use pubs
go
-- Record full-text catalog information (Note: path = NULL)
select * from sysfulltextcatalogs
go
-- Update the full-text catalog information with the new full-text catalog location
UPDATE sysfulltextcatalogs set path = 'E:\FTData'
   WHERE ftcatid = 5
go
-- Record full-text catalog info. (Note: path = E:\FTData)
select * from sysfulltextcatalogs
go

use master
go
-- Disable system table updates.
sp_configure allow,0
go
reconfigure with override
go

-- CAUTION: Back up your registry hive before you contine!

-- Search and replace HKLM "Gather" registry keys with new full-text catalog
-- folder location [10 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\SQL0000500005
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM "Gatherer Manager" registry keys with new FT
-- catalog folder location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gathering
Manager\Applications\SQLServer\Projects\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and replace HKLM indexer registry keys with new FT catalog folder
-- location [6 row(s) affected]:
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p
"\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\SQL0000500005"
"E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go

-- Restart the Microsoft Search service
exec master..xp_cmdshell 'net start "Microsoft Search"'
go

-- Confirm FT population, 1 row should be returned (pub_id = 0736). 
use pubs
go
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go
次の SQL Server コードを実行して、実行中のフルテキストの作成を中止できます。

注意 : アイテム数が、フルテキスト インデックスが作成した行数に 1 を加算した数に等しくない場合、フルテキスト カタログのサイズが正しくない可能性があります。
-- Run the following code after starting full crawl/population through another connection.
use pubs
go
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'stop'

-- Wait for crawl to stop

--  NOTE: For larger tables, increase the WAITFOR DELAY time appropriately

DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT
                           -- Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to receive correct FT Property
                         -- info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount) - 1)
as varchar(12)) + char(09) + 'Nbr. of Unique FT Words = ' +
CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go
-- Can return: Nbr. of Rows FT Indexed = -1 Nbr. of Unique FT Words = 0 
-- (depending upon when the crawl/population stopped)
クリーンアップ処理

両方のサーバーで次の SQL Server スクリプトを実行します。

フルテキスト インデックス、フルテキスト カタログが削除され、pubs データベースでフルテキスト検索が無効になります。
use pubs
go
sp_fulltext_table 'pub_info', 'drop'
go
sp_fulltext_catalog 'PubInfo', 'drop'
go
sp_fulltext_database 'disable'
go
sp_fulltext_service 'clean_up'
go
-- end SQL Script !

関連情報

データベースの dbid を入手する方法の詳細については、SQL Server Books Online の「DB_ID」トピックを参照してください。

データベースでフルテキスト検索が有効になっているかどうかを判断するには、SQL Server Books Online のトピック「DATABASEPROPERTY」または「IsFulltextEnabled Property」トピックを参照してください。

ftcatid の詳細については、SQL Server Books Online のトピック「sp_help_fulltext_catalogs」、「OBJECTPROPERTY」、または「TableFulltextCatalogId」を参照してください。

プロパティ

文書番号: 240867 - 最終更新日: 2007年11月30日 - リビジョン: 5.5
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition?を以下の環境でお使いの場合
    • Microsoft SQL Server 2000 Developer Edition
    • Microsoft SQL Server 2000 Standard Edition
    • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
  • Microsoft SQL Server 7.0 Standard Edition
キーワード:?
kbinfo KB240867
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com