INF: SQL 7.0 전체 텍스트(Full-Text) 카탈로그 폴더와 파일을 이동, 복사 및 백업하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 240867 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR240867
모두 확대 | 모두 축소

이 페이지에서

요약

전체 텍스트(FT: Full-Text) 카탈로그 및 인덱스는 SQL Server 데이터베이스에 저장되지 않습니다. 이는 Microsoft 검색 서비스에서 관리하는 별도의 파일에 저장됩니다. 전체 텍스트(Full-Text) 카탈로그 파일은 SQL Server 복구 중에는 복구되지 않습니다. 이는 T-SQL BACKUPRESTORE 문을 사용하여 백업하거나 복원(Restore)할 수도 없습니다. 전체 텍스트(Full-Text) 카탈로그는 복구 또는 복원(Restore) 작업 이후 별도로 다시 동기화해야 합니다. Microsoft 검색 서비스 및 Windows NT 시스템 관리자는 전체 텍스트 카탈로그 파일을 액세스할 수 있습니다.

전체 텍스트(Full-Text) 카탈로그는 SQL Server 데이터베이스로 백업되지는 않지만 SQL Server 7.0 표준 또는 엔터프라이즈 버전을 가지고 있는 고객은 이제 대규모 테이블을 가진 FTS(전체 텍스트 검색) 사용 프로덕션 데이터베이스를 사용할 수 있습니다. 이러한 고객은 프로덕션 데이터베이스와 함께 FT 카탈로그를 이동, 백업 및 복원(Restore)하기를 요구하고 있습니다. FT 카탈로그 채우기 또는 재동기화 실행 시간은 때때로 일반 "유지 관리 창"에서 허용하는 것보다 더 오래 걸릴 수 있습니다.

본 문서는 다음과 같은 제한 사항을 가지고 전체 텍스트(Full-Text) 카탈로그 폴더와 파일을 복사, 이동 및 백업하는 방법에 대한 여러 가지 방법을 설명합니다.

  • 전체 텍스트(Full-Text) 카탈로그 폴더와 파일은 로컬 드라이브에 있어야 합니다.
  • 전체 텍스트(Full-Text) 카탈로그 폴더와 파일은 원래 이름 및 폴더 내용을 유지해야 합니다.
  • 전체 텍스트(Full-Text)를 사용할 수 있는 dbid(데이터베이스 ID) 및 테이블 ID는 서버 간에 FT 카탈로그를 이동 또는 복사할 때 양쪽 서버에서 같아야 합니다.
전체 텍스트(Full-Text) 카탈로그는 기본적으로 \Mssql7\FTDATA 상위 폴더 밑에 폴더 및 파일의 모음으로 유지 관리됩니다. 각 FT 카탈로그 및 관련 파일은 다음과 같은 명명 규칙에 따라 폴더에 유지 관리됩니다. "SQL0000(dbid)0000(ftcatid)". 여기서 dbid는 관련된 데이터베이스 ID이고 ftcatid는 전체 텍스트(Full-Text) 카탈로그 ID입니다. 각 ftcatid는 관련된 데이터베이스에서 고유합니다.

동일한 서버 및 로컬 드라이브/경로에 FT 카탈로그 백업 및 복원(Restore)

FT 카탈로그 폴더와 파일은 먼저 Microsoft 검색 서비스(mssearch.exe)를 중지하고 백업해야 합니다. 그런 다음 Backup Exec와 같은 Windows NT 파일 시스템 백업 유틸리티를 사용하여 FT 카탈로그 폴더와 파일을 백업합니다. Microsoft 검색 서비스가 중지되면 전체 텍스트(Full-Text) 검색 쿼리(CONTAINS, CONTAINSTABLE, FREETEXT 또는 FREETEXTTABLE 조건자를 포함한 쿼리)는 처리될 수 없고 FTS 쿼리는 다음과 같은 오류와 함께 실패합니다.
Server: Msg 7602, Level 16, State 1, Line 2 The Full-Text Service (Microsoft Search) is not available. The system administrator must start this service.

