共用方式為


sp_fulltext_table (Transact-SQL)

標示或取消標示全文檢索索引的資料表。

重要注意事項重要事項

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

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

語法

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_tabledrop 動作來卸除這份資料表的全文檢索定義,再利用 sp_fulltext_tablesp_fulltext_column 來重新定義它。

全文檢索索引鍵資料行必須定義成 900 位元組或以下。基於效能的考量,建議您索引鍵資料行的大小,愈小愈好。

權限

只有系統管理員 (sysadmin) 固定伺服器角色、db_ownerdb_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