2008-09-05 33 views
4

我們有一臺運行大量數據庫的SQL Server 2005 SP2計算機,所有這些數據庫都包含全文目錄。每當我們嘗試刪除其中一個數據庫或重建全文索引時,刪除或重建過程將無限期地掛起MSSEARCH等待類型。該進程無法被終止,並且需要重新啓動服務器才能重新運行。基於微軟論壇帖子1,看來問題可能是不正確地刪除了全文目錄。任何人都可以推薦一種方法來確定哪些目錄導致問題,而不必刪除所有這些問題?SQL Server全文搜索:使用MSSEARCH等待類型掛起進程

1 [http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2681739&SiteID=1] 「是的,我們確實有在數據庫中全文目錄,但因爲我有數據庫禁用全文搜索,和殘疾人MSFTESQL,我不懷疑他們。然而,我得到了來自Microsoft支持部門的一篇文章,向我展示瞭如何測試未正確刪除的目錄。所以我發現,但仍存在着一個古老的目錄,這是我,以後只有經過重新啓用全文搜索,能夠刪除,從此我的備份已制定」

回答

1

您是否嘗試過運行過程監控,當它掛起並查看底層錯誤是什麼?使用進程監視器,你應該能夠告訴正在等待/錯誤的whick文件/資源​​。

+0

有趣。 ProcMon報告來自服務器上其他數據庫之一的全文索引文件的共享衝突。所以重建它可能會有所幫助。錯誤的發生非常間歇,所以需要一段時間才能確定它是否修復。 – RedGreenCode 2008-10-30 17:57:38

2

這是一個建議。我沒有任何損壞的數據庫,但你可以試試這個:

declare @t table (name nvarchar(128)) 
insert into @t select name from sys.databases --where is_fulltext_enabled 

while exists(SELECT * FROM @t) 
begin 
    declare @name nvarchar(128) 
    select @name = name from @t 
    declare @SQL nvarchar(4000) 
    set @SQL = 'IF EXISTS(SELECT * FROM '[email protected]+'.sys.fulltext_catalogs) AND NOT EXISTS(SELECT * FROM sys.databases where is_fulltext_enabled=1 AND name='''[email protected]+''') PRINT ''' [email protected] + ' Could be the culprit''' 
    print @sql 
    exec sp_sqlexec @SQL 
    delete from @t where name = @name 
end 

如果它不工作,取下過濾網檢查sys.databases

+0

感謝您的建議。但是,沒有一個數據庫被標記爲潛在的罪魁禍首。 – RedGreenCode 2008-10-30 17:50:13

1

我有一個無效的全文目錄位置類似的問題。 服務器在啓動時不會將所有數據庫聯機。它將按照dbid順序處理數據庫,並在中途停止。只有較舊的數據庫才能上網,其餘的數據庫無法訪問。 查看sysprocesses顯示了十幾個或更多的進程,waittype = 0x00CC,lastwaittype = MSSEARCH。 MSSEARCH無法停止。 這個問題是由於我們重新部署了全文目錄而導致的,但是在運行alter database ... modifyfile命令時輸入了其中一個錯誤的路徑。 解決方案是禁用MSSEARCH,重新啓動服務器,允許所有數據庫聯機,查找違規數據庫,使其脫機,使用alter database命令糾正文件路徑,並使數據庫聯機。然後啓動MSSEARCH並設置爲自動啓動。