Microsoft 검색 서비스가 중지된 동안 관련된 SQL Server 데이터베이스와 FT 카탈로그를 동시에 백업할 수 있습니다. 그런 다음 FT 카탈로그 백업 폴더 및 파일 그리고 SQL Server 데이터베이스 백업 파일을 동일한 백업 폴더에 저장합니다. 필요하면 이러한 폴더와 파일을 전부 테이프에 백업할 수도 있습니다. 전체 텍스트(Full-Text) 카탈로그의 시스템 테이블(stsfulltextcatalogs)은 SQL Server 데이터베이스와 함께 백업됩니다. SQL 데이터베이스 및 FT 카탈로그를 복원(Restore)하려면 Microsoft 검색 서비스를 중지하고 데이터베이스 및 FT 카탈로그 폴더와 파일을 원래 로컬 드라이브/경로에 복원(Restore)합니다.


SQL Server 간에 동일한 로컬 드라이브/경로에 FT 카탈로그 이동 또는 복사


다음 단계는 하나의 SQL Server 7.0(Server_1)에서 다른 SQL Server 7.0(Server_2)으로 FT 카탈로그 폴더와 파일을 이동 또는 복사하는 방법을 보여 줍니다. 전체 텍스트(Full-Text) 검색이 있는 SQL Server 7.0이 양쪽 서버의 Windows NT 4.0에 설치되고 동일한 데이터베이스 및 테이블 ID가 존재한다고 가정합니다.

양쪽 서버에 동일한 데이터베이스 ID(dbid)가 있으려면 Server_2에는 Server_1보다 데이터베이스 수가 하나 적어야 합니다. 그런 다음 Server_1에서 데이터베이스를 백업하고 Server_2에 복원(Restore)하십시오. 복원(Restore) 작업이 Server_2에서 성공적으로 완료된 다음 전체 텍스트(Full-Text)는 양쪽 데이터베이스를 작동시키고 양쪽 서버에서 FT 카탈로그의 전체 채우기를 시작합니다.

필요하면 Server_2에서 sp_fulltext_catalog 또는 Enterprise Manager(엔터프라이즈 관리자)의 Database Full-Text Catalog 아이콘을 통해 전체 채우기를 중지(진행 중일 때)하고 FT Catalog 이름을 마우스 오른쪽 단추로 누를 수 있습니다. 그러나 항목 개수(FT 인덱스된 행의 수+1), 고유 단어 개수 및 FT 카탈로그 크기가 정확하지 않을 수 있습니다.

Server_2에서 올바른 dbid를 얻기 위해 데이터베이스 dbid를 "바꿔야" 할 경우 sp_detach_dbsp_attach_db를 사용하여 해당 데이터베이스를 분리하고 다시 연결할 수 있습니다. 예를 들어, TestDB(dbid=7) 및 PerfDB(dbid=8)과 같은 데이터베이스가 두 개 있으면 데이터베이스를 둘 다 분리하고 먼저 PerfDB 데이터베이스를 다시 연결한 다음 TestDB 데이터베이스를 다시 연결합니다. dbid가 "바꿔집니다". 즉, TestDB의 dbid는 8이 되고 PerfDB의 dbid는 7이 됩니다. 풀에서 사용할 수 있는 dbid 중 가장 낮은 dbid가 먼저 사용됩니다.

