全文檢索搜尋升級

將全文檢索搜尋升級為 SQL Server 2008 的作業會在安裝期間完成,而且當您使用複製資料庫精靈來附加、還原或複製舊版 SQL Server 的資料庫檔案和全文檢索目錄時,也會完成此作業。

這個主題將討論全文檢索升級的下列層面:

  • 升級伺服器執行個體

  • 全文檢索升級選項

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

  • 將資料庫升級為 SQL Server 2008 時移轉全文檢索索引

  • 將 SQL Server 2005 全文檢索目錄還原至 SQL Server 2008 的考量

  • 將 SQL Server 2005 資料庫附加至 SQL Server 2008

升級伺服器執行個體

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

元件

說明

斷詞工具、字幹分析器和篩選

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

篩選背景程式主機

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

附註附註
SQL Server 2008 針對 FDHOST Launcher 服務 (MSSQLFDLauncher) 導入了服務帳戶。這個服務會將服務帳戶資訊傳播至特定 SQL Server 執行個體的篩選背景程式主機處理序。如需有關設定此服務帳戶的詳細資訊,請參閱<如何:為全文檢索搜尋設定 FDHOST 啟動器 (MSSQLFDLauncher) 服務帳戶 (SQL Server 組態管理員)>。

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

如需有關 SQL Server 2008 中全文檢索搜尋架構的詳細資訊,請參閱<全文檢索搜尋架構>。

[!附註]

指定全文檢索目錄正常運作的 SQL Server 2005Transact-SQL DDL 陳述式。

全文檢索升級選項

將伺服器執行個體升級為 SQL Server 2008 時,使用者介面可讓您選擇下列其中一個全文檢索升級選項。

  • 匯入
    匯入全文檢索目錄。一般而言,匯入的速度明顯比重建的速度更快。例如,只有使用一個 CPU 時,匯入的執行速度大約比重建的速度快 10 倍。不過,匯入的全文檢索目錄並不會使用 SQL Server 2008 中導入的新增強化斷詞工具,所以您最後可能會想要重建全文檢索目錄。

    [!附註]

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

    如果無法使用全文檢索目錄,將會重建關聯的全文檢索索引。只有針對 SQL Server 2005 資料庫才可以使用此選項。

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

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

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

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

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

  • 您如何使用斷詞工具?

    SQL Server 2008 全文檢索搜尋服務包含新的斷詞工具和字幹分析器。這些項目可能會針對特定文字模式或狀況,變更舊版全文檢索查詢的結果。因此,在選擇適當的升級選項時,您如何使用斷詞工具便很重要:

    • 如果您所使用之全文檢索語言的斷詞工具並未在 SQL Server 2008 中變更,或者重新叫用精確度對您不重要,則適合進行匯入。之後,如果您遇到任何重新叫用的問題,只要透過重建全文檢索目錄,就可以升級為新的斷詞工具。如需詳細資訊,請參閱本節後面的「斷詞工具和匯入的全文檢索索引」。

    • 如果您很重視重新叫用精確度,而且使用了已經在 SQL Server 2008 中改善的其中一個斷詞工具,則適合進行重建。

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

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

    [!附註]

    若為 SQL Server 2008 中的全文檢索索引,我們建議當做全文檢索索引鍵的資料行必須是整數資料類型。如需詳細資訊,請參閱<全文檢索索引的效能微調與最佳化>。

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

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

在匯入 SQL Server 2005 全文檢索索引之後使用新的斷詞工具

匯入 SQL Server 2005 全文檢索索引時,請務必了解 SQL Server 2008 針對存在 SQL Server 2005 中的許多語言包含新的斷詞工具。只有英文、韓文、泰文和中文 (所有形式) 的斷詞工具維持原狀。SQL Server 2008 針對其他語言導入了新一代的斷詞工具,而這些斷詞工具的行為可能與已匯入之 SQL Server 2005 全文檢索索引中的 SQL Server 2005 斷詞工具稍微不同。

