วิธีการย้าย การคัดลอก และสำรองแฟ้มและโฟลเดอร์ของแค็ตตาล็อกของข้อความ

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 240867 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

แค็ตตาล็อกของข้อความและดัชนีไม่เก็บไว้ใน SQL แบบฐานข้อมูลของเซิร์ฟเวอร์ แค็ตตาล็อกของข้อความและดัชนีถูกเก็บไว้ในแฟ้มที่แยกต่างหากที่จัดการกับบริการการค้นหาของ Microsoft ไม่มีการกู้คืนแฟ้มแค็ตตาล็อกของข้อความระหว่างการกู้คืนข้อมูลของ Microsoft SQL Server นอกจากนี้ คุณไม่สามารถใช้คำสั่ง Transact SQL ทำสำรองและคืนค่า การสำรอง และ การกู้คืนแบบเต็มหน่วยการจัดแค็ตตาล็อกแฟ้มได้ หลังจากการดำเนินการกู้คืนข้อมูลหรือคืนค่า คุณต้อง resynchronize แค็ตตาล็อกของข้อความแยกต่างหาก เฉพาะ Microsoft Windows NT ผู้ดูแลระบบและบริการการค้นหาของ Microsoft สามารถเข้าถึงแฟ้มแค็ตตาล็อกของข้อความได้

แม้ว่าคุณไม่สามารถใช้ฐานข้อมูล SQL Server เพื่อแบ็คอัปแค็ตตาล็อกของข้อความ คุณสามารถใช้ฐานข้อมูลที่ มีตารางที่มีขนาดใหญ่ที่มีข้อความค้นหาเปิดใช้งานการผลิต ถ้าคุณทำเช่นนั้น คุณอาจจำเป็นต้องย้าย สำรองข้อมูล หรือคืนค่าแค็ตตาล็อกข้อความเหล่านี้และฐานข้อมูลการผลิต เวลาที่ใช้สำหรับแค็ตตาล็อกของข้อความแบบเต็มประชากรหรือ resynchronization อาจยาวเกินกว่าหน้าต่างการบำรุงรักษาทั่วไป บทความนี้อธิบายวิธีการต่าง ๆ ที่คุณสามารถใช้ การย้าย หรือคัดลอกแค็ตตาล็อก โดยไม่มีการเริ่มต้นเป็นประชากรทั้งหมด วิธีนี้ avoids downtime ที่สำคัญ

บทความนี้เอกสารหลายวิธีที่คุณสามารถใช้เพื่อคัดลอก ย้าย และสำรอง หรือคืนค่าโฟลเดอร์แค็ตตาล็อกของข้อความและแฟ้มที่มีข้อจำกัดบาง:
  • รุ่นของ SQL Server ที่คุณกำลังใช้อยู่เดียวกัน
  • แค็ตตาล็อกของข้อความแบบเต็มโฟลเดอร์และแฟ้มต้องอยู่บนไดรฟ์ในเครื่อง
  • แค็ตตาล็อกของข้อความแบบเต็มโฟลเดอร์และแฟ้มต้องคงชื่อเดิมของตนและเนื้อหาของโฟลเดอร์
  • รหัสข้อความในการเปิดใช้งานฐานข้อมูลและตารางรหัสต้องเหมือนกันในเซิร์ฟเวอร์ทั้งเมื่อคุณย้าย หรือคัดลอกแค็ตตาล็อกของข้อความระหว่างเซิร์ฟเวอร์
คำเตือนขั้นตอนเหล่านี้ไม่ได้รับการสนับสนุนบนอินสแตนซ์ของคลัสเตอร์ Failover ของเซิร์ฟเวอร์ SQL

แค็ตตาล็อกของข้อความจะยังคงเป็นคอลเลกชันของแฟ้มและโฟลเดอร์ ตำแหน่งที่ตั้งเริ่มต้นของแค็ตตาล็อกของข้อความที่มี:

Microsoft SQL Server 7.0:
\Mssql7\FTDATA

Microsoft SQL Server 2000:
อินสแตนซ์เริ่มต้น: SQL Files\Microsoft โปรแกรม Server\MSSQL\FTDATA
ชื่ออินสแตนซ์: SQL Files\Microsoft โปรแกรม instancename\FTDATA $ Server\MSSQL

