sp_fulltext_catalog (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

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

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 CREATE FULLTEXT CATALOG、ALTER FULLTEXT CATALOG 和 DROP FULLTEXT CATALOG

Transact-SQL 語法慣例

語法

sp_fulltext_catalog
    [ @ftcat = ] N'ftcat'
    , [ @action = ] 'action'
    [ , [ @path = ] N'path' ]
[ ; ]

引數

[ @ftcat = ] N'ftcat'

全文檢索目錄的名稱。 目錄名稱對於每個資料庫而言都必須是唯一的。 @ftcat為 sysname,沒有預設值。

[ @action = ] 'action'

要執行的動作。 @action為 varchar(20),而且可以是下列其中一個值。

注意

您可以視需要建立、卸除和修改全文檢索目錄。 不過,請避免同時對多個目錄進行架構變更。 您可以使用預存程式來執行 sp_fulltext_table 這些動作,這是建議的方式。

Description
create 在文件系統中建立空白、新的全文檢索目錄,並在 中新增與 @ftcat 和 @path 相關聯的數據列sysfulltextcatalogs,如果有,則為 值。 @ftcat在資料庫中必須是唯一的。
下降 從文件系統中移除@ftcat,並刪除 中sysfulltextcatalogs相關聯的數據列,以卸除@ftcat。 如果此目錄包含一或多個數據表的索引,此動作就會失敗。 sp_fulltext_table '<table_name>', 'drop' 應該執行 以從目錄卸除數據表。

如果目錄不存在,就會顯示錯誤。
start_incremental 啟動@ftcat累加母體擴展。 如果目錄不存在,就會顯示錯誤。 如果全文檢索索引母體擴展已經作用中,則會顯示警告,但不會發生母體擴展動作。 使用累加母體擴展只會擷取全文檢索索引的數據列,前提是數據表中有一個 時間戳 數據行正在編製全文檢索索引。
start_full 啟動@ftcat的完整母體擴展。 即使已編製索引,也會擷取與這個全文檢索目錄相關聯的每個數據表之每一個數據列進行全文檢索索引。
停止 停止@ftcat的索引母體擴展。 如果目錄不存在,就會顯示錯誤。 如果母體擴展已停止,則不會顯示任何警告。
重建 重建 @ftcat。 重建目錄時,會刪除現有的目錄,並就地建立新的目錄。 具有全文檢索索引參考的所有資料表都會與新目錄產生關聯。 重建會重設資料庫系統資料表中的全文檢索中繼資料。

如果變更追蹤為 OFF,重建不會重新填入新建立的全文檢索目錄。 在此情況下,若要重新填入,請使用start_fullstart_incremental動作執行sp_fulltext_catalog

[ @path = ] N'path'

建立動作的根目錄(不是完整的實體路徑)。 @path為 nvarchar(100),預設值NULL為 ,表示使用安裝程式中指定的預設位置。

這是目錄中的FTDataMSSQL子目錄,C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\FTData例如 。 指定的根目錄必須位於同一部計算機上的磁碟驅動器上,它不只是驅動器號,而且不能是相對路徑。 不支援網路驅動器機、卸載式磁碟機、軟磁碟和 UNC 路徑。 全文檢索目錄必須在與 SQL Server 實例相關聯的本機硬碟上建立。

只有在建立@action時,@path才有效。 對於建立以外的動作停止重建等),@path必須是 NULL 或省略。

如果 SQL Server 實例是叢集中的虛擬伺服器,指定的目錄目錄目錄必須位於 SQL Server 資源相依的共用磁碟驅動器上。 如果未 指定@path ,預設目錄目錄的位置會位於共用磁碟驅動器上,位於安裝虛擬伺服器時所指定的目錄中。

傳回碼值

0 (成功) 或 1 (失敗)。

結果集

無。

備註

start_full動作可用來在 @ftcat建立全文檢索數據的完整快照集。 start_incremental動作只用來重新編製資料庫中已變更數據列的索引。 只有當數據表具有類型 時間戳的數據行時,才能套用累加母體擴展。 如果全文檢索目錄中的數據表未包含類型 時間戳的數據行,數據表就會進行完整母體擴展。

全文檢索目錄和索引數據會儲存在全文檢索目錄目錄中建立的檔案中。 如果未指定@path,則全文檢索目錄目錄會建立為 @path 中指定的目錄子目錄,或在伺服器預設全文檢索目錄目錄中建立。 全文檢索目錄目錄的名稱是以保證伺服器上唯一的方式所建置。 因此,伺服器上的所有全文檢索目錄目錄都可以共用相同的路徑。

權限

呼叫端必須是db_owner角色的成員。 根據所要求的動作,呼叫端不應拒絕目標全文檢索目錄的 ALTER 或 CONTROL 許可權( db_owner 具有)。

範例

A. 建立全文檢索目錄

這個範例會在資料庫中建立空的全文檢索目錄 Cat_DescAdventureWorks2022

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

B. 重建全文檢索目錄

本範例會在資料庫中重建現有的全文檢索目錄Cat_DescAdventureWorks2022

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

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

此範例會開始完整擴展 Cat_Desc 目錄。

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

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

此範例會停止目錄的 Cat_Desc 母體擴展。

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

E. 拿掉全文檢索目錄

此範例會 Cat_Desc 移除目錄。

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