sp_help_fulltext_catalogs
尋找全文索引目錄
sp_help_fulltext_columns
全文索引列
sp_help_fulltext_tables
全文索引表
刪除全文索引所在表DROP FULLTEXT INDEX ON TableName
刪除全文索引目錄DROP FULLTEXT CATALOG catalog_name
當無法SQL備份中有全文索引時候,需要把索引刪除後才可還原 必須經上述步驟。
具體如下:
如何獲得資料庫裡有多少個全文索引。刪除全文索引的方法 SQL server 2005
今天使用命令備份資料庫的時候發生了異常:
Msg 3007, Level 16, State 1, Line 4
The backup of the file or filegroup "sysft_db_FullText" is not permitted because it is not online. BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selection to include only online data.
Msg 3007, Level 16, State 1, Line 4
The backup of the file or filegroup "sysft_ccc" is not permitted because it is not online. BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selection to include only online data.
Msg 3007, Level 16, State 1, Line 4
The backup of the file or filegroup "sysft_aaa" is not permitted because it is not online. BACKUP can be performed by using the FILEGROUP or FILE clauses to restrict the selection to include only online data.
Msg 3013, Level 16, State 1, Line 4
BACKUP DATABASE is terminating abnormally.
其中:db_FullText、ccc、aaa是原來的三個全文索引目錄。
想起來是重新裝系統後原來的全文索引被破壞了。 全文索引自己嘗試後,發現對中文的支援很不好。查處的結果一般比實際的要少得多。所以不使用它了。
但是忘記在那個表上建立過全文索引了。花了不少時間,與大家共用 :
--全文索引目錄sp_help_fulltext_catalogs--全文索引列sp_help_fulltext_columns--全文索引表sp_help_fulltext_tables
通過 sp_help_fulltext_catalogs找到了已經建立的全文索引目錄。但全文索引列和索引表卻沒有。所以只需要刪除全文索引目錄就OK了。
刪除全文檢索目錄:
DROP FULLTEXT CATALOG 目錄名稱。
當運行上面三個SQL結果都為空白的時候,這樣全文索引就清除了。可以備份了。
如果全文索引還在的話,那要啟動全文索引服務後 執行DROP FULLTEXT INDEX ON 全文索引表,然後再運行 DROP FULLTEXT CATALOG 目錄名稱。 OK了。
參考資料:
14.8 2005新增:與全文索引相關的T-SQL語句
在SQL Server 2005以前的版本中,建立與管理全文檢索目錄、全文索引主要是使用預存程序來完成。從SQL Server 2005開始新增加了一些與全文索引相關的T-SQL語句,可以用來建立與管理全文檢索目錄和全文索引。
14.8.1 建立全文檢索目錄
建立全文檢索目錄的T-SQL語句為:
1 CREATE FULLTEXT CATALOG catalog_name 2 3 [ON FILEGROUP filegroup ] 4 5 [IN PATH 'rootpath'] 6 7 [WITH <catalog_option>] 8 9 [AS DEFAULT]10 11 [AUTHORIZATION owner_name ]12 13 <catalog_option>::=14 15 ACCENT_SENSITIVITY = {ON|OFF}
其中參數說明如下:
l catalog_name:全文檢索目錄名稱。l ON FILEGROUP filegroup:包含全文檢索目錄的檔案組名。l IN PATH 'rootpath':全文檢索目錄的路徑。l AS DEFAULT:指定該全文檢索目錄為預設目錄。l AUTHORIZATION owner_name:將全文檢索目錄的所有者設為資料庫使用者名稱或角色的名稱。l ACCENT_SENSITIVITY:設定該全文檢索目錄的全文索引是否區分重音。
例十三、在Northwind資料庫中建立一個名為“TSQL全文檢索目錄”全文檢索目錄,其代碼如下:
CREATE FULLTEXT CATALOG TSQL全文檢索目錄 ON FILEGROUP [PRIMARY] IN PATH 'E:\book\SQL Server 2005大全\資料庫\第十四章\運行後資料庫' AS DEFAULT
14.8.2 更改全文檢索目錄屬性
建立完全文檢索目錄之後,如果發現其設定有不如意之處,可以用T-SQL語句對其進行修改。更改全文檢索目錄屬性的T-SQL語句代碼如下:
ALTER FULLTEXT CATALOG catalog_name{ REBUILD [ WITH ACCENT_SENSITIVITY = { ON | OFF } ]| REORGANIZE| AS DEFAULT}
其中參數說明如下:
l catalog_name:全文檢索目錄名稱l REBUILD:重建全文檢索目錄。l WITH ACCENT_SENSITIVITY:設定該全文檢索目錄的全文索引是否區分重音。l REORGANIZE:執行主要合併索引以便將在索引過程中建立的各個較小的索引合并成一個大索引。l AS DEFAULT:指定該全文檢索目錄為預設目錄。
例十四、重建“TSQL全文檢索目錄”,其代碼如下:
ALTER FULLTEXT CATALOG TSQL全文檢索目錄 REBUILD
14.8.3 建立全文索引
有了全文檢索目錄後,可以在全文檢索目錄裡建立全文索引。一個全文檢索目錄裡可以包含多個全文索引,但一個全文索引只能屬於一個全文檢索目錄。
每個資料表只能有一個全文索引。建立全文索引的T-SQL語句代碼如下:
CREATE FULLTEXT INDEX ON table_name [(column_name [TYPE COLUMN type_column_name] [LANGUAGE language_term] [,...n])] KEY INDEX index_name [ON fulltext_catalog_name] [WITH {CHANGE_TRACKING {MANUAL | AUTO | OFF [, NO POPULATION]}} ]
其中參數說明如下:
l table_name:資料表名。l column_name:全文索引中包括的一列或多列的名稱。只能對類型為char、varchar、nchar、nvarchar、text、ntext、image、xml和varbinary的列進行全文索引。l TYPE COLUMN type_column_name:用於儲存column_name的文件類型的資料表中的列名。l LANGUAGE language_term:儲存在column_name中的資料所用的語言。l KEY INDEX index_name:資料表中唯一鍵索引的欄位名。l ON fulltext_catalog_name:全文檢索目錄名。l MANUAL:指定是使用SQL Server代理還是手動傳播追蹤記錄檔。l AUTO:當關聯的資料表中修改了資料時,SQL Server自動更新全文索引。l OFF[,NO POPULATION]:不保留對索引資料的更改列表。
例十五、為“文章”表的“標題”、“內容”和“檔案”三個欄位建立全文索引,其代碼如下:
CREATE FULLTEXT INDEX ON 文章(標題,內容,檔案 TYPE COLUMN 副檔名) KEY INDEX PK_文章 ON TSQL全文檢索目錄
注意:由於在前面的章節裡已經為“文章”表建立了全文索引,因此在運行本例之前要先把原來建立的全文索引刪除。
14.8.4 更改全文索引屬性
建立完全文索引之後,如果發現其設定有不如意之處,可以用T-SQL語句對其進行修改。更改全文索引屬性的T-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 POPULATION }
其中一些參數說明如下:
l table_name:資料表名。l ENABLE | DISABLE:啟用或禁用全文索引。l MANUAL:指定是使用SQL Server代理還是手動傳播追蹤記錄檔。l AUTO:當關聯的資料表中修改了資料時,SQL Server自動更新全文索引。l OFF:不保留對索引資料的更改列表。l ADD:指定在全文索引中添加列。l WITH NO POPULATION:指定添加過刪除全文索引列之後不填充全文索引。l DROP:指定在全文索引中刪除列。l START……POPULATION:開始填充全文索引。l FULL:指定填充所有全文索引。l INCREMENTAL:指定對上次填充以來修改過的行進行填充。l UPDATE :指定對自上次更新變更追蹤索引以來的所有插入、更新或刪除進行處理。l STOP POPULATION:停止進行中的填充。
例十六、禁用“文章”表的全文索引,其代碼如下:
ALTER FULLTEXT INDEX ON 文章 DISABLE
例十七、啟用“文章”表的全文索引,其代碼如下:
ALTER FULLTEXT INDEX ON 文章 ENABLE
例十八、將“文章”表裡的“檔案”欄位從全文索引裡刪除,其代碼如下:
ALTER FULLTEXT INDEX ON 文章 DROP (檔案)
例十九、填充“文章”表的全文索引,其代碼如下:
ALTER FULLTEXT INDEX ON 文章 START FULL POPULATION
14.8.5 刪除全文索引
刪除全文索引的T-SQL的文法代碼比較簡單,如下所示:
DROP FULLTEXT INDEX ON table_name
例二十、刪除“文章”表裡的全文索引,其代碼如下:
DROP FULLTEXT INDEX ON 文章
14.8.6 刪除全文檢索目錄
刪除全文檢索目錄的T-SQL的文法代碼比較簡單,如下所示:
DROP FULLTEXT CATALOG catalog_name
例二十一、刪除“文章”表裡的全文索引,其代碼如下:
DROP FULLTEXT CATALOG TSQL全文檢索目錄
參考文章 http://msdn.microsoft.com/zh-cn/library/ms142549(v=SQL.105).aspx