從 SQL Server 2005 更新全文檢索搜尋
將全文檢索搜尋從 SQL Server 2005 升級為 SQL Server 2012 的作業會在安裝期間完成,而且當您使用 [複製資料庫精靈] 以附加、還原或複製舊版 SQL Server 的資料庫檔案和全文檢索目錄時,也會完成此作業。
本主題討論從 SQL Server 2005 升級全文檢索搜尋的下列層面:
升級伺服器執行個體
全文檢索升級選項
選擇全文檢索升級選項的考量
將資料庫升級為 SQL Server 2012 時移轉全文檢索索引
將 SQL Server 2005 全文檢索目錄還原至 SQL Server 2012 的考量
將 SQL Server 2005 資料庫附加至 SQL Server 2012
升級伺服器執行個體
進行就地升級時,SQL Server 2012 的執行個體會與舊版 SQL Server 並存安裝,而資料會進行移轉。 如果舊版 SQL Server 已安裝全文檢索搜尋,系統就會自動安裝新版全文檢索搜尋。 並存安裝表示下列各個元件可存在於 SQL Server 的執行個體層級。
斷詞工具、字幹分析器和篩選
各個執行個體現在會使用自己的斷詞工具、字幹分析器和篩選集,而不再使用這些元件的作業系統版本。 您還能在個別執行個體層級中,輕易地註冊和設定這些元件。 如需詳細資訊,請參閱<設定及管理搜尋的斷詞工具與字幹分析器>和<設定及管理搜尋的篩選>。篩選背景程式主機
全文檢索篩選背景程式主機處理序可安全無虞地載入並驅動用於索引和查詢的擴充外部元件,例如斷詞工具、字幹分析器和篩選,而無損全文檢索引擎的完整性。 伺服器執行個體會針對所有多執行緒篩選使用多執行緒處理序,而針對所有單一執行緒篩選使用單一執行緒處理序。[!附註]
SQL Server 2008 針對 FDHOST 啟動器服務 (MSSQLFDLauncher) 導入了服務帳戶。 這個服務會將服務帳戶資訊傳播至特定 SQL Server 執行個體的篩選背景程式主機處理序。 如需有關設定此服務帳戶的詳細資訊,請參閱<設定全文檢索篩選背景程式啟動器的服務帳戶>。
在 SQL Server 2005 中,每個全文檢索索引都位於屬於檔案群組、具有實體路徑而且被視為資料庫檔案的全文檢索目錄中。 在 SQL Server 2008 和更新版本中,全文檢索目錄是包含一組全文檢索索引的邏輯或虛擬物件。 因此,新的全文檢索目錄不會被視為具有實體路徑的資料庫檔案。 不過,在升級含有資料檔案的任何全文檢索目錄期間,系統會在相同的磁碟上建立新的檔案群組。 這會在升級之後保留舊磁碟 I/O 行為。 如果根路徑存在,則任何來自該目錄的全文檢索索引都會放置於新的檔案群組中。 如果舊的全文檢索目錄路徑無效,升級作業就會將全文檢索索引保留在與基底資料表相同的檔案群組中,或是保留在資料分割資料表的主要檔案群組中。
[!附註]
指定全文檢索目錄繼續正常運作的 SQL Server 2005 Transact-SQL DDL 陳述式。
全文檢索升級選項
將伺服器執行個體升級為 SQL Server 2012 時,使用者介面可讓您選擇下列其中一個全文檢索升級選項。
匯入
匯入全文檢索目錄。 一般而言,匯入的速度明顯比重建的速度更快。 例如,只有使用一個 CPU 時,匯入的執行速度大約比重建的速度快 10 倍。 不過,匯入的全文檢索目錄並不會使用與 SQL Server 最新版本一起安裝的新斷詞工具。 為確保查詢結果的一致性,必須重建全文檢索目錄。[!附註]
重建可以在多執行緒模式中執行,而且如果有 10 個以上的 CPU 可用,當您允許重建使用所有 CPU 時,重建的執行速度可能會比匯入的速度更快。
如果無法使用全文檢索目錄,將會重建關聯的全文檢索索引。 只有針對 SQL Server 2005 資料庫才可以使用此選項。
如需有關匯入全文檢索索引之影響的詳細資訊,請參閱本主題後面的「選擇全文檢索升級選項的考量」。
重建
全文檢索目錄會使用新的增強斷詞工具重建。 重建索引可能需要一些時間,而且在升級之後可能需要相當多的 CPU 和記憶體。重設
重設全文檢索目錄。 從 SQL Server 2005 進行升級時,全文檢索目錄檔案會遭到移除,但是全文檢索目錄和全文檢索索引的中繼資料則會保留。 在升級之後,所有的全文檢索索引都會停用變更追蹤,而且不會自動啟動搜耙。 當您在升級完成之後手動發出完整母體擴展之前,此目錄將會維持空白狀態。
選擇全文檢索升級選項的考量
當您為升級作業選擇升級選項時,請考慮下列事項:
您需要查詢結果中的一致性嗎?
SQL Server 2012 會安裝新的斷詞工具,供全文索引與語意搜尋之用。 編製索引及查詢時皆可使用斷詞工具。 如不重建全文索引目錄,可能會造成搜尋結果不一致。 當您發出全文索引查詢,尋找在舊版 SQL Server 斷詞工具中與目前之斷詞工具中斷詞方式相異的片語,可能會無法擷取含有該片語的文件或資料列。 這是索引片語所使用的分解邏輯與查詢所用者不相同所致。 此方案會使用新的斷詞工具重新擴展 (重建) 全文索引目錄,讓索引與查詢時的行為一致。 您可以選擇 [重建] 選項以完成這個作業,也可以在選擇 [匯入] 選項之後手動重建。
是否有任何全文檢索索引建立在整數全文檢索索引鍵資料行上?
重建會執行內部最佳化,以便在某些情況中改善已升級之全文檢索索引的查詢效能。 具體而言,如果您擁有包含全文檢索索引的全文檢索目錄,其中基底資料表的全文檢索索引鍵資料行是整數資料類型,則重建會在升級之後達到理想的全文檢索查詢效能。 在此情況中,我們強烈建議您使用 [重建] 選項。
[!附註]
若為 SQL Server 2012 中的全文檢索索引,我們建議當做全文檢索索引鍵的資料行必須是整數資料類型。 如需詳細資訊,請參閱<改善全文檢索索引的效能>。
將伺服器執行個體保持在線上狀態的優先權為何?
在升級期間匯入或重建會耗用大量 CPU 資源,因而延遲將其餘伺服器執行個體升級並保持在線上狀態的時間。 如果盡可能將伺服器執行個體保持在線上狀態很重要,而且您願意在升級之後執行手動母體擴展,則適合使用 [重設]。
確保匯入 SQL Server 2005 全文檢索索引之後的查詢結果一致性
新舊斷詞工具的行為稍微不同,因此如果已在將 SQL Server 2005 資料庫升級至 SQL Server 2012 時匯入全文檢索目錄,則查詢與全文檢索索引內容之間可能會不相符。 在此情況中,若要確保查詢與全文檢索索引內容之間完全相符,請選擇下列其中一個選項:
重建包含全文檢索索引的全文檢索目錄 (ALTER FULLTEXT CATALOG catalog_name REBUILD)。
針對全文檢索索引發出 FULL POPULATION (ALTER FULLTEXT INDEX ON table_name START FULL POPULATION)。
如需有關斷詞工具的詳細資訊,請參閱<設定及管理搜尋的斷詞工具與字幹分析器>。
將非搜尋字檔案升級為停用字詞表
SQL Server 2005 非搜尋字已取代為 SQL Server 2008 和更新版本中的停用字詞。 當資料庫從 SQL Server 2005 升級為 SQL Server 2012 時,便不再使用非搜尋字檔案。 不過,這些舊的非搜尋字檔案會儲存在 FTDATA\ FTNoiseThesaurusBak 資料夾中,而且您之後可以在更新或建立對應的 SQL Server 2012 停用字詞表時使用它們。
從 SQL Server 2005 升級之後:
如果您從未在 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 2012 中的全文檢索目錄,您必須識別包含此目錄之全文檢索索引的每個檔案群組,然後逐一備份它們。 如需詳細資訊,請參閱<備份並還原全文檢索目錄與索引。>。
對於已經從 SQL Server 2005 匯入的全文檢索目錄而言,此全文檢索目錄仍然是位於其檔案群組中的資料庫檔案。 全文檢索目錄的 SQL Server 2005 備份程序仍然適用,但是 MSFTESQL 服務不存在 SQL Server 2012 中。 如需有關 SQL Server 2005 程序的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的備份與還原全文檢索目錄。
將資料庫升級為 SQL Server 2012 時移轉全文檢索索引
您可以使用附加、還原或 [複製資料庫精靈],將舊版 SQL Server 的資料庫檔案和全文檢索目錄升級為現有的 SQL Server 2012 伺服器執行個體。 系統會匯入、重設或重建 SQL Server 2005 全文檢索索引 (如果有的話)。 upgrade_option 伺服器屬性會控制此伺服器執行個體在這些資料庫升級期間所使用的全文檢索升級選項。
當您將任何 SQL Server 2005 資料庫附加、還原或複製到 SQL Server 2012 時,該資料庫會立即可用,然後自動升級。 根據進行索引的資料數量而定,匯入可能需要數個小時,而重建可能需要十倍以上的時間。 此外,請注意,當升級選項設定為 [匯入] 時,如果全文檢索目錄無法使用,系統就會重建相關聯的全文檢索索引。
變更伺服器執行個體的全文檢索升級行為
Transact-SQL:使用 sp_fulltext_service 的 upgrade_option 動作。
SQL Server Management Studio**:**使用 [伺服器屬性] 對話方塊的 [全文檢索升級選項]。 如需詳細資訊,請參閱<管理及監視伺服器執行個體的全文檢索搜尋>。
將 SQL Server 2005 全文檢索目錄還原至 SQL Server 2012 的考量
將全文檢索資料從 SQL Server 2005 資料庫升級為 SQL Server 2012 的其中一種方法是將完整資料庫備份還原至 SQL Server 2012。
匯入 SQL Server 2005 全文檢索目錄時,您可以備份和還原資料庫與目錄檔案。 此行為與 SQL Server 2005 的行為相同:
完整資料庫備份將會包含全文檢索目錄。 若要參考全文檢索目錄,請使用其 SQL Server 2005 檔案名稱:sysft_+catalog-name。
如果全文檢索目錄處於離線狀態,備份將會失敗。
如需有關備份和還原 SQL Server 2005 全文檢索目錄的詳細資訊,請參閱《SQL Server 2005 線上叢書》中的<備份與還原全文檢索目錄>和<檔案備份、還原及全文檢索目錄>。
在 SQL Server 2012 中還原資料庫時,系統會針對此全文檢索目錄建立新的資料庫檔案。 這個檔案的預設名稱為 ftrow_catalog-name. ndf。 例如,如果您的 catalog-name 是 cat1,SQL Server 2012 資料庫檔案的預設名稱就是 ftrow_cat1.ndf。 但是,如果預設名稱已經用於目標目錄中,新的資料庫檔案就會名為 ftrow_catalog-name{GUID}.ndf,其中 GUID 是新檔案的全域唯一識別碼。
匯入目錄之後,會更新 sys.database_files 和 sys.master_file 以移除目錄項目,而且 sys.fulltext_catalogs 中的 path 資料行會設定為 NULL。
備份資料庫
交易記錄備份 (SQL Server) (僅限完整復原模式)
還原資料庫備份
範例
下列範例會在 RESTORE 陳述式中使用 MOVE 子句來還原名為 ftdb1 的 SQL Server 2005 資料庫。 SQL Server 2005 資料庫、記錄和目錄檔案都會移至 SQL Server 2012 伺服器執行個體上的新位置,如下所示:
資料庫檔案 ftdb1.mdf 會移至 C:\Program Files\Microsoft SQL Server\MSSQL.1MSSQL11.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\MSSQL11.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 2012
在 SQL Server 2008 和更新版本中,全文檢索目錄是參考一組全文檢索索引的邏輯概念。 全文檢索目錄是不屬於任何檔案群組的虛擬物件。 不過,當您將包含全文檢索目錄檔案的 SQL Server 2005 資料庫附加至 SQL Server 2012 伺服器執行個體時,系統就會從先前的位置附加這些目錄檔案以及其他資料庫檔案,此行為與 SQL Server 2005 的行為相同。
在 SQL Server 2012 上,每個所附加之全文檢索目錄的狀態都與從 SQL Server 2005 中卸離資料庫時的狀態相同。 如果卸離作業暫停了任何全文檢索索引母體擴展,就會在 SQL Server 2012 上繼續進行母體擴展,而且全文檢索索引會變成可用於全文檢索搜尋。
如果 SQL Server 2012 找不到全文檢索目錄檔案,或者在附加作業期間移動了全文檢索檔案,但沒有指定新的位置,此行為就會取決於選取的全文檢索升級選項。 如果全文檢索升級選項是 [匯入] 或 [重建],系統就會重建附加的全文檢索目錄。 如果全文檢索升級選項是 [重設],系統就會重設附加的全文檢索目錄。
如需有關卸離和附加資料庫的詳細資訊,請參閱<資料庫卸離與附加 (SQL Server)>、<CREATE DATABASE (Transact-SQL)>、<sp_attach_db>和<sp_detach_db (Transact-SQL)>。