sp_fulltext_catalog (Transact-SQL)

建立和卸除全文檢索目錄,以及啟動和停止目錄的索引動作。每個資料庫都可以建立多個全文檢索目錄。

ms189801.note(zh-tw,SQL.90).gif重要事項:
未來的 SQL Server 版本將移除 sp_fulltext_catalog 預存程序。請避免在新的開發工作中使用這個預存程序,對於目前在使用這個預存程序的應用程式,請規劃修改它們。請改用新的全文檢索資料定義語言 (DDL) 陳述式。如需詳細資訊,請參閱 CREATE、ALTER、DROP FULLTEXT CATALOG 等主題。

主題連結圖示Transact-SQL 語法慣例

語法

sp_fulltext_catalog [ @ftcat= ] 'fulltext_catalog_name' , 
     [ @action= ] 'action' 
     [ , [ @path= ] 'root_directory' ] 

引數

  • [ @ftcat=] 'fulltext_catalog_name'
    這是全文檢索目錄的名稱。每個資料庫的目錄名稱都必須是唯一的。fulltext_catalog_namesysname
  • [ @action=] 'action'
    這是要執行的動作。actionvarchar(20),它可以是下列值之一。

    ms189801.note(zh-tw,SQL.90).gif附註:
    您可以依照需要來建立、卸除和修改全文檢索目錄。不過,請避免同時變更多個目錄的結構描述。您可以利用 sp_fulltext_table 預存程序來執行這些動作,這是建議採行的方式。
    描述

    Create

    在檔案系統中建立一個新的空白全文檢索目錄,在含有 fulltext_catalog_nameroot_directory 值 (如果有的話) 的 sysfulltextcatalogs 中加入相關聯的資料列。在資料庫內,fulltext_catalog_name 必須是唯一的。

    Drop

    從檔案系統中移除 fulltext_catalog_name 來卸除它,再刪除 sysfulltextcatalogs 中相關聯的資料列。如果這個目錄包含一或多個資料表的索引,這個動作便會失敗。您應該執行 sp_fulltext_table 'table_name', 'drop' 來卸除目錄中的資料表。

    如果目錄不存在,就會出現錯誤。

    start_incremental

    啟動 fulltext_catalog_name 的累加擴展。如果目錄不存在,就會出現錯誤。如果已在使用全文檢索索引的擴展,便會顯示一則警告,但不會進行任何擴展動作。當執行累加擴展時,如果建立全文檢索索引的資料表中有 timestamp 資料行,便只會擷取全文檢索索引變更過的資料列。

    start_full

    啟動 fulltext_catalog_name 的完整擴展。此時會擷取全文檢索索引的這份全文檢索目錄所關聯的每份資料表的每個資料列,即使它們已建立索引也一樣。

    Stop

    停止 fulltext_catalog_name 的索引擴展。如果目錄不存在,就會出現錯誤。如果擴展已停止,便不會顯示任何警告。

    Rebuild

    重建 fulltext_catalog_name,先從檔案系統中刪除現有的全文檢索目錄,再重建全文檢索目錄,再將全文檢索目錄關聯於含有全文檢索索引參考的所有資料表。

    重建並不會變更資料庫系統資料表中的任何全文檢索中繼資料,也不會重新擴展新建的全文檢索目錄。若要重新擴展,您必須利用 start_fullstart_incremental 動作來執行 sp_fulltext_catalog

  • [ @path=] 'root_directory'
    這是 create 動作的根目錄 (不是完整的實體路徑)。root_directorynvarchar(100),預設值是 NULL,表示使用安裝時所指定的預設位置。這個 Mssql 目錄中的 Ftdata 子目錄;如 C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData。指定的根目錄必須在相同電腦的磁碟機中,它不只是磁碟機代號,也不能是相對路徑。網路磁碟機、抽取式磁碟機、磁碟片及 UNC 路徑都不在支援範圍內。全文檢索目錄必須建立在 SQL Server 執行個體所關聯的本機硬碟中。

    只有在 actioncreate 時,@path 才有效。如果是 create 以外的動作 (stoprebuild 等),@path 就必須是 NULL,或加以省略。

    如果 SQL Server 的執行個體是叢集中的虛擬伺服器,指定的全文檢索目錄之目錄就必須在 SQL Server 資源所依賴的共用硬碟中。如果未指定 @path,預設的全文檢索目錄之目錄的位置就在共用硬碟,在安裝虛擬伺服器時所指定的目錄中。

傳回碼值

0 (成功) 或 1 (失敗)

結果集

備註

start_full 動作用來建立在 fulltext_catalog_name 中的完整全文檢索資料快照集。start_incremental 動作用來重建資料庫中已變更過之資料列的索引。資料表必須有 timestamp 類型的資料行,累加擴展才適用。如果全文檢索目錄中的資料表並未包含 timestamp 類型的資料行,資料表就會進行完整擴展。

全文檢索目錄和索引資料儲存在全文檢索目錄之目錄下所建立的檔案中。全文檢索目錄之目錄會建立成 @path 所指定之目錄的子目錄,如果未指定 @path 的話,便建立在伺服器預設的全文檢索目錄之目錄中。全文檢索目錄之目錄名稱的建立方式,必須確保它在伺服器中是唯一的。因此,伺服器中所有全文檢索目錄之目錄都可以共用相同的路徑。

權限

呼叫者必須是 db_owner 角色的成員。隨著所要求的動作而不同,在目標全文檢索目錄上,呼叫者不應被拒絕 ALTER 或 CONTROL 權限 (db_owner 所擁有的權限)。

範例

A. 建立全文檢索目錄

這個範例會在 AdventureWorks 資料庫中,建立一個空白全文檢索目錄 Cat_Desc

USE AdventureWorks;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'create';
GO

B. 重建全文檢索目錄

這個範例會在 AdventureWorks 資料庫中,重建現有的全文檢索目錄 Cat_Desc

USE AdventureWorks;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'rebuild';
GO

C. 開始擴展全文檢索目錄

這個範例會開始進行 Cat_Desc 目錄的完整擴展。

USE AdventureWorks;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'start_full';
GO

D. 停止擴展全文檢索目錄

這個範例會停止擴展 Cat_Desc 目錄。

USE AdventureWorks;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'stop';
GO

E. 移除全文檢索目錄

這個範例會移除 Cat_Desc 目錄。

USE AdventureWorks;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'drop';
GO

請參閱

參考

FULLTEXTCATALOGPROPERTY (Transact-SQL)
sp_fulltext_database (Transact-SQL)
sp_help_fulltext_catalogs (Transact-SQL)
sp_help_fulltext_catalogs_cursor (Transact-SQL)
系統預存程序 (Transact-SQL)

其他資源

全文檢索搜尋

說明及資訊

取得 SQL Server 2005 協助