[SQL][問題處理]SQL Server 2000 資料庫升級到 SQL Server 2008 無法使用全文檢索

[SQL][問題處理]SQL Server 2000 資料庫升級到 SQL Server 2008 無法使用全文檢索

收到一個很奇特的問題,剛聽到的時候自己也有點訝異,在我的印象中似乎 SQL Server 並沒有這樣的限制,於是請朋友給一下他的資料庫來測試看看。

 

首先我先建立一個測試資料庫,來看看我的測試電腦上是否可以啟用全文檢索,先建立一個測試用的資料庫 TEST 和一個測試用的資料表 Table_1,因為要使用全文檢索,因此我要先建立一個「全文檢索目錄」 ( Full-Text Catalog ),建立個方式很簡單,你選擇你的資料庫下的「儲存體」 ( Storage )→「全文檢索目錄」( Full-Text Catalog ),按下滑鼠右鍵選擇「建立全文檢索目錄

image

 

設定好相關名稱之後就建立好了

image

 

接著我們就可以在資料表上面選擇「Full-Text Index」→「Define Full-Text Index」透過精靈的方式一步一步去設定好,因此看起來這個 Instance 是沒有問題,可以支援全文檢索的功能。

image


既然環境沒有問題,那我就來測試一下有問題的資料庫看看,首先我先把測試的資料庫給還原。接著跟在 SQL Server 2008 上的一樣,先建立一個「全文檢索目錄」

image

 

此時雖然我們在我們要建立全文檢索的資料表上面,看起來全文檢索的選項是沒有啟用的。

image

 

這個時候我們只要在我們的目的資料庫上執行「EXEC sp_fulltext_database 'enable'」的指令之後,就可以使用了。

image

 

而透過精靈一步一步的設定欄位和更新的時間之後,就可以順利完成設定了。

image

 

原本以為這只是小菜一碟,就很快的告訴朋友相關的處理方式。但朋友聽完之後,怎麼樣測試就還是不行,因此再重新針對他有異常的資料表來測試看看,只要問題能重現應該就好找資料了。

image

 

從他的訊息中看起來,朋友的資料表中的主鍵是採用三個欄位的複合鍵,加上又沒有其他欄位是具有唯一性的索引,因為全文檢索在建立的時候,資料表一定要具備一個唯一性的欄位,因此才會有這樣的問題。而為了要解決這個問題,我們採用了計算欄位來處理。

image

 

我們採用以下的語法來做處理

-- 建立計算欄位
ALTER TABLE dbo.MTRWB 
    ADD UniqueKey AS WB001+WB002+WB023;
GO
 
-- 建立唯一索引    
CREATE UNIQUE INDEX UniqueIndex ON MTRWB(UniqueKey)
GO

 

按照上述的處理完畢之後,就可以順利地使用精靈來建立全文檢索了

image