주의 : 이를 수행하기 전에 두 데이터베이스 모두 FT 카탈로그가 없어야 하며 데이터베이스를 분리하기 전에 FT를 사용가능하게 설정해야 합니다. 자세한 정보 절 끝에 있는 "정리 프로시저(Clean-up Procedure)"에서 FT 카탈로그를 삭제하고 데이터베이스에 대해 FT 작동을 금지하는 단계를 참조하십시오.

  1. FT 사용 데이터베이스에 대한 master.dbo.sysdatabases dbid 값이 양쪽 서버 모두에서 같은지 확인합니다.
  2. FT 사용 테이블에 대해 [데이터베이스_이름].dbo.sysobjects id 값이 양쪽 서버에서 동일한지 확인합니다. 테이블의 ID 값을 얻는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서에서 "object_id" 항목을 참조하십시오.
  3. sp_help_fulltext_catalogs 'FT_카탈로그_이름'을 통해 FT 카탈로그 이름 및 로컬 드라이브/경로가 양쪽 서버에서 동일한지 확인합니다.
  4. Microsoft 검색 서비스를 SQL Server Service Manager나 제어판의 서비스 애플릿을 통해 양쪽 서버에서 중지하거나 DOS 명령 프롬프트에 'net stop "Microsoft Search"'를 입력하여 중지합니다. 이때 "Microsoft Search"는 큰따옴표로 묶습니다.
  5. Server_1의 드라이브 문자를 3단계에서 식별한 Server_2의 해당 드라이브 또는 경로에 매핑합니다.
  6. 정식 FT 카탈로그 드라이브 또는 경로 및 폴더 이름을 원본 위치로 사용하고 매핑된 FT 카탈로그 드라이브 또는 경로 및 폴더 이름을 대상 위치로 사용하여 DOS 명령 XCOPY를 통해 Server_1에서 Server_2로 3단계에서 식별한 FT 카탈로그 폴더 및 파일을 복사합니다. XCOPY의 스위치 /I/E를 사용하여 Server_2에저장 프로시저(Stored Procedure)
  7. 필요하면 Server_1에서 DOS 명령 RMDIR /S /Q [FT_카탈로그_드라이브/경로]를 사용하여 Server_1의 FT 카탈로그를 제거할 수 있습니다.
  8. SQL Server Service Manager나 제어판의 서비스 애플릿을 통해 양쪽 서버에서 Microsoft 검색 서비스를 다시 시작하거나 DOS 명령 프롬프트를 통해 'net start "Microsoft Search"'를 입력하여 다시 시작합니다. 이때 "Microsoft Search"는 큰따옴표로 묶습니다.
  9. 새 FT 카탈로그 폴더와 파일이 WHERE 절에 있는 CONTAINS 또는 FREETEXT 조건자를 사용하여 T-SQL SELECT 문을 통해 기능을 수행하는지 확인합니다.

동일한 SQL Server에서 로컬 드라이브/경로 간에 FT 카탈로그 이동 또는 복사

