2008-09-05 4 views
4

SQL Server 2005 SP2 컴퓨터에는 많은 수의 데이터베이스가 실행되며 전체 텍스트 카탈로그가 포함되어 있습니다. 이러한 데이터베이스 중 하나를 삭제하거나 전체 텍스트 인덱스를 다시 작성하려고하면 MSSEARCH 대기 유형으로 무기한 중단 또는 재 구축 프로세스가 중단됩니다. 프로세스를 종료 할 수 없으며 다시 시작하려면 서버를 재부팅해야합니다. Microsoft 포럼 게시물 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 명령을 사용하여 파일 경로를 수정 한 다음 데이터베이스를 온라인 상태로 만들도록 서버를 재부팅합니다. 그런 다음 MSSEARCH를 시작하고 자동 시작으로 설정하십시오.

관련 문제