起笑的 Office Sharepoint Server Search
最近遇到一個 Sharepoint Server Farm 無法停止 Office Sharepoint Server Search Service。
會造成資料庫連線爆增,Search Server Winsock 壞掉(詳見 【茶包射手專欄】怪異的網路問題 http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/04/19/719.aspx )
印象中是當初設定 Shared Service Provider 中的搜尋排程後,才發現會有"起笑"(台語)的現象發生。
詳細原因還不明,不過有一些蛛絲馬跡。
0.從茶包射手得知, mssearch.exe 一直建立 sql connection ,用 Process Explorer 看了一下,發現是 Office Sharepoint Server Search 啟動的 process
1.開啟 SQL Profiler 來看, filter Database Name 為 SSP Search DB 後,發現一直重覆著執行以下指令
select collationname(0x0904100000)
declare @p7 int
set @p7=NULL
declare @p8 int
set @p8=NULL
exec dbo.proc_MSS_Crawl 1,7,1,170,0,0,@p7 output,@p8 output
select @p7, @p8
2.複製至 SQL Management Studio 查詢後發現
什麼…一個預存程序 proc_MSS_AnchorFixTargetDocid 有問題,拜 google 大神也沒有結果…
3. 後來就先改了這個 SPS SearchDB 內建的預存程序 proc_MSS_AnchorFixTargetDocid
**Line 182:
INSERT INTO MSSCrawlChangedTargetDocs (CrawlId, DocId)
SELECT @CrawlId, DocID FROM #ChangedTargetDocs改為…
INSERT INTO MSSCrawlChangedTargetDocs (CrawlId, DocId)
SELECT distinct @CrawlId, DocID FROM #ChangedTargetDocs**Line 185:
INSERT INTO MSSAnchorPendingChangeLog (CrawlId, TargetDocId)
SELECT distinct @CrawlId, MSSAnchorText.TargetDocId FROM MSSAnchorText
JOIN #ChangedSourceDocs
ON #ChangedSourceDocs.DocId = MSSAnchorText.SourceDocId
WHERE MSSAnchorText.TargetDocId <> -1改為…
INSERT INTO MSSAnchorPendingChangeLog (CrawlId, TargetDocId)
SELECT distinct @CrawlId, MSSAnchorText.TargetDocId FROM MSSAnchorText
JOIN #ChangedSourceDocs
ON #ChangedSourceDocs.DocId = MSSAnchorText.SourceDocId
WHERE MSSAnchorText.TargetDocId <> -1**Line 191:
INSERT INTO MSSAnchorPendingChangeLog (CrawlId, TargetDocId)
SELECT distinct MSSCrawlChangedTargetDocs.CrawlId, DocId FROM MSSCrawlChangedTargetDocs
WHERE MSSCrawlChangedTargetDocs.CrawlId = @CrawlId改為…
INSERT INTO MSSAnchorPendingChangeLog (CrawlId, TargetDocId)
SELECT distinct MSSCrawlChangedTargetDocs.CrawlId, DocId FROM MSSCrawlChangedTargetDocs
WHERE MSSCrawlChangedTargetDocs.CrawlId = @CrawlId
改完這個預存程序後… Reset Crawl Data 重設所有編目內容 (共用服務管理 > 搜尋設定 > 編目設定-重設所有編目內容)
Yeah~~~~ 不會無法停止搜尋,也不會一直無限量建立 SQL Connection ,將 DB 搞跨。
不過,這只是一個治標,並非治本的作法,目前搜尋也正常,還看不出副作用,累了,查了三天了,先這樣子吧,有空再查查看囉…