다음 단계는 하나의 SQL Server 7.0(Server_1)에서 FT 카탈로그 폴더와 파일을 다른 로컬 드라이버 또는 경로로 이동 또는 복사하는 방법을 설명합니다(이전 방법에서와 동일한 가정).

  1. sp_help_fulltext_catalogs 'FT_카탈로그_이름'을 통해 FT 카탈로그 이름 및 로컬 드라이브 또는 경로를 확인합니다. 전체 텍스트(Full-Text) 카탈로그 드라이브 문자와 정식 경로를 나중을 위해 기록해 놓습니다.
  2. SQL Server Service Manager나 제어판의 서비스 애플릿을 통해 Microsoft 검색 서비스를 중지하거나 DOS 명령 프롬프트를 통해 'net stop "Microsoft Search"'를 입력하여 중지합니다. 이때 "Microsoft Search"는 큰따옴표로 묶습니다.
  3. 새 FT 카탈로그 로컬 드라이브 또는 경로를 결정합니다.
  4. sp_configureRECONFIGURE 시스템 저장 프로시저(Stored Procedure)를 통해 시스템 테이블 업데이트를 덮어쓰기(Override)로 허용합니다. 그런 다음 [데이터베이스_이름].dbo.sysfulltextcatalogs 경로 열(Column)을 다음과 같은 FT 카탈로그 기본 폴더의 새 로컬 드라이브 또는 경로 대상으로 업데이트합니다. d:\FTData.
  5. DOS 명령 XCOPY를 통해 Server_1에서 Server_2로 1단계에서 식별한 FT 카탈로그 폴더와 파일을 복사합니다. 원본 위치로 정식 FT 카탈로그 드라이브 또는 경로 및 폴더 이름을 원본 위치로 사용하고 새 FT 카탈로그 드라이브 또는 경로를 대상 위치로 사용합니다. XCOPY의 스위치 /I /E를 사용하여 대상 폴더가 없으면 이를 전부 만듭니다.
  6. DOS 명령 RMDIR /S /Q [FT_카탈로그_드라이브/경로]를 사용하여 원본 위치에서 FT 카탈로그 폴더와 파일을 제거합니다.
  7. Windows NT 4.0 Resource Kit의 REGFIND 유틸리티를 사용하여 각 FT_카탈로그_폴더에 대해 다음 HKLM 레지스트리 키 값을 찾아 바꿉니다. 예를 들면, SQL0000500005입니다.
    \SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\[FT_Catalog_Folder]
    \SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\[FT_Catalog_Folder]
    \SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\[FT_Catalog_Folder]
    
    REGFIND 유틸리티 사용 구문에 대한 자세한 내용은 DOS 명령 프롬프트에서 'REGFIND /?'를 입력하십시오. 이때 작은따옴표는 사용하지 않습니다. 또한 -p 및 -r 매개 변수 둘 다에 대해 레지스트리 키를 큰따옴표로 묶으십시오. 예를 들면, 다음과 같습니다.

     
    
       -m \\server_2
       -p \...\"Old_FT_Catalog_Path_and_Folder"
       -r \....\"New_FT_Catalog_Path_and_Folder"
    
    
  8. REGFIND 유틸리티 사용 구문에 대한 자세한 내용은 DOS 명령 프롬프트에서 'REGFIND /?'를 입력하십시오. 이때 작은따옴표는 사용하지 않습니다. 또한 -p 및 -r 매개 변수 둘 다에 대해 레지스트리 키를 큰따옴표로 묶으십시오. 예를 들면, 다음과 같습니다. SQL Server Service Manager나 제어판의 서비스 애플릿을 통해 Microsoft 검색 서비스를 다시 시작하거나 DOS 명령 프롬프트를 통해 'net start "Microsoft Search"'를 입력하여 다시 시작합니다. 이때 "Microsoft Search"는 큰따옴표로 묶습니다.
  9. REGFIND 유틸리티 사용 구문에 대한 자세한 내용은 DOS 명령 프롬프트에서 'REGFIND /?'를 입력하십시오. 이때 작은따옴표는 사용하지 않습니다. 또한 -p 및 -r 매개 변수 둘 다에 대해 레지스트리 키를 큰따옴표로 묶으십시오. 예를 들면, 다음과 같습니다. sp_configureRECONFIGURE 시스템 저장 프로시저(Stored Procedure)를 통해 시스템 테이블 업데이트를 덮어쓰기(Override)로 허용하지 않습니다.
  10. REGFIND 유틸리티 사용 구문에 대한 자세한 내용은 DOS 명령 프롬프트에서 'REGFIND /?'를 입력하십시오. 이때 작은따옴표는 사용하지 않습니다. 또한 -p 및 -r 매개 변수 둘 다에 대해 레지스트리 키를 큰따옴표로 묶으십시오. 예를 들면, 다음과 같습니다. 새 FT 카탈로그 폴더 및 파일은 WHERE 절에 있는 CONTAINS 또는 FREETEXT 조건자를 사용하여 T-SQL SELECT 문을 통해 기능을 수행하는지 확인합니다.



XCOPY의 대안으로 Windows NT 4.0 Resource Kit의 ROBOCOPY 유틸리티를 사용하여 SQL Server의 확장 저장 프로시저(Stored Procedure) xp_cmdshell을 통해 FT 카탈로그 폴더와 파일을 복사 또는 이동할 수 있습니다. 그런 다음 FT 카탈로그의 복사 또는 이동은 SQL 스크립트 또는 저장 프로시저(Stored Procedure)에 넣을 수 있습니다. ROBOCOPY 유틸리티에는 다음 이동 스위치가 있다는 점을 참고하십시오.