แค็ตตาล็อกของแต่ละข้อความและแฟ้มการเชื่อมโยงถูกรักษาไว้ภายใต้โฟลเดอร์ที่ใช้ในแผนการตั้งชื่อต่อไปนี้ที่ใดdbidเป็นรหัสฐานข้อมูลที่เกี่ยวข้อง และตำแหน่งftcatidมีรหัสของแค็ตตาล็อกของข้อความ:

"SQLxxxxx (dbid) yyyyy (ftcatid)"

แต่ละftcatidคุณไม่ซ้ำกันในฐานข้อมูลที่เกี่ยวข้อง

สิ่งสำคัญนี้ส่วน วิธี หรืองานประกอบด้วยขั้นตอนที่บอกวิธีการแก้ไขรีจิสทรี อย่างไรก็ตาม ปัญหาร้ายแรงอาจเกิดขึ้นหากคุณปรับเปลี่ยนรีจิสทรีไม่ถูกต้อง ดังนั้น โปรดตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนเหล่านี้อย่างระมัดระวัง สำหรับการป้องกันเพิ่มเติม ให้สำรองรีจิสทรีก่อนทำการปรับเปลี่ยน เพื่อที่คุณจะสามารถคืนค่ารีจิสทรีได้หากมีปัญหาเกิดขึ้น สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสำรองข้อมูลและคืนค่ารีจิสทรี โปรดคลิกที่หมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
322756วิธีการสำรองข้อมูลและคืนค่ารีจิสทรีใน Windows

เมื่อต้องการสำรองข้อมูลแค็ตตาล็อกของข้อความบนคอมพิวเตอร์แบบสแตนด์อโลนหรือคลัสเตอร์

  1. หยุดบริการการค้นหาของ Microsoft บนคอมพิวเตอร์แบบสแตนด์อโลน สำหรับการจัดโครงแบบคลัสเตอร์ SQL Server แบบ ปล่อยทรัพยากรแบบเต็มแบบออนไลน์ หลังจากที่คุณสามารถหยุดบริการการค้นหาของ Microsoft คุณไม่สามารถรันการสอบถามแบบเต็มซึ่งใช้ predicates CONTAINS หรือ FREETEXT หรือ rowset valued ฟังก์ชัน CONTAINSTABLE หรือ FREETEXTTABLE กับฐานข้อมูลได้ นอกจากนี้ ไม่มีทำแบบสอบถามการค้นหาแบบเต็ม และคุณได้รับข้อความแสดงข้อความแสดงข้อผิดพลาดต่อไปนี้:
    เซิร์ฟเวอร์: ข่าวสารเกี่ยวกับ 7602 ระดับ 16 สถานะ 1 บรรทัด 2 The ข้อความเต็ม Service (ค้นหา Microsoft) ไม่พร้อมใช้งาน The system administrator must start this service.
  2. Use a Microsoft Windows NT file system backup utility, such as Backup Exec, and then back up the full-text catalogs, folders, and files.The system table for full-text catalogs (sysfulltextcatalogs) is backed up with the SQL Server database.
  3. Back up the following registry entries if you must back up the catalogs individually:
    \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] is the catalog folder name "SQLxxxxx(dbid)yyyyy(ftcatid)"
    For a named instance of SQL Server, the registry entry is \SQLServer$InstanceName\.
  4. 2. Back up the following registry entries to back up all the catalogs: (This backs up all full-text catalogs on the server.)
    \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
    For a named instance of SQL Server, the registry entry is \SQLServer$InstanceName\.

