OBJECTPROPERTY(Transact-SQL)
업데이트: 2006년 12월 12일
현재 데이터베이스의 스키마 범위 개체에 대한 정보를 반환합니다. 스키마 범위 개체의 목록을 보려면 sys.objects(Transact-SQL)를 참조하십시오. DDL(데이터 정의 언어) 트리거 및 이벤트 알림과 같이 스키마 범위가 아닌 개체에 대해서는 이 함수를 사용할 수 없습니다.
구문
OBJECTPROPERTY ( id , property )
인수
- id
현재 데이터베이스에 있는 개체의 ID를 나타내는 식입니다. id는 int이며 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.
property
id로 지정한 개체에 대해 반환될 정보를 나타내는 식입니다. property는 다음 값 중 하나일 수 있습니다.[!참고] 달리 언급하지 않는 한 property가 유효한 속성 이름이 아니거나, id가 유효한 개체 ID가 아니거나, id가 지정된 property에 대해 지원되지 않는 개체 유형이거나 또는 호출자가 개체의 메타데이터를 볼 수 있는 권한이 없는 경우에는 NULL이 반환됩니다.
속성 이름
반환 유형
int
예외
오류가 발생하거나 호출자가 개체를 볼 수 있는 권한을 갖고 있지 않으면 NULL을 반환합니다.
SQL Server 2005에서 사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 즉, 사용자가 개체에 대한 사용 권한이 없으면 OBJECTPROPERTY와 같은 메타데이터 내보내기 기본 제공 함수가 NULL을 반환합니다. 자세한 내용은 메타데이터 표시 유형 구성 및 메타데이터 표시 유형 문제 해결을 참조하십시오.
주의
데이터베이스 엔진에서는 object_id가 현재 데이터베이스 컨텍스트에 있다고 가정합니다. 다른 데이터베이스의 object_id를 참조하는 쿼리는 NULL 또는 잘못된 결과를 반환합니다. 예를 들어 다음 쿼리에서 현재 데이터베이스 컨텍스트는 master
데이터베이스입니다. 데이터베이스 엔진은 쿼리에 지정된 데이터베이스가 아니라 현재 데이터베이스에서 object_id에 대한 속성 값을 반환하려고 시도합니다. master
데이터베이스에는 vEmployee
뷰가 없으므로 이 쿼리는 잘못된 결과를 반환합니다.
USE master;
GO
SELECT OBJECTPROPERTY(OBJECT_ID(N'AdventureWorks.HumanResources.vEmployee'), 'IsView');
GO
OBJECTPROPERTY(view_id, 'IsIndexable')는 IsIndexable 속성 평가에 뷰 정의의 구문 분석, 정규화 및 부분 최적화를 요구하므로 많은 컴퓨터 리소스를 사용할 수 있습니다. IsIndexable 속성은 인덱싱 가능한 테이블이나 뷰를 식별할 수 있지만 인덱스 키에 대한 특정한 요구가 만족되지 않으면 인덱스가 실제로 생성되지 않을 수 있습니다. 자세한 내용은 CREATE INDEX(Transact-SQL)를 참조하십시오.
OBJECTPROPERTY(table_id, 'TableHasActiveFulltextIndex')는 인덱스를 위해 적어도 하나의 테이블 열을 추가한 경우 값 1(true)을 반환합니다. 전체 텍스트 인덱싱은 첫 번째 열이 인덱싱용으로 추가되자마자 채우기용으로 활성화됩니다.
테이블이 생성될 때 QUOTED IDENTIFIER 옵션이 OFF로 설정되어 있는 경우에도 해당 테이블의 메타데이터에는 항상 ON으로 저장됩니다. 따라서 OBJECTPROPERTY(table_id, 'IsQuotedIdentOn')는 항상 값 1(true)을 반환합니다.
예
1. 개체가 테이블임을 확인
다음 예에서는 UnitMeasure
가 AdventureWorks
데이터베이스에 있는 테이블인지 테스트하는 방법을 보여 줍니다.
USE AdventureWorks;
GO
IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 1
PRINT 'UnitMeasure is a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') = 0
PRINT 'UnitMeasure is not a table.'
ELSE IF OBJECTPROPERTY (OBJECT_ID(N'Production.UnitMeasure'),'ISTABLE') IS NULL
PRINT 'ERROR: UnitMeasure is not a valid object.';
GO
2. 스칼라 값 사용자 정의 함수가 결정적인지 확인
다음 예에서는 money 값을 반환하는 사용자 정의 스칼라 값 함수인 ufnGetProductDealerPrice
가 결정적인지 여부를 테스트하는 방법을 보여 줍니다.
USE AdventureWorks;
GO
SELECT OBJECTPROPERTY(OBJECT_ID('dbo.ufnGetProductDealerPrice'), 'IsDeterministic');
GO
결과 집합은 ufnGetProductDealerPrice
가 결정적 함수가 아님을 보여 줍니다.
-----
0
3. 특정 스키마에 속하는 개체 찾기
다음 예에서는 SchemaId
속성을 사용하여 Production
스키마에 속하는 모든 개체를 반환합니다.
USE AdventureWorks;
GO
SELECT name, object_id, type_desc
FROM sys.objects
WHERE OBJECTPROPERTY(object_id, N'SchemaId') = SCHEMA_ID(N'Production')
ORDER BY type_desc, name;
GO
참고 항목
참조
COLUMNPROPERTY(Transact-SQL)
메타데이터 함수(Transact-SQL)
OBJECTPROPERTYEX(Transact-SQL)
ALTER AUTHORIZATION(Transact-SQL)
TYPEPROPERTY(Transact-SQL)
sys.objects(Transact-SQL)
관련 자료
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 12월 12일 |
|
2006년 7월 17일 |
|
2005년 12월 5일 |
|