폴더와 파일을 이동하는 "/MOVE". (복사한 후 원본에서 삭제합니다.) WSH(Windows Script Host) 및 VBScript를 사용하여 REGFIND 유틸리티가 제공하는 것과 같은 기능을 얻을 수 있습니다.

Windows NT 4.0 Resource Kit는 Windows NT 4.0 운영 체제뿐만 아니라 Windows NT 4.0 Resource Kit 지원 도구에 포함될 수 있는 더 많은 도구 및 유틸리티에 대한 자세한 정보를 제공합니다. 자세한 내용은 다음 Microsoft TechNet 사이트에서 참조하십시오.
http://www.microsoft.com/technet/
앞의 세 번째 방법은 첫 번째 두 방법에서 적합한 단계를 결합하여 서로 다른 로컬 드라이브 또는 경로가 있는 두 SQL Server 간에 FT 카탈로그를 이동 또는 복사할 때 사용할 수 있습니다. 다음 자세한 정보 절은 이를 수행하는 알맞는 프로시저를 제공합니다.



추가 정보

다음 SQL 스크립트는 SQL Server 7.0(Server_1)에서 다른 SQL Server 7.0(Server_2)로 그리고 Server_2에 있는 다른 로컬 드라이브 또는 경로 위치로 FT 카탈로그 폴더를 이동하거나 "마이그레이션"하는 방법을 설명합니다. 전체 텍스트(Full-Text) 검색 기능이 있는 SQL Server 7.0이 Windows NT 4.0 Server에 설치되어 있고 양쪽 서버에 동일한 데이터베이스와 테이블 ID가 있다고 가정합니다.

이 설명을 위해 Pubs(dbid = 5) 데이터베이스와 테이블 pub_info(id = 645577338)에서 전체 텍스트(Full-Text)를 사용할 수 있으며 양쪽 서버에 채워집니다. 제대로 실행하기 위해 Server_2를 사용 중인 서버 이름으로 바꾸고 FT 카탈로그 폴더 이름 및 드라이브 또는 경로를 사용 중인 FT 카탈로그 폴더 이름 및 드라이브 또는 경로로 바꿉니다.

사용자는 서버의 로컬 관리자 그룹의 구성원(Member)으로 로그온해야 하며 SQL Server의 sysadmin 서버 역할의 구성원(Member) 또는 'sa'로 로그온해야 하고 다음 SQL 스크립트를 실행하려면 데이터베이스의 데이터베이스 소유자(DBO)이어야 합니다.

-- 양쪽 서버에서 다음 SQL 스크립트를 실행하십시오.
use pubs
go
sp_fulltext_service 'clean_up'
go
sp_fulltext_database 'enable'
go

-- Creates and Activates the FT Catalog: PubInfo, if it does not exist.
-- Drops, Re-creates and Activates the FT Catalog: PubInfo, if it does exist.
IF OBJECTPROPERTY ( object_id('pub_info'),'TableHasActiveFulltextIndex') = 1
BEGIN
    print 'Table pub_info is Full-Text Enabled, dropping Full-Text Index & Catalog...'
    EXEC sp_fulltext_table 'pub_info', 'drop'
    EXEC sp_fulltext_catalog 'PubInfo', 'drop'
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog, Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
ELSE IF OBJECTPROPERTY ( object_id('pub_info'),'TableHasActiveFulltextIndex') = 0
BEGIN
    print 'Table pub_info is NOT Full-Text Enabled, creating FT Catalog, Index & Activating...'
    EXEC sp_fulltext_catalog 'PubInfo', 'create'
    EXEC sp_fulltext_table 'pub_info', 'create', 'PubInfo', 'UPKCL_pubinfo'
    EXEC sp_fulltext_column 'pub_info', 'pub_id', 'add'
    EXEC sp_fulltext_column 'pub_info', 'pr_info', 'add'
    EXEC sp_fulltext_table 'pub_info', 'activate'
