通過SQL Server對上傳檔案內容進行查詢

iSQlServer發表於2009-03-16
由於工作需要,需要對上傳的檔案內容進行查詢。通過MSDN瞭解到Windows索引服務可以實現對檔案的全文檢索,並可以通過SQL Server進行查詢。本文將兩者結合後實現對上傳檔案的全文檢索。

方案描述:

1.改變檔案儲存時的檔名

2.配置索引伺服器,並將索引伺服器與MS SQL Server關聯。

3.修改SQL語句,將進行全文查詢語句的內容加入查詢條件中

檔案的儲存方式:

為了方便儲存以及方便索引,我們將上傳的檔案儲存到一個目錄裡面,為了保證上傳的檔名不重複,採用GUID作為檔名,並且通過這個GUID於資料庫記錄相關聯。同時,檔案的字尾還保持原始檔案的字尾,讓索引服務能夠識別該文件。

配置索引服務

進入計算機管理(Computer Management)程式(右鍵”我的電腦”->”管理”),並找到索引服務(Index Service)

配置索引服務的功能

(1)右鍵選擇索引服務彈出一個選單

(2)選擇New->Catalog(新建一個編錄)

設定新增加的編錄

(1)輸入編錄的名字(這個名字需要與資料庫進行關聯,要注意命名,這裡假設DCSII

(2)點Browse進入選擇索引服務執行目錄窗體

(3)選擇前面建立的索引執行目錄(任意地方)

(4)點確定完成本次操作

在編錄建立號以後,需要給編錄增加目錄

(1)右鍵選擇剛剛建立的編錄

(2)選擇New->Directory(新建目錄)

新建索引目錄

(1)點選Browse進入目錄選擇頁面

(2)選擇要進行全文檢索檔案的目錄

(3)確定完成本次操作

完成建立後啟動索引服務

(1)啟動索引服務

(2)索引服務啟動成功後索引編錄的資訊,可以看到編錄資訊就表示服務已經啟動成功。

將索引服務和SQL資料庫關聯:

在SQL 查詢分析器(SQL Query Analyer)裡執行下面的儲存過程

EXEC sp_addlinkedserver Dcs, -- 連線伺服器的名字,到後面查詢的時候要用到

'Index Server',

'MSIDXS',

'DCSII' -- 索引服務裡新建的編錄名字

索引服務的效能調整方法1

(1)右鍵選擇索引服務

(2)選擇 All Tasks-> Tune Perrformance

(3)選擇使用者自定義

(4)點選Customize進入效能調整窗體

(5)將Index和Querying的屬性移動到最右邊

(6)點確定完成操作

效能調整方法2

如果伺服器不需要對整個系統的檔案進行索引,可以停止或者刪除System編錄。

MS SQL對索引伺服器的呼叫

1.通過sql語句查詢連線伺服器的內容

SELECT Q.*

FROM OpenQuery(dcs, --連線伺服器名字

'SELECT FileName, Size, DocAuthor, path --在連線伺服器裡的sql語句

FROM SCOPE()

WHERE CONTAINS(''番號 and abc'') '

) AS Q

2.因為SQL語句不支援動態輸入的字串,因此查詢字串只好在C#程式碼裡來進行拼接

其它解決方法:

在SQL Server 2000資料庫裡按全文搜尋功能,用image欄位儲存檔案內容,並新增一個欄位存放檔案型別,然後在通過企業管理器新建全文索引項的時候將這兩個欄位匹配就可以。不過從資料庫的/率以及今後資料庫備份和恢復的效率上來看,將檔案放在資料庫的設計略顯不足。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-567498/,如需轉載,請註明出處,否則將追究法律責任。

相關文章