sp_fulltext_table (Transact-SQL)
標示或取消標示全文檢索索引的資料表。
重要事項 |
---|
未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 CREATE FULLTEXT INDEX、ALTER FULLTEXT INDEX 和 DROP FULLTEXT INDEX。 |
語法
sp_fulltext_table
[ @tabname= ] 'qualified_table_name'
, [ @action= ] 'action'
[
, [ @ftcat= ] 'fulltext_catalog_name'
, [ @keyname= ] 'unique_index_name'
]
引數
[ @tabname= ] 'qualified_table_name'
這是一段式或兩部份的資料表名稱。資料表必須在目前的資料庫中。qualified_table_name 是 nvarchar(517),沒有預設值。[ @action=] 'action'
這是要執行的動作。action 是 nvarchar(50),沒有預設值,它可以是下列值之一。值
描述
Create
建立 qualified_table_name 所參考的資料表之全文檢索索引的中繼資料,以及指定這份資料表的全文檢索索引資料應該在 fulltext_catalog_name 中。這個動作也指定利用 unique_index_name 來作為全文檢索索引鍵資料行。這個唯一索引必須已經存在,且必須定義在資料表的某個資料行中。
在擴展全文檢索目錄之前,您無法執行這份資料表的全文檢索搜尋。
Drop
卸除 qualified_table_name 之全文檢索索引中的中繼資料。如果全文檢索索引在使用中,在卸除之後,也會自動停用。在卸除全文檢索索引之前,不需要移除資料行。
Activate
在停用收集 qualified_table_name 之全文檢索索引資料的能力之後,啟動這個能力。至少必須有一個資料行參與全文檢索索引,您才能啟動它。
只要加入了第一個索引資料行,全文檢索索引就會自動成為使用中 (以便擴展)。如果從索引中卸除最後一個資料行,索引便會成為非使用中。如果變更追蹤是開啟的,啟動非作用中的索引會啟動新的擴展。
請注意,這並不會實際擴展全文檢索索引,只會在檔案系統的全文檢索目錄中登錄這份資料表,以便在下次擴展全文檢索索引期間,供您擷取 qualified_table_name 中的資料列。
Deactivate
停用 qualified_table_name 的全文檢索索引,無法再收集 qualified_table_name 的全文檢索索引資料。仍會保留全文檢索索引中繼資料,且可以重新啟動資料表。
如果變更追蹤是開啟的,停用使用中的索引會凍結索引狀態:任何進行中的擴展都會停止,不會再將任何其他變更傳播給索引。
start_change_tracking
啟動全文檢索索引的累加擴展。如果資料表沒有時間戳記,便啟動全文檢索索引的完整擴展。啟動資料表的變更追蹤。
全文檢索變更追蹤開啟不會在 image、text 或 ntext 類型的全文檢索索引資料行上,追蹤任何 WRITETEXT 或 UPDATETEXT 作業。
stop_change_tracking
停止資料表的追蹤變更。
update_index
將目前追蹤的這組變更傳播給全文檢索索引。
Start_background_updateindex
在發生追蹤的變更時,開始將這些變更傳播給全文檢索索引。
Stop_background_updateindex
在發生追蹤的變更時,停止將這些變更傳播給全文檢索索引。
start_full
啟動資料表的全文檢索索引的完整擴展。
start_incremental
啟動資料表的全文檢索索引的累加擴展。
Stop
停止完整或累加擴展。
[ @ftcat=] 'fulltext_catalog_name'
這是 create 動作之有效的現有全文檢索目錄名稱。所有其他動作的這個參數都必須是 NULL。fulltext_catalog_name 是 sysname,預設值是 NULL。[ @keyname=] 'unique_index_name'
這是 create 動作在 qualified_table_name 上的索引,它是有效的單索引鍵資料行索引,而且是不可設為 Null 的唯一索引。所有其他動作的這個參數都必須是 NULL。unique_index_name 是 sysname,預設值是 NULL。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
在停用特定資料表的全文檢索索引之後,現有全文檢索索引會留在原來的位置,直到下一次完整擴展;不過,這個索引並不會用到,因為 MicrosoftSQL Server 會封鎖已停用之資料表的查詢。
如果重新啟動資料表,且沒有重新擴展索引,任何其餘啟用全文檢索的非新增資料行的查詢,仍可以使用舊索引。在指定全部全文檢索資料行搜尋的查詢中,會符合已刪除的資料行之資料。
在定義好全文檢索索引的資料表之後,將全文檢索唯一索引鍵資料行的資料類型切換成另一個資料類型,不論是藉由變更這個資料行的資料類型,或藉著將全文檢索唯一索引鍵的資料行改成另一個資料行,只要沒有完整重新擴展,都可能使後續查詢失敗並傳回下列錯誤訊息:「全文檢索搜尋索引鍵值 key_value 轉換成 data_type 類型失敗」。若要防止這個情況,請利用 sp_fulltext_table 的 drop 動作來卸除這份資料表的全文檢索定義,再利用 sp_fulltext_table 和 sp_fulltext_column 來重新定義它。
全文檢索索引鍵資料行必須定義成 900 位元組或以下。基於效能的考量,建議您索引鍵資料行的大小,愈小愈好。
權限
只有系統管理員 (sysadmin) 固定伺服器角色、db_owner 和 db_ddladmin 固定資料庫角色的成員,或有全文檢索目錄參考權限的使用者可以執行 sp_fulltext_table。
範例
A. 啟用資料表的全文檢索索引
下列範例會建立 AdventureWorks 資料庫 Document 資料表的全文檢索索引中繼資料。Cat_Desc 是一個全文檢索目錄。PK_Document_DocumentID 是 Document 的唯一單一資料行索引。
USE AdventureWorks;
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 AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
C. 移除全文檢索索引
這個範例會移除 AdventureWorks 資料庫 Document 資料表的全文檢索索引中繼資料。
USE AdventureWorks;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO