升級全文檢索搜尋

適用於:SQL ServerAzure SQL Database

SQL Server 會在安裝期間,或您從舊版 SQL Server 附加、還原或複製資料庫檔案及全文檢索目錄時,升級全文檢索搜尋。

升級伺服器執行個體

執行就地升級時,SQL Server 的執行個體會與舊版 SQL Server 並存安裝,而資料會完成移轉。 如果舊版 SQL Server 已安裝全文檢索搜尋,系統會自動安裝新版全文檢索搜尋。 並存安裝的意思是指下列各個元件可存在於 SQL Server 的執行個體層級。

斷詞工具、字幹分析器和篩選
各個執行個體現在會使用自己的斷詞工具、字幹分析器和篩選集,而不再使用這些元件的作業系統版本。 您還能在個別執行個體層級中,輕易地註冊和設定這些元件。 如需詳細資訊,請參閱 設定及管理搜尋的斷詞工具與字幹分析器設定及管理搜尋的篩選

篩選背景程式主機
全文檢索篩選背景程式主機處理序可安全無虞地載入並驅動用於索引和查詢的擴充外部元件,例如斷詞工具、字幹分析器和篩選,而無損全文檢索引擎的完整性。 伺服器執行個體會針對所有多執行緒篩選使用多執行緒處理序,而針對所有單一執行緒篩選使用單一執行緒處理序。

注意

SQL Server 2008 (10.0.x) 針對 FDHOST Launcher 服務 (MSSQLFDLauncher) 導入服務帳戶。 此服務會將服務帳戶資訊傳播至 SQL Server 特定執行個體的篩選精靈主機處理序。 如需設定服務帳戶的相關資訊,請參閱 設定全文檢索篩選背景程式啟動器的服務帳戶

在 SQL Server 2005 (9.x) 中,每個全文檢索索引都位於隸屬於檔案群組的全文檢索目錄,該目錄具有實體路徑,系統會將其視為資料庫檔案。 在 SQL Server 2008 (10.0.x) 和更新的版本中,全文檢索目錄是包含一組全文檢索索引的邏輯或虛擬物件。 因此,新的全文檢索目錄不會被視為具有實體路徑的資料庫檔案。 不過,在升級含有資料檔案的任何全文檢索目錄期間,系統會在相同的磁碟上建立新的檔案群組。 這會在升級之後保留舊磁碟 I/O 行為。 如果根路徑存在,則任何來自該目錄的全文檢索索引都會放置於新的檔案群組中。 如果舊的全文檢索目錄路徑無效,升級作業就會將全文檢索索引保留在與基底資料表相同的檔案群組中,或是保留在分割區資料表的主要檔案群組中。

全文檢索升級選項

升級 SQL Server 執行個體時,您可透過使用者介面選擇下列其中一個全文檢索升級選項。

匯入
匯入全文檢索目錄。 一般而言,匯入的速度明顯比重建的速度更快。 例如,只有使用一個 CPU 時,匯入的執行速度大約比重建的速度快 10 倍。 不過,匯入的全文檢索目錄不會使用與 SQL Server 最新版本一併安裝的新斷詞工具。 為確保查詢結果的一致性,必須重建全文檢索目錄。

注意

重建可以在多執行緒模式中執行,而且如果有 10 個以上的 CPU 可用,當您允許重建使用所有 CPU 時,重建的執行速度可能會比匯入的速度更快。

如果無法使用全文檢索目錄,將會重建關聯的全文檢索索引。 此選項僅適用於 SQL Server 2005 (9.x) 資料庫。

如需有關匯入全文檢索索引之影響的詳細資訊,請參閱本主題後面的「選擇全文檢索升級選項的考量」。

重建
全文檢索目錄會使用新的增強斷詞工具重建。 重建索引可能需要一些時間,而且在升級之後可能需要相當多的 CPU 和記憶體。

重設
重設全文檢索目錄。 從 SQL Server 2005 (9.x) 執行升級作業時,全文檢索目錄檔案會遭到移除,但全文檢索目錄和全文檢索索引的中繼資料則會保留。 在升級之後,所有的全文檢索索引都會停用變更追蹤,而且不會自動啟動搜耙。 當您在升級完成之後手動發出完整母體擴展之前,此目錄將會維持空白狀態。

選擇全文檢索升級選項的考量

當您為升級作業選擇升級選項時,請考慮下列事項:

  • 您需要查詢結果中的一致性嗎?

    SQL Server 會安裝新的斷詞工具,供全文索引和語意搜尋功能使用。 編製索引及查詢時皆可使用斷詞工具。 如不重建全文索引目錄,可能會造成搜尋結果不一致。 當您發出全文索引查詢的要求,尋找舊版 SQL Server 斷詞工具與目前斷詞工具斷詞方式相異的片語,可能會無法擷取含有該片語的文件或資料列。 這是索引片語所使用的分解邏輯與查詢所用者不相同所致。 此方案會使用新的斷詞工具重新擴展 (重建) 全文索引目錄,讓索引與查詢時的行為一致。 您可以選擇 [重建] 選項以完成這個作業,也可以在選擇 [匯入] 選項之後手動重建。

  • 是否有任何全文檢索索引建立在整數全文檢索索引鍵資料行上?

    重建會執行內部最佳化,以便在某些情況中改善已升級之全文檢索索引的查詢效能。 具體而言,如果您擁有包含全文檢索索引的全文檢索目錄,其中基底資料表的全文檢索索引鍵資料行是整數資料類型,則重建會在升級之後達到理想的全文檢索查詢效能。 在此情況中,我們強烈建議您使用 [重建] 選項。

    注意

    若是全文檢索索引,建議作為全文檢索索引鍵使用的資料行必須是整數資料類型。 如需詳細資訊,請參閱 改善全文檢索索引的效能

  • 將伺服器執行個體保持在線上狀態的優先權為何?

    在升級期間匯入或重建會耗用大量 CPU 資源,因而延遲將其餘伺服器執行個體升級並保持在線上狀態的時間。 如果盡可能將伺服器執行個體保持在線上狀態很重要,而且您願意在升級之後執行手動母體擴展,則適合使用 [重設]

確保匯入全文檢索索引之後的查詢結果一致性

新舊斷詞工具的行為稍有不同,因此如果在升級 SQL Server 2005 (9.x) 資料庫時匯入全文檢索目錄,查詢條件與全文檢索索引內容之間可能會出現落差。 在此情況中,若要確保查詢與全文檢索索引內容之間完全相符,請選擇下列其中一個選項:

如需斷詞工具的詳細資訊,請參閱 設定及管理搜尋的斷詞工具與字幹分析器

將非搜尋字檔案升級為停用字詞表

當資料庫從 SQL Server 2005 (9.x) 升級時,便不再使用非搜尋字檔案。 不過,這些舊的非搜尋字檔案會儲存於 FTDATA\ FTNoiseThesaurusBak 資料夾中,您之後可以在更新或建立對應的 SQL Server 停用字詞表時使用。

從 SQL Server 2005 (9.x) 升級之後:

  • 如果您從未在 SQL Server 2005 (9.x) 的安裝作業中新增、修改或刪除任何非搜尋字檔案,系統停用字詞表應該能滿足您的需求。

  • 如果您曾在 SQL Server 2005 (9.x) 修改過非搜尋字檔案,這些修改內容會在升級時遺失。 若要重新建立這些更新,您必須在對應的停用字詞表中,以手動方式重新建立這些修改。 如需詳細資訊,請參閱 ALTER FULLTEXT STOPLIST (Transact-SQL)

  • 如果不想將任何停用字詞套用至全文檢索索引 (例如您刪除或清除了 SQL Server 2005 (9.x) 安裝作業中的非搜尋字檔案),您必須針對每個已升級的全文檢索索引關閉停用字詞表。 執行下列 Transact-SQL 陳述式 (將 database 改成升級後資料庫的名稱,並將 table 改成資料表的名稱):

    Use database;   
    ALTER FULLTEXT INDEX ON table  
       SET STOPLIST OFF;  
    GO  
    

    STOPLIST OFF 子句會移除停用字詞篩選,而且它將會觸發資料表的母體擴展,但不會篩選任何視為非搜尋字的字詞。

備份與匯入的全文檢索目錄

對於升級期間重建或重設的全文檢索目錄 (以及新的全文檢索目錄) 而言,此全文檢索目錄是邏輯概念,而且不會位於檔案群組中。 因此,若要備份全文檢索目錄,您必須識別包含此目錄全文檢索索引的每個檔案群組,並將其逐一備份。 如需詳細資訊,請參閱 備份並還原全文檢索目錄與索引

如果是已從 SQL Server 2005 (9.x) 匯入的全文檢索目錄,此全文檢索目錄仍然是位於其檔案群組中的資料庫檔案。 全文檢索目錄的 SQL Server 2005 (9.x) 備份程序仍然適用,不過 SQL Server 中不會提供 MSFTESQL 服務。 如需 SQL Server 2005 (9.x) 程序的相關資訊,請參閱《SQL Server 2005 線上叢書》中的備份與還原全文檢索目錄

升級資料庫時移轉全文檢索索引

您可以使用附加、還原或複製資料庫精靈,將舊版 SQL Server 的資料庫檔案和全文檢索目錄升級為現有的執行個體。 SQL Server 2005 (9.x) 系統會匯入、重設或重建全文檢索索引 (如果有的話)。 upgrade_option 伺服器屬性會控制此伺服器執行個體在這些資料庫升級期間所使用的全文檢索升級選項。

