[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