為全文索引對表進(jìn)行標(biāo)記或去除標(biāo)記。
sp_fulltext_table [ @tabname = ] 'qualified_table_name'
, [ @action = ] 'action'
[ , [ @ftcat = ] 'fulltext_catalog_name'
, [ @keyname = ] 'unique_index_name' ]
[@tabname =] 'qualified_table_name'
一段或兩段的表名。該表必須存在于當(dāng)前的數(shù)據(jù)庫中。qualified_table_name 的數(shù)據(jù)類型為 nvarchar(517),無默認(rèn)值。
[@action =] 'action'
將要執(zhí)行的動作。action 的數(shù)據(jù)類型為 varchar(20),無默認(rèn)值,可以是下面值中的一個。
值 | 描述 |
---|---|
Create | 為 qualified_table_name 引用的表創(chuàng)建全文索引的元數(shù)據(jù),并且指定該表的全文索引數(shù)據(jù)應(yīng)該駐留在 fulltext_catalog_name 中。該動作還將 unique_index_name 的用法指派為全文鍵列。這個唯一的索引必須已經(jīng)存在,并且必須在表的某個列上已經(jīng)定義。 完成全文目錄填充后才能對該表執(zhí)行全文檢索。 |
Drop | 對于 qualified_table_name,除去全文索引上的元數(shù)據(jù)。如果全文索引是活動的,那么在除去它之前會自動停用它。在除去全文索引之前,不必刪除列。 |
Activate | 停用全文索引后,激活為 qualified_table_name 聚集全文索引數(shù)據(jù)的能力。在激活全文索引之前,應(yīng)該至少有一列參與這個全文索引。 一旦為索引添加了第一列,全文索引便自動成為活動的。如果從索引中除去最后一列,該索引將成為非活動的。如果打開更改跟蹤,激活非活動的索引將會啟動新填充。 請注意,這個動作并沒有實(shí)際填充全文索引,只是將表注冊在文件系統(tǒng)中的全文目錄,這樣,在進(jìn)行下一次全文索引填充時,就可以檢索來自 qualified_table_name 的行。 |
Deactivate | 停用 qualified_table_name 的全文索引,使得無法再為 qualified_table_name 聚集全文索引數(shù)據(jù)。全文索引元數(shù)據(jù)依然保留,并且該表還可以被重新激活。 如果打開更改跟蹤,停用一個活動的索引將會凍結(jié)索引狀態(tài):任何正在進(jìn)行的填充都將停止,不再將更多的更改傳播到索引。 |
start_change_tracking | 啟動全文索引的增量填充。如果該表沒有時間戳,那么就啟動全文索引的完全填充。開始跟蹤表發(fā)生的變化。 全文更改跟蹤不跟蹤對類型為 image、text 或 ntext 的全文索引列所執(zhí)行的任何 WRITETEXT 或 UPDATETEXT 操作。 |
stop_change_tracking | 停止跟蹤表發(fā)生的變化。 |
update_index | 將當(dāng)前一系列跟蹤的變化傳播到全文索引。 |
Start_background_updateindex | 在變化發(fā)生時,開始將跟蹤的變化傳播到全文索引。 |
Stop_background_updateindex | 在變化發(fā)生時,停止將跟蹤的變化傳播到全文索引。 |
start_full | 啟動表的全文索引的完全填充。 |
start_incremental | 啟動表的全文索引的增量填充。 |
停止 | 停止完全或增量填充。 |
[@ftcat =] 'fulltext_catalog_name'
是 create 動作有效的現(xiàn)有全文目錄名。對于所有其它動作,該參數(shù)必須為 NULL。fulltext_catalog_name 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。
[@keyname =] 'unique_index_name'
有效的單鍵列,create 動作的 qualified_table_name 上的唯一的非空索引。對于所有其它動作,該參數(shù)必須為 NULL。unique_index_name 的數(shù)據(jù)類型為 sysname,默認(rèn)值為 NULL。
0(成功)或 1(失?。?/P>
無
為一個特定的表停用全文索引后,在下一次完全填充之前,現(xiàn)有的全文索引仍保留在原位;可是,由于 Microsoft® SQL Server™ 關(guān)閉了在停用表上的查詢,所以不能使用該索引。
如果重新激活該表,而不重新填充索引,舊索引仍可用于對其余任何啟用了全文索引的非新的列進(jìn)行查詢。刪除列的數(shù)據(jù)在指定全部全文列 (*) 搜索的查詢中相匹配。
為全文索引定義一個表后,把全文唯一鍵列從一個數(shù)據(jù)類型切換到另一個數(shù)據(jù)類型。切換方法可以是更改該列的數(shù)據(jù)類型,也可以是把全文唯一鍵從一列更改到另一列上。采用上述方法,在后續(xù)查詢時,完全重新填充可能會引致失敗并返回錯誤信息。"對于全文檢索鍵值 key_value,轉(zhuǎn)換到類型 data_type 失敗。"為防止發(fā)生這種情況,使用 sp_fulltext_table 的"除去"動作為該表除去全文定義,并使用 sp_fulltext_table 和 sp_fulltext_column 對它進(jìn)行重新定義。
如果全文唯一鍵列是個字符列或 Unicode 字符列,則必須將其定義為 450 字節(jié)或更少。
只有 sysadmin 固定服務(wù)器角色成員、db_owner 和 db_ddladmin 固定數(shù)據(jù)庫角色成員和對象所有者才能執(zhí)行 sp_fulltext_table。
下面的示例為 Northwind 數(shù)據(jù)庫的 Categories 表創(chuàng)建全文索引元數(shù)據(jù)。Cat_Desc 是全文目錄。PK_Categories 為 Categories 上唯一的、單列索引。
USE Northwind
EXEC sp_fulltext_table 'Categories', 'create', 'Cat_Desc', 'PK_Categories'
.. Add some columns
EXEC sp_fulltext_column 'Categories','Description','add'
.. Activate the index
EXEC sp_fulltext_table 'Categories','activate'
當(dāng)更改發(fā)生時,下面的示例激活并啟動將所跟蹤的更改傳播到全文索引。USE Northwind
GO
EXEC sp_fulltext_table Categories, 'Start_change_tracking'
EXEC sp_fulltext_table Categories, 'Start_background_updateindex'
下面的示例為 Northwind 數(shù)據(jù)庫的 Categories 表刪除全文索引元數(shù)據(jù)。
USE Northwind
EXEC sp_fulltext_table 'Categories', 'drop'
相關(guān)文章