To restore full-text catalogs on the same server to the same local drive or path

  1. Stop the Microsoft Search service.หมายเหตุ:Perform step 2 only if the database was dropped. Otherwise, go to step 3.
  2. Restore or attach the database where you enabled full-text. After you restore the database, make sure the database ID (dbid) is the same as it was when you backed it up.
    หมายเหตุ:If the database was attached by using thesp_attach_dbcommand, make sure that you run theexec sp_fulltext_database'enable' command to enable the database for full-text.
  3. To determine the dbid, run the following code:
    Use dbname
    go
    select db_id()
    หมายเหตุ:To restore individual catalogs, follow step 4. To restore all catalogs, go to step 5.
  4. Restore the registry entries that you backed up based on the earlier backup instructions. You may want to back up your registry before you try this step.
    \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] is the catalog folder name "SQLxxxxx(dbid)yyyyy(ftcatid)"
    For a named instance of SQL Server, the registry entry is \SQLServer$InstanceName\.
  5. To restore all catalogs on the server, restore the following registry entries. You may want to back up your registry before you try this step.
    \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
    For a named instance of SQL Server, the registry entry is \SQLServer$InstanceName\.
  6. Restore the catalogs from backup to the default location that you backed it up from.
  7. Restart the Microsoft Search service.
  8. Confirm that the new full-text catalogs folders and files are functional by using a Transact-SQL SELECT statement and use a CONTAINS or FREETEXT predicate in the WHERE clause.