END
go --- Confirm Database ID, Object ID, FT Catalog ID and FT folder(default) location.
select dbid, name from master.dbo.sysdatabases where dbid = DB_ID('pubs') -- dbid = 5
go
select id, name from pubs.dbo.sysobjects where id = object_id('pub_info') 
go
sp_help_fulltext_catalogs 'PubInfo' 
go
sp_help_fulltext_tables 'PubInfo', 'pub_info' 
go
sp_help_fulltext_columns 'pub_info' 
go
exec master..xp_cmdshell 'dir d:\MSSQL70\FTDATA'
go

--- After Full-Text enabled and activated, Start Full Crawl/Population
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'start_full'
--
--- Wait for crawl to complete
--  NOTE: For Larger Tables Increase the WAITFOR DELAY Time Appropriately
--
DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to get correct FT Property info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount) - 1) as varchar(12)) + char(09) +
      'Nbr. of Unique FT Words = ' +  CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go

-- Confirm FT Population, 1 row should be returned (pub_id = 0736). 
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go

-- Stop the Microsoft Search Service on BOTH servers
exec master..xp_cmdshell 'net stop "Microsoft Search"'
go

-- 원본 서버(Server_1)에서 다음 SQL 스크립트를 실행하십시오.
use pubs
go
-- Map a Drive letter to the destination server.
exec master..xp_cmdshell 'NET USE K: \\server_2\[drive]$'
go
-- Copy the destination server's FT Catalog folder and files as a backup.
exec master..xp_cmdshell 'ROBOCOPY K:\MSSQL70\FTDATA\SQL0000500005 K:\MSSQL70\BACKUP\SQL0000500005 /E /NP'
go
-- Remove the destination server's FT Catalog folder and files.
exec master..xp_cmdshell 'RMDIR /S /Q K:\MSSQL70\FTDATA\SQL0000500005'
go
-- Copy the SOURCE FT Catalog folder and files to the destination server's NEW FT Catalog location.
exec master..xp_cmdshell 'ROBOCOPY D:\MSSQL70\FTDATA\SQL0000500005 K:\FTData\SQL0000500005 /E /NP'
go
-- Re-Start the Microsoft Search Service.
exec master..xp_cmdshell 'net start "Microsoft Search"'
go
-- Remove the mapped Drive letter to the destination server, for example K:\.
exec master..xp_cmdshell 'NET USE K: /delete'
go

-- 다음 SQL 스크립트는 대상 서버(Server_2)에서 실행해야 합니다.
use master
go
-- Enable System Table UPDATEs
sp_configure allow,1
go
reconfigure with override
go

use pubs
go
-- Record FT Catalog information (Note: path = NULL)
select * from sysfulltextcatalogs
go
-- UPDATE the FT Catalog information with the NEW FT Catalog location
UPDATE sysfulltextcatalogs set path = 'E:\FTData'
   WHERE ftcatid = 5
go
-- Record FT Catalog info. (Note: path = E:\FTData)
select * from sysfulltextcatalogs
go

use master
go
-- Disenable System Table UPDATEs
sp_configure allow,0
go
reconfigure with override
go

-- CAUTION !! It is HIGHLY Recommended that you BACKUP your Registry Hive BEFORE proceeding !!

-- Search and Replace HKLM "Gather" Registry Keys with NEW FT Catalog folder location (10 row(s) affected):
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p \Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gather\SQLServer\SQL0000500005 "E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and Replace HKLM "Gatherer Manager" Registry Keys with NEW FT Catalog folder location (6 row(s) affected):
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p "\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Gathering Manager\Applications\SQLServer\Projects\SQL0000500005" "E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go
-- Search and Replace HKLM Indexer Registry Keys with NEW FT Catalog folder location (6 row(s) affected):
exec master..xp_cmdshell 'REGFIND -m \\server_2 -p "\Registry\Machine\SOFTWARE\Microsoft\Search\1.0\Indexer\SQLServer\SQL0000500005" "E:\MSSQL70\FTDATA\SQL0000500005" -r "E:\FTData\SQL0000500005"'
go