當您附加、還原或複製 SQL Server 2005 (9.x) 資料庫時,該資料庫會成為更新的執行個體,並立即開放使用,然後自動升級。 根據進行索引的資料數量而定,匯入可能需要數個小時,而重建可能需要十倍以上的時間。 此外,請注意,當升級選項設定為 [匯入] 時,如果全文檢索目錄無法使用,系統就會重建相關聯的全文檢索索引。

變更伺服器執行個體的全文檢索升級行為

還原 SQL Server 2005 (9.x) 全文檢索目錄的相關考量

從 SQL Server 2005 (9.x) 資料庫升級全文檢索資料的其中一種方法,是將完整的資料庫備份還原至較新的 SQL Server 執行個體。

匯入 SQL Server 2005 (9.x) 的全文檢索目錄時,您可以備份及還原資料庫和目錄檔案。 行為與 SQL Server 2005 (9.x) 相同:

  • 完整資料庫備份將會包含全文檢索目錄。 若要參考全文檢索目錄,請使用其 SQL Server 2005 (9.x) 檔案名稱,亦即 sysft_+catalog-name

  • 如果全文檢索目錄處於離線狀態,備份將會失敗。

如需備份及還原 SQL Server 2005 (9.x) 全文檢索目錄的詳細資訊,請參閱《SQL Server 2005 (9.x) 線上叢書》中的備份與還原全文檢索目錄檔案備份、還原及全文檢索目錄

在較新的 SQL Server 執行個體上還原資料庫時,系統會針對此全文檢索目錄建立新的資料庫檔案。 這個檔案的預設名稱為 ftrow_catalog-name.ndf。 例如,如果您的 catalog-namecat1,SQL Server 資料庫檔案的預設名稱會是 ftrow_cat1.ndf。 但是,如果預設名稱已經用於目標目錄中,新的資料庫檔案就會命名為 ftrow_catalog-name{GUID}.ndf,其中 GUID 是新檔案的全域唯一識別碼。

匯入目錄之後,會更新 sys.database_filessys.master_files以移除目錄項目,而且 sys.fulltext_catalogs 中的 path 資料行會設成 NULL。

備份資料庫

還原資料庫備份

範例

下列範例會在 RESTORE 陳述式中使用 MOVE 子句來還原名為 ftdb1 的 SQL Server 2005 (9.x) 資料庫。 SQL Server 2005 (9.x) 資料庫、記錄和目錄檔案會移動至 SQL Server 伺服器執行個體上的新位置,如下所示:

  • 資料庫檔案 ftdb1.mdf會移至 C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL13.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf

  • 記錄檔 ftdb1_log.ldf會移至記錄磁碟機上的記錄目錄: log_drive:\log_directory\ftdb1_log.ldf

  • 對應至 sysft_cat90 目錄的目錄檔案會移至 C:\temp。 匯入全文檢索索引之後,它們會自動放置於資料庫檔案 C:\ftrow_sysft_cat90.ndf 中,而且系統會刪除 C:\temp。

RESTORE DATABASE [ftdb1] FROM  DISK = N'C:\temp\ftdb1.bak' WITH  FILE = 1,  
   MOVE N'ftdb1' TO N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\ftdb1.mdf',  
    MOVE N'ftdb1_log' TO N'log_drive:\log_directory\ftdb1_log.ldf',  
    MOVE N'sysft_cat90' TO N'C:\temp';  

附加 SQL Server 2005 資料庫

在 SQL Server 2008 (10.0.x) 以上版本中,全文檢索目錄是參考一組全文檢索索引的邏輯概念。 全文檢索目錄是不屬於任何檔案群組的虛擬物件。 不過,當您將包含全文檢索目錄檔案的 SQL Server 2005 (9.x) 資料庫附加至較新的 SQL Server 伺服器執行個體時,系統會從先前的位置附加這些目錄檔案以及其他資料庫檔案,如同 SQL Server 2005 (9.x) 的行為一樣。

SQL Server 上每個所附加之全文檢索目錄的狀態,都會與資料庫從 SQL Server 2005 (9.x) 卸除時的狀態相同。 如果卸除作業暫停了任何全文檢索索引的母體擴展,該母體擴展作業就會在 SQL Server 上繼續進行,而全文檢索索引會供全文檢索搜尋作業使用。

如果 SQL Server 找不到全文檢索目錄檔案,或您在附加作業期間移動了全文檢索檔案,但並未指定新的位置,實際的行為就會取決於您選取的全文檢索升級選項。 如果全文檢索升級選項是 [匯入] 或 [重建],系統就會重建附加的全文檢索目錄。 如果全文檢索升級選項是 [重設],系統就會重設附加的全文檢索目錄。

如需卸除及附加資料庫的詳細資訊,請參閱資料庫卸除和附加 (SQL Server)CREATE DATABASE (SQL Server Transact-SQL)sp_attach_dbsp_detach_db (Transact-SQL)

另請參閱

全文檢索搜尋使用者入門
設定及管理搜尋的斷詞工具與字幹分析器
設定及管理搜尋的篩選