如果全文檢索目錄是在 SQL Server 2005 資料庫升級為 SQL Server 2008 時匯入,則該全文檢索目錄中全文檢索索引所使用的一個或多個語言現在可能會與新的斷詞工具相關聯。對於這些語言而言,當查詢使用新的斷詞工具時,查詢與全文檢索索引內容之間偶爾可能會發生不相符的狀況,因為舊斷詞工具和新斷詞工具的行為稍微不同。在此情況中,若要確保查詢與全文檢索索引內容之間完全相符,請進行下列其中一項作業:

  • 重建包含全文檢索索引的全文檢索目錄 (ALTER FULLTEXT CATALOGcatalog_name REBUILD)。

  • 針對全文檢索索引發出 FULL POPULATION (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION)。

重要注意事項重要事項

如果您的全文檢索目錄和索引使用未變更的斷詞工具 (例如英文斷詞工具),可能就不會發生不相符的狀況。在查詢時使用的斷詞工具就是在索引和未來查詢時建立索引所使用的斷詞工具。

如需有關斷詞工具的詳細資訊,請參閱<斷詞工具與字幹分析器>。

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

SQL Server 2005 非搜尋字已經由 SQL Server 2008 停用字詞所取代。當資料庫從舊版升級為 SQL Server 2008 時,SQL Server 2008 便不再使用非搜尋字檔案。不過,這些舊的非搜尋字檔案會儲存在 FTDATA\ FTNoiseThesaurusBak 資料夾中,而且您之後可以在更新或建立對應的 SQL Server 2008 停用字詞表時使用它們。

在升級之後:

  • 如果您從未在 SQL Server 2005 的安裝中新增、修改或刪除任何非搜尋字檔案,則系統停用字詞表應該能符合您的需求。

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

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

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

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

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

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

對於已經從 SQL Server 2005 匯入的全文檢索目錄而言,此全文檢索目錄仍然是位於其檔案群組中的資料庫檔案。全文檢索目錄的 SQL Server 2005 備份程序仍然適用,但是 MSFTESQL 服務不存在 SQL Server 2008 中。如需有關 SQL Server 2005 程序的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<備份和還原全文檢索目錄>。

[!附註]

如需有關備份和還原 SQL Server 2008 資料庫的詳細資訊,請參閱<備份和還原 SQL Server 2008 全文檢索目錄>。

將資料庫升級為 SQL Server 2008 時移轉全文檢索索引

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

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

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

將 SQL Server 2005 全文檢索目錄還原至 SQL Server 2008 的考量

將全文檢索資料從 SQL Server 2005 資料庫升級為 SQL Server 2008 的其中一種方法是將完整資料庫備份還原至 SQL Server 2008。

匯入目錄時,您可以備份和還原資料庫與目錄檔案。此行為與 SQL Server 2005 的行為相同:

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

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

如需有關備份和還原 SQL Server 2005 全文檢索目錄的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<備份與還原全文檢索目錄>和<檔案備份、還原及全文檢索目錄>。

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

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

備份資料庫

還原資料庫備份

[!附註]

如需有關還原 SQL Server 2008 全文檢索索引的詳細資訊,請參閱<分次還原和全文檢索索引>。

範例

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

  • 資料庫檔案 ftdb1.mdf 會移至 C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL10.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\MSSQL10.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

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

在 SQL Server 2008 上,每個所附加之全文檢索目錄的狀態都與從 SQL Server 2005 中卸離資料庫時的狀態相同。如果卸離作業暫停了任何全文檢索索引母體擴展,就會在 SQL Server 2008 上繼續進行母體擴展,而且全文檢索索引會變成可用於全文檢索搜尋。

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

如需有關卸離和附加資料庫的詳細資訊,請參閱<卸離和附加資料庫>、<CREATE DATABASE (Transact-SQL)>、<sp_attach_db>和<sp_detach_db (Transact-SQL)>。