OBJECTPROPERTY(Transact-SQL)

업데이트: 2006년 12월 12일

현재 데이터베이스의 스키마 범위 개체에 대한 정보를 반환합니다. 스키마 범위 개체의 목록을 보려면 sys.objects(Transact-SQL)를 참조하십시오. DDL(데이터 정의 언어) 트리거 및 이벤트 알림과 같이 스키마 범위가 아닌 개체에 대해서는 이 함수를 사용할 수 없습니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

OBJECTPROPERTY ( id , property ) 

인수

  • id
    현재 데이터베이스에 있는 개체의 ID를 나타내는 식입니다. idint이며 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.
  • 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. 개체가 테이블임을 확인

다음 예에서는 UnitMeasureAdventureWorks 데이터베이스에 있는 테이블인지 테스트하는 방법을 보여 줍니다.

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)

관련 자료

사용자와 스키마 분리

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 12월 12일

새로운 내용
  • 서비스 팩 2에서 사용할 수 있는 TableHasVarDecimalStorageFormat 속성을 추가했습니다.

2006년 7월 17일

새로운 내용
  • 예외 섹션을 추가했습니다.

2005년 12월 5일

변경된 내용
  • IsTableFunctionIsScalarFunction 속성에 대한 정의를 수정했습니다.
  • 예 3을 수정했습니다.