-- Re-Start the Microsoft Search Service
exec master..xp_cmdshell 'net start "Microsoft Search"'
go

-- Confirm FT Population, 1 row should be returned (pub_id = 0736). 
use pubs
go
SELECT pub_id, pr_info FROM pub_info WHERE CONTAINS(pr_info, 'moon')
go

-- 다음 SQL 코드를 통해 전체 텍스트(Full-Text) 채우기가 진행 중일 때 이를 "중지"할 수 있습니다.

주의: 실행될 때 항목 개수(FT 인덱스된 행의 수 + 1),

-- 고유 단어 개수 및 FT 카탈로그 크기는 정확하지 않을 수 있습니다!
-- Execute after starting Full Crawl/Population through another connection.
use pubs
go
BEGIN
SET NOCOUNT ON
EXEC sp_fulltext_catalog 'PubInfo', 'stop'

--
--- Wait for crawl to stop

--  NOTE: For Larger Tables Increase the WAITFOR DELAY Time Appropriately
--

DECLARE @status int, @itemCount int, @keyCount int, @indexSize int
SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
WHILE (@status <> 0)
BEGIN
  WAITFOR DELAY '00:00:01' -- wait for 1 second before checking FT Populatestatus...
  SELECT @status = FullTextCatalogProperty('PubInfo', 'populatestatus')
END
WAITFOR DELAY '00:00:05' -- wait for 5 seconds to get correct FT Property info (add more time for larger tables)...
SET @itemCount = FullTextCatalogProperty('PubInfo', 'itemcount')
SET @keyCount = FullTextCatalogProperty('PubInfo', 'uniquekeycount')
SET @indexSize = FullTextCatalogProperty('PubInfo', 'indexsize')
PRINT 'Nbr. of Rows FT Indexed = ' + CAST((CONVERT(varchar(10), @itemCount) - 1) as varchar(12)) + char(09) +
      'Nbr. of Unique FT Words = ' +  CONVERT(varchar(10), @keyCount) + char(09)
SET NOCOUNT OFF
END
go
-- Can return: Nbr. of Rows FT Indexed = -1	Nbr. of Unique FT Words = 0 
-- (depending upon when the Crawl/Population was stopped)


정리 프로시저(Clean-up Procedure)

-- 양쪽 서버에서 다음 SQL 스크립트를 실행하십시오.

-- FT 인덱스, FT 카탈로그를 삭제하고 Pubs 데이터베이스에서 전체 텍스트(Full-Text) 검색을 사용할 수 없도록 합니다.
use pubs
go
sp_fulltext_table 'pub_info', 'drop'
go
sp_fulltext_catalog 'PubInfo', 'drop'
go
sp_fulltext_database 'disable'
go
sp_fulltext_service 'clean_up'
go
-- end SQL Script !

참조

데이터베이스에 대해 dbid를 얻는 방법에 대한 자세한 내용은 SQL Server 온라인 설명서에서 "DB_ID" 항목을 참조하십시오.

데이터베이스에서 FT를 사용할 수 있는지 파악하려면 SQL Server 온라인 설명서에서 "DATABASEPROPERTY", "IsFulltextEnabled" 항목을 참조하십시오.

ftcatid에 대한 자세한 내용은 SQL Server 온라인 설명에서 "sp_help_fulltext_catalogs" 또는 "OBJECTPROPERTY", "TableFulltextCatalogId" 항목을 참조하십시오.

속성

기술 자료: 240867 - 마지막 검토: 2004년 9월 21일 화요일 - 수정: 5.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 7.0 Enterprise Edition
키워드:?
kbsqlserv700 kbhowto KB240867

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com