2008-09-05 10 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

実行中のプロセスモニターを試したことがありますか?ハングして根本的なエラーが何であるかを確認します。プロセスモニターを使用すると、待機中/エラーが発生しているウィックファイル/リソースを伝えることができます。

+0

興味深い。 ProcMonは、サーバー上の他のデータベースのフルテキストインデックスファイルに対する共有違反を報告します。だから、それを再構築すると助けになるかもしれない。エラーは非常に断続的に起こるので、固定されているかどうかを確認するまでには時間がかかります。 – RedGreenCode

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

1

無効なフルテキストカタログの場所で同様の問題が発生しました。 サーバは起動時にすべてのデータベースをオンラインにしません。 dbidの順序でデータベースを処理し、途中まで取得して停止します。古いDBだけがオンラインになり、残りはアクセスできなくなりました。 sysprocessesを見ると、waittype = 0x00CC、lastwaittype = MSSEARCHのプロセスが12個以上現れました。 MSSEARCHを停止できませんでした。 問題は、フルテキストカタログを再配置したが、alter database ... modifyfileコマンドを実行しているときに誤ったパスを入力したときに発生しました。 解決策は、MSSEARCHを無効にし、すべてのデータベースをオンラインにして、問題のデータベースを見つけ出し、オフラインにし、alter databaseコマンドを使用してファイルパスを修正し、DBをオンラインにするようにサーバーを再起動します。その後、MSSEARCHを起動し、自動起動に設定します。