To move or copy full-text catalogs between local drives or paths on the same computer that is running SQL Server

  1. Confirm the full-text catalog name and local drive or path by using sp_help_fulltext_catalogs 'FT_Catalog_Name'. Record the full-text catalog drive letter and fully qualified path to use later.
  2. Stop the Microsoft Search service. Perform step 3 and 4 only if the database was dropped or if the catalog was deleted, otherwise, go to step 5.
  3. คืนค่า หรือแนบฐานข้อมูลที่คุณเปิดใช้งานแบบเต็ม หลังจากที่คุณคืนค่าฐานข้อมูล ตรวจสอบให้แน่ใจว่า รหัสฐานข้อมูล (dbid) เดียวกัน ตามที่ได้เมื่อคุณสำรองไว้

    หมายเหตุ:ถ้ามีแนบฐานข้อมูล โดยใช้การsp_attach_dbคำสั่ง การตรวจสอบให้แน่ใจว่า คุณทำการexec sp_fulltext_databaseเปิดการใช้ 'งาน' คำสั่งที่เปิดใช้งานฐานข้อมูลสำหรับข้อความ

    การตรวจสอบการ dbid เรียกใช้รหัสดังต่อไปนี้:
    Use dbname
    go
    select db_id()
  4. คืนค่ารายการรีจิสทรีต่อไปนี้ คุณอาจต้องการสำรองข้อมูลรีจิสทรีของคุณก่อนที่คุณลองขั้นตอนนี้
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\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\Gather\SQLServer\[FT_Catalog_Folder \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer\[FT_Catalog_Folder \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Applications\SQLServer\Catalogs\[FT_Catalog_Folder]]]]
    [FT_Catalog_Folder อยู่ในแค็ตตาล็อกโฟลเดอร์ชื่อ "SQLxxxxx (dbid) yyyyy (ftcatid)"
    สำหรับอินสแตนซ์ที่มีชื่อของ SQL Server รายการรีจิสทรีคือ \SQLServer$InstanceName\.
  5. ตรวจสอบไดรฟ์ภายในแค็ตตาล็อกของข้อความใหม่หรือเส้นทาง การคัดลอกแค็ตตาล็อกของข้อความไปยังตำแหน่งใหม่
  6. อนุญาตให้ระบบปรับปรุงตาราง โดยใช้ขั้นตอนของระบบที่เก็บไว้sp_configureกำหนดค่าใหม่ ด้วยการแทน และจากนั้น ปรับปรุงนี้[database_name] dbo.sysfulltextcatalogsเส้นทางปลายใหม่ภายในไดรฟ์หรือเส้นทางสำหรับแค็ตตาล็อกของข้อความแบบเต็มโฟลเดอร์เริ่มต้น เช่น d:\FTData คอลัมน์
  7. ใช้ Kit ทรัพยากรของ Windows NT 4.0regfindโปรแกรมอรรถประโยชน์การค้นหา และแทนต่อไปนี้ HKLM ค่ารีจิสทรีคีย์สำหรับแต่ละข้อความเต็มแค็ตตาล็อกโฟลเดอร์ (FT_Catalog_Folder) (ตัวอย่าง SQL0000500005):
    \SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder \SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\ [FT_Catalog_Folder \SOFTWARE\Microsoft\Search\1.0\Gather\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>มีค่าที่เหมาะสม</new_ft_catalog_path_and_folder></old_ft_catalog_path_and_folder> </key>
    ตัวอย่าง::-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
  9. ยืนยันการใหม่แบบเต็ม catalogs โฟลเดอร์ และแฟ้มที่กำลังทำงาน โดยใช้คำสั่งที่ Transact-SQL SELECT และใช้ predicate CONTAINS หรือ FREETEXT อนุประโยคของตำแหน่ง

เมื่อต้องการคัดลอกแค็ตตาล็อกของข้อความระหว่างอินสแตนซ์ของ SQL Server ไปยังไดรฟ์ภายในที่เดียวกันหรือเส้นทาง

The following steps demonstrate how to move or copy a full-text catalog folder and files from one computer that is running SQL Server (server_1) to another computer that is running SQL Server (server_2). This article assumes that SQL Server has full-text search installed and that the same database and table identifiers exist on both servers. For the successful copy of full-text catalogs from one instance of SQL Server to another, the database IDs must be the same. Therefore, it is best to have server_2 (to which you are copying the catalog) be an exact replica (clone) of the server_1.Confirm that the dbids on both server_1 and server_2 are the same. To do so, run the following commands on both servers:
Use dbname
go
select db_id()
To "swap" dbids to obtain the correct dbid on server_2, usesp_detach_dbและsp_attach_dbto detach and to re-attach the correct databases. For example, if you have two databases, such asTestDB(dbid = 7) andPerfDB(dbid = 8), detach both databases, and thenfirstre-attach thePerfDBdatabase, and then theTestDBdatabase. This swaps the dbids: The dbid forTestDBbecomes 8 and the dbid forPerfDBbecomes 7. The lowest dbid in the pool of available dbids is always used first.

ข้อควรระวังTo do this,ก่อนyou detach the databases, make sure that both databases do not have any full-text catalogs and that they are not full-text enabled. See "Clean-up Procedures" in the “More Information” section for steps to drop full-text catalogs and to disable full-text for a database.
  1. ยืนยันที่นั้นmaster.dbo.sysdatabasesdbid values for the full-text enabled databases are the same on both servers.
  2. ยืนยันที่นั้น[database_name].dbo.sysobjectsID values for the full-text enabled tables are the same on both servers. For more information about how to obtain a table ID value, see the "object_id" topic in SQL Server Books.
  3. Confirm that the full-text catalog name and local drive or path are the same on both servers by usingsp_help_fulltext_catalogs 'FT_Catalog_Name'.
  4. Stop the Microsoft Search service on both server_1 and server_2.
  5. Map a drive letter on server_1 to the corresponding drive or path on server_2.
  6. Copy the full-text catalog folder and files that you identified in step 3 from server_1 to server_2 by using the DOS commandxcopy. Use the fully qualified full-text catalog drive or path and folder name as the source location and the mapped full-text catalog drive or path and folder name as the destination location. If the destination folders do not exist on server_2, use thexcopyswitches/Iและ/Eto create all destination folders. To restore all catalogs, copy all catalog folders to server_2.
  7. You can use the DOS commandRMDIR /S /Q [FT_Catalog_drive/path]on server_1 to remove the full-text catalog files on server_1.

    หมายเหตุ:To restore individual catalogs, follow step 8. To restore all catalogs, go to step 9.
  8. Restore the registry entries that you backed up based on earlier instructions. You may want to back up your registry before you try this step.
    \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] is the catalog folder name "SQLxxxxx(dbid) yyyyy (ftcatid)"
    For a named instance of SQL Server, the registry entry is \SQLServer$InstanceName\.
  9. To restore all catalogs on the server, restore the following registry entries. However, if you do so, you lose all existing catalogs on server_2 after you perform this step. You may want to back up your registry before you try this step.
    \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
    หมายเหตุ:By default, the locations of full-text binaries are:
    sql Server 7.0: \Mssql7\FTDATA
    Microsoft. SQL Server 2000 default instance: \Program Files\Microsoft SQL Server\MSSQL\FTDATA
    SQL Server 2000 named instance: MSSQL$InstanceName\FTDATA
    These locations and folder paths may vary for different computers. In this case, you must change two registry entries so the paths point to the correct location of the full-text binaries after you complete the restore on server_2.
    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\CatalogNames\SQLServer \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer
    คุณสามารถใช้ได้regfindโปรแกรมอรรถประโยชน์การค้นหารายการรีจิสทรี และเปลี่ยนตำแหน่งที่ตั้งของไบนารีแบบเต็ม
  10. เริ่มต้นบริการการค้นหาของ Microsoft ที่อยู่บนเซิร์ฟเวอร์ทั้งสอง
  11. ยืนยันการใหม่แบบเต็ม catalogs โฟลเดอร์ และแฟ้มที่กำลังทำงาน โดยใช้คำสั่งที่ Transact-SQL SELECT และใช้ predicate CONTAINS หรือ FREETEXT อนุประโยคของตำแหน่ง

ข้อมูลเพิ่มเติม

สคริปต์ SQL Server ต่อไปนี้อธิบายวิธีการย้าย หรือ "โยกย้าย" โฟลเดอร์แค็ตตาล็อกของข้อความจาก SQL Server 7.0 (server_1) ไปยังคอมพิวเตอร์เครื่องอื่นที่กำลังเรียกใช้ SQL Server 7.0 (server_2) ไปยังไดรฟ์ภายในเครื่องอื่นหรือเส้นทางของตำแหน่งที่ตั้งบน server_2 บทความนี้อนุมานว่า มีการติดตั้ง SQL Server 7.0 ด้วยการค้นหาแบบเต็มบนคอมพิวเตอร์ที่ใช้ Windows NT 4.0 และให้ระบุฐานข้อมูลและตารางที่เหมือนกันที่มีอยู่บนเซิร์ฟเวอร์ทั้งสอง

สำหรับวัตถุประสงค์ของภาพประกอบนี้pubs(dbid = 5) ฐานข้อมูลและตารางpub_info(id = 645577338) เป็นข้อความเปิดใช้งาน และบรรจุบนเซิร์ฟเวอร์ทั้งสอง Replace server_2 with your server name and replace the full-text catalog folder name and drive or path with your full-text catalog folder name and drive or path.

You must log on as a member of the server's local Administrators group and be a member of the SQL Serversysadminserver role (or log on as "sa"). Additionally, you must be the database owner (DBO) of the database to run the following SQL Server scripts.

Run the following SQL Server script on both servers:
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
Run the following SQL Server script on the SOURCE server (server_1):
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
You must run the following SQL script on theปลายทางserver (server_2):
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
You can "stop" a full-text population in progress by running the following SQL Server code:

ข้อควรระวังIf the item count is not equal to the number of rows that full-text indexed plus one additional, the full-text catalog size may be be incorrect!
-- 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)
Clean-up procedures

Run the following SQL script on both servers:

Drop the full-text index, full-text catalog, and then disable full-text search in thepubsdatabase:
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 !

อ้างอิง:

For more information about how to obtain the dbid for a database, see the "DB_ID" topic in SQL Server Books Online.

เพื่อดูว่า ฐานข้อมูล ข้อความเปิดใช้งาน ให้ดูที่หัวข้อ "DATABASEPROPERTY" หรือ "IsFulltextEnabled" ใน SQL Server หนังสือออนไลน์

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ftcatid, "sp_help_fulltext_catalogs", "OBJECTPROPERTY" หรือ "TableFulltextCatalogId" หัวข้อใน SQL Server หนังสือออนไลน์

คุณสมบัติ

หมายเลขบทความ (Article ID): 240867 - รีวิวครั้งสุดท้าย: 8 มกราคม 2554 - Revision: 4.0
ใช้กับ
  • Microsoft SQL Server 2000 Standard Edition เมื่อใช้กับ:
    • Microsoft SQL Server 2000 Developer Edition
    • Microsoft SQL Server 2000 Enterprise Edition
Keywords: 
kbinfo kbmt KB240867 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:240867

ให้ข้อเสนอแนะ

 

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