Share via


sp_fulltext_table (Transact-SQL)

適用於:SQL ServerAzure Synapse Analytics

標記或取消標記全文檢索索引的數據表。

重要

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

Transact-SQL 語法慣例

語法

sp_fulltext_table
    [ @tabname = ] N'tabname'
    , [ @action = ] 'action'
    [ , [ @ftcat = ] N'ftcat' ]
    [ , [ @keyname = ] N'keyname' ]
[ ; ]

引數

[ @tabname = ] N'tabname'

一部分或兩部分數據表名稱。 數據表必須存在於目前的資料庫中。 @tabname為 nvarchar(517),沒有預設值。

[ @action = ] 'action'

要執行的動作。 @action為 nvarchar(50),沒有預設值,而且可以是下列其中一個值。

Description
建立 建立@tabname參考之數據表之全文檢索索引的元數據,並指定此數據表的全文檢索索引數據應該位於@ftcat。 此動作也會指定使用 @keyname 做為全文檢索索引鍵數據行。 這個唯一索引必須已經存在,而且必須在數據表的一個數據行上定義。

在填入全文檢索目錄之前,無法針對此數據表執行全文搜索。
卸除 卸除全文檢索索引 上@tabname的元數據。 如果全文檢索索引為使用中,則會在卸載之前自動停用。 在卸除全文檢索索引之前,不需要移除數據行。
啟動 啟用停用全文檢索索引數據@tabname的功能。 至少必須有一個數據行參與全文檢索索引,才能啟動它。

一旦加入第一個數據行進行編製索引,全文檢索索引就會自動成為作用中(適用於母體擴展)。 如果最後一個數據行從索引卸除,索引就會變成非使用中。 如果變更追蹤開啟,啟動非作用中的索引會啟動新的母體擴展。

這實際上不會填入全文檢索索引,但只要在文件系統中的全文檢索目錄中註冊數據表,就可以在下一個全文檢索索引母體擴展期間擷取來自 @tabname 的數據列。
Deactivate 停用@tabname的全文檢索索引,以便無法再針對@tabname收集全文檢索索引數據。 全文檢索索引元數據會維持不變,而且可以重新啟用數據表。

如果變更追蹤開啟,停用作用中索引會凍結索引的狀態:任何進行中的母體擴展會停止,而且不會再將任何變更傳播至索引。
start_change_tracking 啟動全文檢索索引的累加母體擴展。 如果數據表沒有時間戳,請啟動全文檢索索引的完整母體擴展。 開始追蹤數據表的變更。

全文檢索變更追蹤不會追蹤在 image、text 或 ntext 類型的全文檢索索引數據行上執行的任何 WRITETEXT 或 UPDATETEXT 作業。
stop_change_tracking 停止追蹤數據表的變更。
update_index 將目前追蹤的變更集傳播至全文檢索索引。
start_background_updateindex 開始在全文檢索索引發生時傳播追蹤的變更。
stop_background_updateindex 停止在全文檢索索引發生時傳播追蹤的變更。
start_full 啟動數據表全文檢索索引的完整母體擴展。
start_incremental 啟動數據表全文檢索索引的累加母體擴展。
停止 停止完整或累加母體擴展。

[ @ftcat = ] N'ftcat'

建立動作的有效現有全文檢索目錄名稱。 對於所有其他動作,此參數必須是 NULL。 @ftcat為 sysname 預設值為 NULL

[ @keyname = ] N'keyname'

建立動作之@tabname有效的單一索引鍵數據行,唯一不可為 Null 的索引。 對於所有其他動作,此參數必須是 NULL。 @keyname為 sysname,預設值為 NULL

傳回碼值

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

結果集

無。

備註

在特定數據表停用全文檢索索引之後,現有的全文檢索索引會保留到下一個完整母體擴展為止:不過,不會使用此索引,因為 SQL Server 會封鎖已停用數據表上的查詢。

如果重新啟用數據表且索引未重新填入,舊索引仍可供針對任何剩餘但未啟用新全文檢索的數據行進行查詢。 已刪除數據行中的數據會比對在指定全文檢索數據行搜尋的查詢中。

為全文檢索索引定義數據表之後,將全文檢索唯一索引鍵數據行從某個數據類型切換為另一個數據類型,方法是變更該數據行的數據類型,或將全文檢索唯一索引鍵從某個數據行變更為另一個數據行,而沒有完整重新填入可能會導致後續查詢期間失敗並傳回錯誤訊息:

全文搜索索引鍵值key_value無法轉換成類型data_type

若要避免此錯誤,請使用的卸除動作sp_fulltext_table卸除此數據表的全文檢索定義,並使用 和 sp_fulltext_column重新定義。sp_fulltext_table

全文檢索索引鍵數據行必須定義為900個字節或更少。 基於效能考慮,建議索引鍵數據行的大小盡可能小。

權限

只有系統管理員固定伺服器角色、db_ownerdb_ddladmin固定資料庫角色的成員,或具有全文檢索目錄參考許可權的使用者才能執行 sp_fulltext_table

範例

A. 啟用全文檢索索引的數據表

下列範例會為 Document 資料庫的數據表 AdventureWorks 建立全文檢索索引元數據。 Cat_Desc 是全文檢索目錄。 PK_Document_DocumentID 是上 Document唯一的單一數據行索引。

USE AdventureWorks2022;
GO

EXEC sp_fulltext_table 'Production.Document',
    'create',
    'Cat_Desc',
    'PK_Document_DocumentID';

--Add some columns
EXEC sp_fulltext_column 'Production.Document',
    'DocumentSummary',
    'add';

-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document',
    'activate';
GO

B. 啟動和傳播追蹤變更

下列範例會啟動並開始在全文檢索索引發生時傳播追蹤的變更。

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO

C. 拿掉全文檢索索引

此範例會移除資料庫數據表的AdventureWorks全文檢索索引元數據Document

USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO