SQL Server 2000 的全文搜尋功能讓資料庫具備類似搜尋引擎的字詞檢索能力,支援 Office 文件、HTML、純文字等多種格式。本文整理從環境準備、目錄建立、資料匯入到索引填充測試的完整實作流程,並針對常見工具缺失與連線錯誤提供解決方案。
Microsoft Search 服務(通常預設已啟動)。MSSQL\FTDATA\SQLServer\Config 目錄下建立非空的 noise.chs 檔案(簡體中文斷詞用),若目錄下已有相關檔案可略過。-- 1. 建立測試資料庫與資料表
CREATE DATABASE test; GO
USE test; GO
CREATE TABLE dali (
ID INT NOT NULL PRIMARY KEY,
MyImage IMAGE,
FileType VARCHAR(255),
FileName VARCHAR(255)
); -- 必須具備:主鍵、IMAGE 欄位、檔案類型欄位
-- 2. 啟用資料庫全文功能
EXEC sp_fulltext_database 'enable'; GO
-- 3. 建立全文目錄
EXEC sp_fulltext_catalog 'My_FullDir', 'create'; GO
-- 4. 註冊資料表至全文目錄(指定唯一鍵索引)
DECLARE @Key SYSNAME;
SELECT @Key = c.name
FROM syscolumns a, sysconstraints b, sysobjects c
WHERE a.id = OBJECT_ID('dali')
AND a.name = 'ID'
AND a.id = b.id
AND b.constid = c.id
AND c.name LIKE 'PK%';
EXEC sp_fulltext_table 'dali', 'create', 'My_FullDir', @Key; GO
-- 5. 指定全文索引欄位與類型欄位
EXEC sp_fulltext_column 'dali', 'MyImage', 'add', 0x0804, 'FileType'; GO
.htm 檔案(如 C:\index.htm)。INSERT dali VALUES (1, 0x, 'htm', '網頁');sp_textcopy 呼叫 textcopy.exe:CREATE PROCEDURE sp_textcopy
@srvname VARCHAR(30), @login VARCHAR(30), @passWord VARCHAR(30),
@dbname VARCHAR(30), @tbname VARCHAR(30), @colname VARCHAR(30),
@filename VARCHAR(30), @whereclause VARCHAR(40), @direction CHAR(1)
AS
BEGIN
DECLARE @exec_str VARCHAR(255);
SELECT @exec_str = 'textcopy /S ' + @srvname + ' /U ' + @login + ' /P ' + @passWord
+ ' /D ' + @dbname + ' /T ' + @tbname + ' /C ' + @colname
+ ' /W "' + @whereclause + '" /F "' + @filename + '" /' + @direction;
EXEC master..xp_cmdshell @exec_str;
END; GO
EXEC sp_textcopy 'GAOLONG','gaolong1','831001','test','dali','MyImage','C:\index.htm','WHERE ID=1','I';| 錯誤現象 | 原因 | 解決方法 |
|---|---|---|
'textcopy' 不是內部或外部命令... | 系統找不到 textcopy.exe | 從 MSSQL\Binn 複製 textcopy.exe 到 80\Tools\Binn 目錄 |
DB-Library Error 10004: 無法連接... | 伺服器名/登入參數錯誤 | 檢查伺服器名稱(非實例名)、帳號密碼、網路連通性 |
-- 啟動完全填充
EXEC sp_fulltext_table 'dali', 'start_full'; GO
-- 測試查詢
SELECT * FROM dali WHERE CONTAINS(MyImage, '標題');
SELECT * FROM dali WHERE FREETEXT(MyImage, '關鍵字');
proCatalog)。CONTAINS、FREETEXT、CONTAINSTABLE、FREETEXTTABLE 進行檢索。sp_fulltext_database:啟用/停用資料庫全文功能sp_fulltext_catalog:建立/刪除/啟動/停止全文目錄sp_fulltext_table:註冊/啟用/停用資料表全文索引sp_fulltext_column:加入/移除全文索引欄位掌握腳本化部署與圖形化操作雙軌技能,才能在開發、測試、生產環境間靈活遷移全文搜尋方案。