ALTER FULLTEXT INDEX (Transact-SQL)

更新: 2006 年 12 月 12 日

變更全文檢索索引的屬性。

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

語法

ALTER FULLTEXT INDEX ON table_name
   { ENABLE 
   | DISABLE
   | SET CHANGE_TRACKING { MANUAL | AUTO | OFF }
   | ADD ( column_name 
     [ TYPE COLUMN type_column_name ] 
     [ LANGUAGE language_term ] [,...n] )
     [ WITH NO POPULATION ]
   | DROP ( column_name [,...n] )
     [WITH NO POPULATION ] 
   | START { FULL | INCREMENTAL | UPDATE } POPULATION
   | { STOP | PAUSE | RESUME } POPULATION 
   }

引數

  • table_name
    這是包括在全文檢索索引中的一或多個資料行所在的資料表名稱。資料庫和資料表擁有者名稱的指定是選擇性的。
  • ENABLE | DISABLE
    通知 Microsoft SQL Server 是否要收集 table_name 的全文檢索索引資料。ENABLE 會啟動全文檢索索引;DISABLE 會關閉全文檢索索引。

    當停用全文檢索索引時,全文檢索索引中繼資料會保留在系統資料表中。如果停用全文檢索索引時,CHANGE_TRACKING 在已啟用狀態 (自動或手動更新),索引狀態會凍結,任何進行中的編目都會停止,此時不會追蹤資料表資料的新變更,也不會將它們傳播到索引中。您可以利用 ENABLE 來重新啟動 table_name 的全文檢索索引。

  • SET CHANGE_TRACKING {MANUAL | AUTO | OFF}
    指定 SQL Server 是否維護全文檢索目錄中索引資料之所有變更的清單。WRITETEXT 和 UPDATETEXT 的資料變更並不會反映在全文檢索索引中,變更的追蹤並不會取出它們。

    若要修改全文檢索索引的 CHANGE_TRACKING 狀態,全文檢索索引資料表所在的 FILEGROUP 不能設為 OFFLINE 或 READONLY。否則,命令會失敗,SQL Server 會傳回錯誤。

  • MANUAL
    指定要利用 SQL Server Agent 來依排程傳播變更追蹤記錄,或由使用者手動傳播變更追蹤記錄。
  • AUTO
    指定 SQL Server 依照相關資料表中所修改的資料來自動更新全文檢索索引。預設值是 AUTO。
  • OFF
    指定 SQL Server 不保留索引資料的變更清單。
  • ADD | DROP column_name
    指定要在全文檢索索引中新增或刪除的資料行。這些資料行的類型必須是 charvarcharncharnvarchartextntextimagexmlvarbinary(max)

    請只在先前已啟用了全文檢索索引的資料行上,使用 DROP 子句。

    使用 TYPE COLUMN 和 LANGUAGE 來搭配 ADD 子句,在 column_name 上設定這些屬性。當新增資料行時,您必須重新擴展資料表的全文檢索索引,針對這個資料行的全文檢索查詢才能運作。

    除非您指定了 WITH NO POPULATION,否則,SQL Server 會全文檢索索引加入或卸除資料行之後,自動啟動完整的擴展。

  • TYPE COLUMN type_column_name
    這是在 table_name 中,用來主控 column_name 之文件類型的資料行名稱。只有當 column_name 資料行的類型是 varbinary(max)image 時,才指定 type_column_name

    TYPE COLUMN 的資料類型可以是 charncharvarcharnvarchar。如需有關全文檢索支援的檔案格式及 varbinary(max) 資料行所儲存之索引資料的詳細資訊,請參閱<全文檢索搜尋篩選>。

  • LANGUAGE language_term
    這是 column_name 所儲存之資料的語言。

    language_term 是選擇性的,可以指定成對應於語言地區設定識別碼 (LCID) 的字串、整數或十六進位值。如果指定了 language_term,就會將它代表的語言套用至搜尋條件的所有元素上。如果未指定任何值,就會使用 SQL Server 執行個體的預設全文檢索語言。

    請利用 sp_configure 預存程序來存取 SQL Server 執行個體的預設全文檢索語言的相關資訊。如需詳細資訊,請參閱<default full-text language 選項>。

    當指定為字串時,language_term 會對應到 syslanguages 系統資料表中的 alias 資料行值。字串必須以單引號括住,如 'language_term'。當指定為整數時,language_term 是用來識別語言的實際 LCID。當指定為十六進位值時,language_term 是 0x,後面接著 LCID 的十六進位值。十六進位值不能超出 8 位數,開頭的零也包括在內。

    如果這個值是雙位元組字元集 (DBCS) 格式,SQL Server 會將它轉換成 Unicode。

    您必須針對指定為 language_term 的語言來啟用資源,如斷詞工具和詞幹分析器。如果這些資源不支援指定的語言,SQL Server 會傳回錯誤。

    如果是包含多種語言之文字資料的非 BLOB 和非 XML 資料行,或資料行所儲存的文字語言不明,請使用中性 (0x0) 語言資源。如果是儲存在 XML 或 BLOB 類型資料行的文件,在建立索引時,將使用文件內的語言編碼。例如,在 XML 資料行中,XML 文件的 xml:lang 屬性會識別語言。在查詢時,除非在全文檢索查詢中指定 language_term,否則,language_term 先前所指定的值會成為全文檢索查詢所用的預設語言。

  • [ ,...n]
    指出 ADD 或 DROP 子句可以指定多個資料行。當指定多個資料行時,請用逗號來分開這些資料行。
  • WITH NO POPULATION
    指定在 ADD 或 DROP 資料行作業之後,不擴展全文檢索索引。只有在使用者執行 START...POPULATION 命令時,才擴展索引。

    如果既啟用 CHANGE_TRACKING,又指定 WITH NO POPULATION,SQL Server 會傳回錯誤。如果啟用了 CHANGE_TRACKING,但沒有指定 WITH NO POPULATION,SQL Server 會在建立好索引之後,執行索引的完整擴展。

    只有在 CHANGE_TRACKING 是 OFF 時,才能使用 NO POPULATION 選項。當指定 NO POPULATION 時,在建立好索引之後,SQL Server 並不會擴展索引。只有在使用者提供了 ALTER FULLTEXT INDEX...START POPULATION 命令之後,才會擴展索引。當並未指定 NO POPULATION 時,在建立好索引之後,SQL Server 會擴展索引。

  • START {FULL|INCREMENTAL|UPDATE} POPULATION
    通知 SQL Server 來開始擴展 table_name 的全文檢索索引。如果全文檢索索引擴展已在進行中,SQL Server 會傳回警告,且不會開始新的擴展。
    • FULL
      指定全文檢索索引要擷取資料表的每個資料列,即使資料列已建立了索引也一樣。
    • INCREMENTAL
      指定全文檢索索引只擷取前次擴展之後又修改過的資料列。資料表必須有 timestamp 類型的資料行,INCREMENTAL 才適用。如果全文檢索目錄中的資料表並未包含 timestamp 類型的資料行,資料表就會進行 FULL 擴展。
    • UPDATE
      指定處理上次更新變更追蹤索引之後的所有插入、更新或刪除。資料表上必須啟用變更追蹤擴展,但不應開啟背景更新索引或自動變更追蹤。
  • {STOP | PAUSE | RESUME } POPULATION
    停止或暫停任何進行中的擴展動作,或是停止或繼續任何已暫停的擴展動作。

    STOP POPULATION 不會停止自動變更追蹤或背景更新索引。若要停止變更追蹤,請使用 SET CHANGE_TRACKING OFF。

    PAUSE POPULATION 和 RESUME POPULATION 只適用於完全擴展。它們與其他擴展類型無關,因為其他擴展會從編目停止處繼續編目。

備註

當全文檢索搜尋建立 xml 資料類型資料之執行個體的索引時,索引中並不包含屬性和元素名稱,您將無法查詢它們;不過,您仍可以在每個執行個體中建立元素值的索引,以及查詢它們。包含多重語言的格式正確的 XML 文件和片段都受到支援。

權限

使用者必須具備資料表或檢視的 ALTER 權限,或必須是系統管理員 (sysadmin) 固定伺服器角色的成員,或是 db_ddladmindb_owner 固定資料庫角色的成員。

範例

下列範例會修改 AdventureWorks 資料庫之 JobCandidate 資料表中的全文檢索索引。

USE AdventureWorks;
GO
ALTER FULLTEXT INDEX ON HumanResources.JobCandidate ENABLE;
GO

請參閱

參考

CREATE FULLTEXT INDEX (Transact-SQL)
DROP FULLTEXT INDEX (Transact-SQL)

其他資源

全文檢索搜尋

說明及資訊

取得 SQL Server 2005 協助

變更歷程記錄

版本 歷程記錄

2006 年 12 月 12 日

新增內容:
  • 新增 PAUSE | RESUME POPULATION 選項至語法。