방법: 전체 텍스트 키 열 조회(Transact-SQL)
일반적으로 CONTAINSTABLE 또는 FREETEXTTABLE 행 집합 반환 함수는 기본 테이블과 조인되어야 합니다. 이러한 경우 고유 키 열 이름을 알아야 합니다. 그러면 지정된 고유 인덱스가 전체 텍스트 키로 사용되는지 여부를 확인하고 전체 텍스트 키 열의 식별자를 가져올 수 있습니다.
지정된 고유 인덱스가 전체 텍스트 키 열로 사용되는지 여부를 확인하려면
SELECT 문을 사용하여 INDEXPROPERTY 함수를 호출합니다. 함수 호출 시 다음과 같이 OBJECT_ID 함수를 사용하여 테이블 이름(table_name)을 테이블 ID로 변환하고 테이블의 고유 인덱스 이름을 지정한 다음 IsFulltextKey 인덱스 속성을 지정하십시오.
SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );
이 문은 전체 텍스트 키 열의 고유성을 강제 적용하기 위해 인덱스가 사용되면 1을 반환하고, 그렇지 않으면 0을 반환합니다.
자세한 내용은 이 항목의 뒷부분에 나오는 예 1을 참조하십시오.
전체 텍스트 키 열의 식별자를 찾으려면
전체 텍스트를 사용하도록 설정된 각 테이블에는 해당 테이블에 고유 행을 강제 적용하는 데 사용되는 열(고유키 열)이 있습니다. OBJECTPROPERTYEX 함수에서 얻을 수 있는 TableFulltextKeyColumn 속성에는 고유 키 열의 열 ID가 포함됩니다.
이 식별자를 가져오려면 SELECT 문을 사용하여 OBJECTPROPERTYEX 함수를 호출하면 됩니다. 다음과 같이 OBJECT_ID 함수를 사용하여 테이블 이름(table_name)을 테이블 ID로 변환하고 TableFulltextKeyColumn 속성을 지정하십시오.
SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
자세한 내용은 이 항목의 뒷부분에 나오는 예 "2. 전체 텍스트 키 열의 식별자 가져오기" 및 "3. 고유 키 열 이름 가져오기"를 참조하십시오.
예
다음 예에서는 모두 AdventureWorks2008R2 데이터베이스의 Document 테이블을 사용합니다.
1. 지정된 인덱스가 전체 텍스트 키 열로 사용되는지 여부 확인
다음 예에서는 PK_Document_DocumentID 인덱스가 전체 텍스트 키 열의 고유성을 강제 적용하는 데 사용되는지 여부를 확인합니다.
USE AdventureWorks2008R2;
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
이 예에서는 전체 텍스트 키 열의 고유성을 강제 적용하기 위해 PK_Document_DocumentID 인덱스가 사용되면 1을 반환하고, 그렇지 않으면 0 또는 NULL을 반환합니다. NULL은 잘못된 인덱스 이름이 사용 중이거나, 인덱스 이름이 테이블과 일치하지 않거나, 테이블이 존재하지 않음 등을 의미합니다.
2. 전체 텍스트 키 열의 식별자 가져오기
다음 예에서는 전체 텍스트 키 열의 식별자나 NULL을 반환합니다. NULL은 잘못된 인덱스 이름이 사용 중이거나, 인덱스 이름이 테이블과 일치하지 않거나, 테이블이 존재하지 않음 등을 의미합니다.
USE AdventureWorks2008R2;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
3. 고유 키 열 이름 가져오기
다음 예에서는 고유 키 열의 식별자를 사용하여 해당 고유 키 열의 이름을 프로그래밍 방식으로 가져오는 방법을 보여 줍니다.
USE AdventureWorks2008R2;
GO
DECLARE @key_column sysname;
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn')
);
SELECT @key_column AS 'Unique Key Column';
GO
이 예에서는 Document 테이블의 고유 키 열 이름인 DocumentID가 포함된 단일 행을 표시하는 Unique Key Column라는 결과 집합 열을 반환합니다. 이 쿼리에 잘못된 인덱스 이름이 포함되어 있거나, 인덱스 이름이 테이블과 일치하지 않거나, 테이블이 존재하지 않는 경우에는 NULL이 반환됩니다.