sp_fulltext_table(Transact-SQL)
적용 대상: SQL Server Azure Synapse Analytics
전체 텍스트 인덱싱을 위해 테이블을 표시하거나 표시 해제합니다.
Important
SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 CREATE FULLTEXT INDEX, ALTER FULLTEXT INDEX 및 DROP FULLTEXT INDEX를 사용합니다.
구문
sp_fulltext_table
[ @tabname = ] N'tabname'
, [ @action = ] 'action'
[ , [ @ftcat = ] N'ftcat' ]
[ , [ @keyname = ] N'keyname' ]
[ ; ]
인수
[ @tabname = ] N'tabname'
한 부분 또는 두 부분으로 구성된 테이블 이름입니다. 테이블은 반드시 현재 데이터베이스에 있어야 합니다. @tabname nvarchar(517)이며 기본값은 없습니다.
[ @action = ] 'action'
수행할 작업입니다. @action 기본값이 없는 nvarchar(50)이며 이러한 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
만들기 | @tabname 참조하는 테이블의 전체 텍스트 인덱스에 대한 메타데이터를 만들고 이 테이블의 전체 텍스트 인덱스 데이터가 @ftcat 상주하게 지정합니다. 또한 이 작업은 @keyname 전체 텍스트 키 열로 사용하도록 지정합니다. 이 고유한 인덱스는 반드시 이미 존재해야 하며, 테이블의 한 열에서 정의되어야 합니다. 전체 텍스트 카탈로그가 채워질 때까지 이 테이블에 대해 전체 텍스트 검색을 수행할 수 없습니다. |
Drop | @tabname 대한 전체 텍스트 인덱스 메타데이터를 삭제합니다. 전체 텍스트 인덱스가 활성 상태이면 삭제되기 전에 자동으로 비활성화됩니다. 전체 텍스트 인덱스를 삭제하기 전에 열을 제거할 필요는 없습니다. |
활성화 | 비활성화된 후 @tabname 위해 전체 텍스트 인덱스 데이터를 수집할 수 있는 기능을 활성화합니다. 전체 텍스트 인덱스가 활성화되려면 먼저 하나 이상의 열이 전체 텍스트 인덱스로 참여해야 합니다. 인덱싱을 위해 첫 번째 열이 추가되는 즉시 전체 텍스트 인덱스가 자동으로 활성화됩니다(채우기용). 마지막 열이 인덱스에서 삭제되면 인덱스가 비활성 상태가 됩니다. 변경 내용 추적이 진행 중인 경우 비활성화된 인덱스를 활성화하면 채우기가 새로 시작됩니다. 실제로 전체 텍스트 인덱스를 채웁니다. 하지만 다음 전체 텍스트 인덱스 채우기 중에 @tabname 행을 검색할 수 있도록 파일 시스템의 전체 텍스트 카탈로그에 테이블을 등록하기만 하면 됩니다. |
Deactivate | @tabname 대해 전체 텍스트 인덱스 데이터를 더 이상 수집할 수 없도록 @tabname 전체 텍스트 인덱스를 비활성화합니다. 전체 텍스트 인덱스 메타데이터는 그대로 유지되며 테이블을 다시 활성화할 수 있습니다. 변경 내용 추적이 설정되면 활성 인덱스를 비활성화하면 인덱스의 상태가 중지됩니다. 진행 중인 채우기가 중지되고 더 이상 변경 내용이 인덱스에 전파되지 않습니다. |
start_change_tracking | 전체 텍스트 인덱스의 증분 채우기를 시작합니다. 테이블에 타임스탬프가 없는 경우 전체 텍스트 인덱스의 전체 채우기를 시작합니다. 테이블의 변경 내용 추적을 시작합니다. 전체 텍스트 변경 내용 추적은 이미지, 텍스트 또는 ntext 형식의 전체 텍스트 인덱싱된 열에서 수행되는 WRITETEXT 또는 UPDATETEXT 작업을 추적하지 않습니다. |
stop_change_tracking | 테이블에 대한 변경 내용 추적을 중지합니다. |
update_index | 추적된 변경 내용의 현재 집합을 전체 텍스트 인덱스로 전파합니다. |
start_background_updateindex | 추적된 변경 내용이 발생하면 전체 텍스트 인덱스로 전파를 시작합니다. |
stop_background_updateindex | 추적된 변경 내용이 발생하면 전체 텍스트 인덱스로 전파를 중지합니다. |
start_full | 테이블에 대한 전체 텍스트 인덱스의 전체 채우기를 시작합니다. |
start_incremental | 테이블에 대한 전체 텍스트 인덱스의 증분 채우기를 시작합니다. |
Stop | 전체 또는 증분 채우기를 중단합니다. |
[ @ftcat = ] N'ftcat'
만들기 작업에 대한 유효한 기존 전체 텍스트 카탈로그 이름입니다. 다른 모든 작업의 경우 이 매개 변수는 NULL이어야 합니다. @ftcat sysname이며 기본값은 .입니다NULL
.
[ @keyname = ] N'keyname'
만들기 작업에 대한 @tabname 유효한 단일 키 열의 고유한 nullable이 아닌 인덱스입니다. 다른 모든 작업의 경우 이 매개 변수는 NULL이어야 합니다. @keyname sysname이며 기본값은 .입니다NULL
.
반환 코드 값
0
(성공) 또는 1
(실패).
결과 집합
없음.
설명
특정 테이블에 대해 전체 텍스트 인덱스가 비활성화되면 기존 전체 텍스트 인덱스는 다음 전체 채우기까지 그대로 유지됩니다. 그러나 SQL Server가 비활성화된 테이블에 대한 쿼리를 차단하기 때문에 이 인덱스는 사용되지 않습니다.
테이블이 다시 활성화되고 인덱스가 다시 채워지지 않으면 기존 인덱스는 나머지 전체 텍스트 사용 열에 대한 쿼리에 계속 사용할 수 있지만 새 전체 텍스트 사용 열은 사용할 수 없습니다. 삭제된 열의 데이터는 전체 텍스트 열 검색을 지정하는 쿼리에서 일치합니다.
전체 텍스트 인덱싱을 위해 테이블을 정의한 후 해당 열의 데이터 형식을 변경하거나 전체 텍스트 고유 키를 한 열에서 다른 열로 변경하여 전체 텍스트 고유 키 열을 한 데이터 형식에서 다른 데이터 형식으로 전환하면 전체 다시 채우기 없이 후속 쿼리 중에 오류가 발생하고 오류 메시지가 반환될 수 있습니다.
전체 텍스트 검색 키 값 key_value data_type 형식으로 변환하지 못했습니다.
이 오류를 방지하려면 삭제 작업을 sp_fulltext_table
사용하여 이 테이블에 대한 전체 텍스트 정의를 삭제하고 사용 sp_fulltext_table
sp_fulltext_column
및 다시 정의합니다.
전체 텍스트 키 열은 900바이트 이하로 정의해야 합니다. 성능상의 이유로 키 열의 크기가 가능한 한 작은 것이 좋습니다.
사용 권한
sysadmin 고정 서버 역할의 멤버, db_owner 및 db_ddladmin 고정 데이터베이스 역할 또는 전체 텍스트 카탈로그에 대한 참조 권한이 있는 사용자만 실행할 sp_fulltext_table
수 있습니다.
예제
A. 전체 텍스트 인덱싱에 테이블 사용
다음 예에서는 Document
데이터베이스의 AdventureWorks
테이블에 대한 전체 텍스트 인덱스 메타데이터를 만듭니다. Cat_Desc
는 전체 텍스트 카탈로그이고, PK_Document_DocumentID
는 Document
의 고유한 단일 열 인덱스입니다.
USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document',
'create',
'Cat_Desc',
'PK_Document_DocumentID';
--Add some columns
EXEC sp_fulltext_column 'Production.Document',
'DocumentSummary',
'add';
-- Activate the full-text index
EXEC sp_fulltext_table 'Production.Document',
'activate';
GO
B. 변경 내용 활성화 및 전파
다음 예에서는 변경될 때마다 추적한 변경 내용을 활성화하여 전체 텍스트 인덱스로 전파를 시작합니다.
USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'Start_change_tracking';
EXEC sp_fulltext_table 'Production.Document', 'Start_background_updateindex';
GO
C. 전체 텍스트 인덱스 제거
다음 예에서는 Document
데이터베이스의 AdventureWorks
테이블에 대한 전체 텍스트 인덱스 메타데이터를 제거합니다.
USE AdventureWorks2022;
GO
EXEC sp_fulltext_table 'Production.Document', 'drop';
GO