sp_fulltext_catalog (Transact-SQL)
建立和卸除全文檢索目錄,以及啟動和停止目錄的索引動作。每個資料庫都可以建立多個全文檢索目錄。
重要事項 |
---|
未來的 Microsoft SQL Server 版本將移除這項功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。請改用 CREATE FULLTEXT CATALOG、ALTER FULLTEXT CATALOG 和 DROP FULLTEXT CATALOG。 |
適用於:SQL Server (SQL Server 2008 至目前版本)、SQL Database V12。 |
語法
sp_fulltext_catalog [ @ftcat= ] 'fulltext_catalog_name' ,
[ @action= ] 'action'
[ , [ @path= ] 'root_directory' ]
引數
[ @ftcat=] *'*fulltext_catalog_name'
這是全文檢索目錄的名稱。每個資料庫的目錄名稱都必須是唯一的。fulltext_catalog_name 是 sysname。[ @action=] *'*action'
這是要執行的動作。action 是 varchar(20),而且可以是下列其中一個值。注意事項 您可以依照需要來建立、卸除和修改全文檢索目錄。不過,請避免同時變更多個目錄的結構描述。您可以利用 sp_fulltext_table 預存程序來執行這些動作,這是建議採行的方式。
值
描述
Create
在檔案系統中建立一個新的空白全文檢索目錄,在含有 fulltext_catalog_name 和 root_directory 值 (如果有的話) 的 sysfulltextcatalogs 中加入相關聯的資料列。在資料庫內,fulltext_catalog_name 必須是唯一的。
Drop
卸除 fulltext_catalog_name,其方式是從檔案系統中移除它,再刪除 sysfulltextcatalogs 中相關聯的資料列。如果這個目錄包含一個或多個資料表的索引,這個動作便會失敗。您應該執行 sp_fulltext_table 'table_name', 'drop' 來卸除目錄中的資料表。
如果目錄不存在,就會出現錯誤。
start_incremental
啟動 fulltext_catalog_name 的累加母體擴展。如果目錄不存在,就會出現錯誤。如果全文檢索索引擴展已在使用中,便會顯示一則警告,但不會進行任何擴展動作。當執行累加母體擴展時,如果建立全文檢索索引的資料表中有 timestamp 資料行,便只會針對全文檢索索引擷取變更過的資料列。
start_full
啟動 fulltext_catalog_name 的完整母體擴展。此時會針對全文檢索索引擷取與這份全文檢索目錄相關聯之每份資料表的每個資料列,即使它們已建立索引也一樣。
停止
停止 fulltext_catalog_name 的索引母體擴展。如果目錄不存在,就會出現錯誤。如果母體擴展已停止,便不會顯示任何警告。
Rebuild
重建 fulltext_catalog_name。重建目錄時,會刪除現有的目錄,並就地建立新的目錄。具有全文檢索索引參考的所有資料表都會與新目錄產生關聯。重建會重設資料庫系統資料表中的全文檢索中繼資料。
如果變更追蹤為 OFF,重建並不會重新擴展新建的全文檢索目錄。在此情況下若要重新擴展,請利用 start_full 或 start_incremental 動作來執行 sp_fulltext_catalog。
[ @path=] *'*root_directory'
這是 create 動作的根目錄 (不是完整的實體路徑)。root_directory 是 nvarchar(100),預設值是 NULL,表示使用安裝時所指定的預設位置。這是在 Mssql 目錄之下的 Ftdata 子目錄,例如,C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\FTData。指定的根目錄必須在相同電腦的磁碟機中,它不只是磁碟機代號,也不能是相對路徑。網路磁碟機、卸除式磁碟機、磁碟片及 UNC 路徑都不在支援範圍內。全文檢索目錄必須建立在與 SQL Server 執行個體相關聯的本機硬碟中。只有在 action 是 create 時,@path 才有效。如果是 create 以外的動作 (stop、rebuild 等),@path 就必須是 NULL,或加以省略。
如果 SQL Server 的執行個體是叢集中的虛擬伺服器,指定的全文檢索目錄之目錄就必須在 SQL Server 資源所依賴的共用硬碟中。如果未指定 @path,預設的全文檢索目錄之目錄的位置就在共用硬碟,在安裝虛擬伺服器時所指定的目錄中。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
start_full 動作用於建立 fulltext_catalog_name 中的完整全文檢索資料快照集。start_incremental 動作用於重建資料庫中已變更過之資料列的索引。資料表必須有 timestamp 類型的資料行,累加母體擴展才適用。如果全文檢索目錄中的資料表並未包含 timestamp 類型的資料行,資料表就會進行完整母體擴展。
全文檢索目錄和索引資料會儲存在全文檢索目錄之目錄下所建立的檔案中。全文檢索目錄之目錄會建立成 @path 所指定之目錄的子目錄,如果未指定 @path,便在伺服器預設的全文檢索目錄之目錄中建立。全文檢索目錄之目錄名稱的建立方式,必須確保它在伺服器中是唯一的。因此,伺服器中所有全文檢索目錄之目錄都可以共用相同的路徑。
Permissions
呼叫端必須是 db_owner 角色的成員。根據所要求的動作而定,在目標全文檢索目錄上,呼叫端不應被拒絕 ALTER 或 CONTROL 權限 (db_owner 所擁有的權限)。
範例
A.建立全文檢索目錄
這個範例會在 AdventureWorks2012 資料庫中,建立一個空白全文檢索目錄 Cat_Desc。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'create';
GO
B.重建全文檢索目錄
這個範例會在 AdventureWorks2012 資料庫中,重建現有的全文檢索目錄 Cat_Desc。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'rebuild';
GO
C.開始擴展全文檢索目錄
這個範例會開始進行 Cat_Desc 目錄的完整母體擴展。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'start_full';
GO
D.停止擴展全文檢索目錄
這個範例會停止擴展 Cat_Desc 目錄。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'stop';
GO
E.移除全文檢索目錄
這個範例會移除 Cat_Desc 目錄。
USE AdventureWorks2012;
GO
EXEC sp_fulltext_catalog 'Cat_Desc', 'drop';
GO
請參閱
FULLTEXTCATALOGPROPERTY (Transact-SQL)
sp_fulltext_database (Transact-SQL)
sp_help_fulltext_catalogs (Transact-SQL)
sp_help_fulltext_catalogs_cursor (Transact-SQL)
系統預存程序 (Transact-SQL)
全文檢索搜尋