다음을 통해 공유


OBJECTPROPERTY(Transact-SQL)

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

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

구문

OBJECTPROPERTY ( id , property ) 

인수

  • id
    현재 데이터베이스에 있는 개체의 ID를 나타내는 식입니다. id는 int이며 현재 데이터베이스 컨텍스트에서 스키마 범위 개체로 간주됩니다.

  • property
    id가 지정한 개체에 대해 반환되는 정보를 나타내는 식입니다. property에는 다음 값 중 하나를 사용할 수 있습니다.

    [!참고]

    달리 언급하지 않는 한 property가 유효한 속성 이름이 아니거나, id가 유효한 개체 ID가 아니거나, id가 지정된 property에 대해 지원되지 않는 개체 형식이거나, 호출자가 개체의 메타데이터를 볼 수 있는 권한이 없는 경우에는 NULL이 반환됩니다.

    속성 이름

    개체 형식

    설명 및 반환 값

    CnstIsClustKey

    제약 조건

    클러스터형 인덱스가 있는 PRIMARY KEY 제약 조건

    1 = True

    0 = False

    CnstIsColumn

    제약 조건

    단일 열에 대한 CHECK, DEFAULT 또는 FOREIGN KEY 제약 조건

    1 = True

    0 = False

    CnstIsDeleteCascade

    제약 조건

    ON DELETE CASCADE 옵션이 지정된 FOREIGN KEY 제약 조건

    1 = True

    0 = False

    CnstIsDisabled

    제약 조건

    비활성화된 제약 조건입니다.

    1 = True

    0 = False

    CnstIsNonclustKey

    제약 조건

    비클러스터형 인덱스가 있는 PRIMARY KEY 또는 UNIQUE 제약 조건입니다.

    1 = True

    0 = False

    CnstIsNotRepl

    제약 조건

    NOT FOR REPLICATION 키워드를 사용하여 제약 조건을 정의합니다.

    1 = True

    0 = False

    CnstIsNotTrusted

    제약 조건

    기존 행을 검사하지 않고 제약 조건을 사용했으므로 제약 조건이 모든 행에 적용되지 않을 수도 있습니다.

    1 = True

    0 = False

    CnstIsUpdateCascade

    제약 조건

    ON UPDATE CASCADE 옵션이 지정된 FOREIGN KEY 제약 조건

    1 = True

    0 = False

    ExecIsAfterTrigger

    트리거

    AFTER 트리거입니다.

    1 = True

    0 = False

    ExecIsAnsiNullsOn

    Transact-SQL 함수, Transact-SQL 프로시저, Transact-SQL 트리거, 뷰

    만든 시간의 ANSI_NULLS 설정입니다.

    1 = True

    0 = False

    ExecIsDeleteTrigger

    트리거

    DELETE 트리거입니다.

    1 = True

    0 = False

    ExecIsFirstDeleteTrigger

    트리거

    테이블에 대해 DELETE가 실행될 때 처음으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsFirstInsertTrigger

    트리거

    테이블에 대해 INSERT가 실행될 때 처음으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsFirstUpdateTrigger

    트리거

    테이블에 대해 UPDATE가 실행될 때 처음으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsInsertTrigger

    트리거

    INSERT 트리거입니다.

    1 = True

    0 = False

    ExecIsInsteadOfTrigger

    트리거

    INSTEAD OF 트리거입니다.

    1 = True

    0 = False

    ExecIsLastDeleteTrigger

    트리거

    테이블에 대해 DELETE가 실행될 때 마지막으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsLastInsertTrigger

    트리거

    테이블에 대해 INSERT가 실행될 때 마지막으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsLastUpdateTrigger

    트리거

    테이블에 대해 UPDATE가 실행될 때 마지막으로 실행되는 트리거입니다.

    1 = True

    0 = False

    ExecIsQuotedIdentOn

    Transact-SQL 함수, Transact-SQL 프로시저, Transact-SQL 트리거, 뷰

    생성 시의 QUOTED_IDENTIFIER 설정

    1 = True

    0 = False

    ExecIsStartup

    프로시저

    시작 프로시저입니다.

    1 = True

    0 = False

    ExecIsTriggerDisabled

    트리거

    비활성화된 트리거입니다.

    1 = True

    0 = False

    ExecIsTriggerNotForRepl

    트리거

    NOT FOR REPLICATION으로 정의된 트리거입니다.

    1 = True

    0 = False

    ExecIsUpdateTrigger

    트리거

    UPDATE 트리거입니다.

    1 = True

    0 = False

    HasAfterTrigger

    테이블, 뷰

    테이블이나 뷰에 AFTER 트리거가 있습니다.

    1 = True

    0 = False

    HasDeleteTrigger

    테이블, 뷰

    테이블이나 뷰에 DELETE 트리거가 있습니다.

    1 = True

    0 = False

    HasInsertTrigger

    테이블, 뷰

    테이블이나 뷰에 INSERT 트리거가 있습니다.

    1 = True

    0 = False

    HasInsteadOfTrigger

    테이블, 뷰

    테이블이나 뷰에 INSTEAD OF 트리거가 있습니다.

    1 = True

    0 = False

    HasUpdateTrigger

    테이블, 뷰

    테이블이나 뷰에 UPDATE 트리거가 있습니다.

    1 = True

    0 = False

    IsAnsiNullsOn

    Transact-SQL 함수, Transact-SQL 프로시저, 테이블, Transact-SQL 트리거, 뷰

    테이블에 대한 ANSI NULLS 옵션을 ON으로 지정합니다. 이는 Null 값에 대한 모든 비교가 UNKNOWN으로 계산된다는 의미입니다. 이 설정은 테이블이 존재하는 한 계산 열과 제약 조건을 포함하여 테이블 정의 내의 모든 식에 적용됩니다.

    1 = True

    0 = False

    IsCheckCnst

    임의의 스키마 범위 개체

    CHECK 제약 조건입니다.

    1 = True

    0 = False

    IsConstraint

    임의의 스키마 범위 개체

    열 또는 테이블에 대한 단일 열 CHECK, DEFAULT 또는 FOREIGN KEY 제약 조건입니다.

    1 = True

    0 = False

    IsDefault

    임의의 스키마 범위 개체

    바운드 기본값입니다.

    1 = True

    0 = False

    IsDefaultCnst

    임의의 스키마 범위 개체

    DEFAULT 제약 조건입니다.

    1 = True

    0 = False

    IsDeterministic

    함수, 뷰

    함수 또는 뷰의 결정성 속성

    1 = 결정적

    0 = 비결정적

    IsEncrypted

    Transact-SQL 함수, Transact-SQL 프로시저, 테이블, Transact-SQL 트리거, 뷰

    모듈 문의 원본 텍스트가 난독 처리된 형식으로 변환되었음을 나타냅니다. 난독 처리된 출력은 SQL Server 2005의 카탈로그 뷰 어디에서도 직접 표시되지 않습니다. 시스템 테이블 또는 데이터베이스 파일에 대한 액세스 권한이 없는 사용자는 난독 처리된 텍스트를 검색할 수 없습니다. 그러나 DAC 포트를 통해 시스템 테이블에 액세스하거나 데이터베이스 파일에 직접 액세스할 수 있는 사용자는 난독 처리된 텍스트를 사용할 수 있습니다. 또한 디버거를 서버 프로세스에 연결할 수 있는 사용자는 런타임에 메모리에서 원래 프로시저를 검색할 수 있습니다.

    1 = 암호화됨

    0 = 암호화되지 않음

    기본 데이터 형식: int

    IsExecuted

    임의의 스키마 범위 개체

    개체를 실행할 수 있습니다(뷰, 프로시저, 함수 또는 트리거).

    1 = True

    0 = False

    IsExtendedProc

    임의의 스키마 범위 개체

    확장 프로시저입니다.

    1 = True

    0 = False

    IsForeignKey

    임의의 스키마 범위 개체

    FOREIGN KEY 제약 조건입니다.

    1 = True

    0 = False

    IsIndexed

    테이블, 뷰

    인덱스가 있는 테이블 또는 뷰입니다.

    1 = True

    0 = False

    IsIndexable

    테이블, 뷰

    인덱스를 만들 수 있는 테이블 또는 뷰입니다.

    1 = True

    0 = False

    IsInlineFunction

    함수

    인라인 함수입니다.

    1 = 인라인 함수

    0 = 비인라인 함수

    IsMSShipped

    임의의 스키마 범위 개체

    SQL Server를 설치하는 동안 만들어진 개체입니다.

    1 = True

    0 = False

    IsPrimaryKey

    임의의 스키마 범위 개체

    PRIMARY KEY 제약 조건입니다.

    1 = True

    0 = False

    NULL = 함수가 아니거나 개체 ID가 유효하지 않습니다.

    IsProcedure

    임의의 스키마 범위 개체

    프로시저입니다.

    1 = True

    0 = False

    IsQuotedIdentOn

    Transact-SQL 함수, Transact-SQL 프로시저, 테이블, Transact-SQL 트리거, 뷰, CHECK 제약 조건, DEFAULT 정의

    개체에 대해 따옴표 붙은 식별자 설정을 ON으로 지정합니다. 이는 개체 정의에 관련된 모든 식에서 큰따옴표가 식별자를 구분함을 의미합니다.

    1 = ON

    0 = OFF

    IsQueue

    임의의 스키마 범위 개체

    Service Broker 큐

    1 = True

    0 = False

    IsReplProc

    임의의 스키마 범위 개체

    복제 프로시저입니다.

    1 = True

    0 = False

    IsRule

    임의의 스키마 범위 개체

    바운드 규칙입니다.

    1 = True

    0 = False

    IsScalarFunction

    함수

    스칼라 반환 함수입니다.

    1 = 스칼라 반환 함수

    0 = 스칼라 반환 함수 아님

    IsSchemaBound

    함수, 뷰

    SCHEMABINDING을 사용하여 만든 스키마 바운드 함수 또는 뷰입니다.

    1 = 스키마 바운드

    0 = 스키마 바운드가 아닙니다.

    IsSystemTable

    테이블

    시스템 테이블입니다.

    1 = True

    0 = False

    IsTable

    테이블

    테이블입니다.

    1 = True

    0 = False

    IsTableFunction

    함수

    테이블 반환 함수입니다.

    1 = 테이블 반환 함수

    0 = 테이블 반환 함수 아님

    IsTrigger

    임의의 스키마 범위 개체

    트리거입니다.

    1 = True

    0 = False

    IsUniqueCnst

    임의의 스키마 범위 개체

    UNIQUE 제약 조건입니다.

    1 = True

    0 = False

    IsUserTable

    테이블

    사용자 정의 테이블입니다.

    1 = True

    0 = False

    IsView

    뷰입니다.

    1 = True

    0 = False

    OwnerId

    임의의 스키마 범위 개체

    개체의 소유자입니다.

    참고참고
    스키마 소유자가 반드시 개체 소유자일 필요는 없습니다. 예를 들어 자식 개체(parent_object_id가 Null이 아닌 개체)는 항상 부모 개체와 같은 소유자 ID를 반환합니다.

    Null이 아닌 경우 = 개체 소유자의 데이터베이스 사용자 ID입니다.

    TableDeleteTrigger

    테이블

    테이블에 DELETE 트리거가 있습니다.

    >1 = 지정된 유형의 첫 번째 트리거 ID

    TableDeleteTriggerCount

    테이블

    테이블에 지정된 개수의 DELETE 트리거가 있습니다.

    >0 = DELETE 트리거의 수입니다.

    TableFullTextMergeStatus

    테이블

    테이블에 현재 병합 중인 전체 텍스트 인덱스가 있는지를 나타냅니다.

    0 = 테이블에 전체 텍스트 인덱스가 없거나 병합 중인 전체 텍스트 인덱스가 없습니다.

    1 = 전체 텍스트 인덱스가 병합 중입니다.

    TableFullTextBackgroundUpdateIndexOn

    테이블

    테이블이 활성화된 전체 텍스트 백그라운드 업데이트 인덱스(자동 변경 추적)를 가집니다.

    1 = TRUE

    0 = FALSE

    TableFulltextCatalogId

    테이블

    테이블의 전체 텍스트 인덱스 데이터가 있는 전체 텍스트 카탈로그 ID입니다.

    0이 아닌 값 = 전체 텍스트 인덱싱된 테이블의 행을 식별하는 고유 인덱스와 연관된 전체 텍스트 카탈로그 ID입니다.

    0 = 테이블에 전체 텍스트 인덱스가 없습니다.

    TableFulltextChangeTrackingOn

    테이블

    테이블의 전체 텍스트 변경 내용 추적이 활성화되었습니다.

    1 = TRUE

    0 = FALSE

    TableFulltextDocsProcessed

    테이블

    전체 텍스트 인덱싱이 시작된 이후에 처리된 행의 수입니다. 전체 텍스트 검색을 위해 인덱싱 중인 테이블에서 한 행의 모든 열은 인덱싱되는 문서의 일부로 간주됩니다.

    0 = 활성 탐색 또는 전체 텍스트 인덱싱이 완료되지 않았습니다.

    > 0 = 다음 중 하나일 수 있습니다.

    • 전체, 증분 또는 수동 변경 내용 추적 채우기가 시작된 이후에 삽입 또는 업데이트 작업으로 처리된 문서의 수입니다.

    • 백그라운드 업데이트 인덱스 채우기가 지정된 변경 내용 추적이 활성화되거나 전체 텍스트 인덱스 스키마가 변경되거나 전체 텍스트 카탈로그가 다시 작성되거나 SQL Server 인스턴스가 다시 시작되는 등의 작업이 수행된 이후 삽입 또는 업데이트 작업에 의해 처리된 행의 수입니다.

    NULL = 테이블에 전체 텍스트 인덱스가 없습니다.

    참고참고
    이 속성은 삭제된 행을 모니터링하거나 세지 않습니다.

    TableFulltextFailCount

    테이블

    전체 텍스트 검색이 인덱싱하지 않은 행의 수입니다.

    0 = 채우기가 완료되었습니다.

    > 0 = 다음 중 하나일 수 있습니다.

    • 전체, 증분 및 수동 업데이트 변경 내용 추적 채우기가 시작된 이후에 인덱싱되지 않은 문서의 수입니다.

    • 백그라운드 업데이트 인덱스가 지정된 변경 내용 추적에서 채우기가 시작 또는 다시 시작된 후에 인덱싱되지 않은 행의 수입니다. 그 원인은 스키마 변경, 카탈로그 다시 작성, 서버 다시 시작 등이 될 수 있습니다.

    NULL = 테이블에 전체 텍스트 인덱스가 없습니다.

    TableFulltextItemCount

    테이블

    성공적으로 전체 텍스트 인덱싱된 행의 수입니다.

    TableFulltextKeyColumn

    테이블

    전체 텍스트 인덱스 정의에 사용되는 단일 열의 고유 인덱스와 관련된 열의 ID입니다.

    0 = 테이블에 전체 텍스트 인덱스가 없습니다.

    TableFulltextPendingChanges

    테이블

    처리할 보류 중인 변경 내용 추적 항목의 수입니다.

    0 = 변경 내용 추적이 활성화되지 않았습니다.

    NULL = 테이블에 전체 텍스트 인덱스가 없습니다.

    TableFulltextPopulateStatus

    테이블

    0 = 유휴 상태

    1 = 전체 채우기가 진행 중입니다.

    2 = 증분 채우기가 진행 중입니다.

    3 = 추적된 변경 내용의 전파가 진행 중입니다.

    4 = 변경 내용 자동 추적과 같은 백그라운드 업데이트 인덱스가 진행 중입니다.

    5 = 전체 텍스트 인덱싱이 정체 또는 일시 중지되었습니다.

    TableHasActiveFulltextIndex

    테이블

    테이블에 활성 전체 텍스트 인덱스가 있습니다.

    1 = True

    0 = False

    TableHasCheckCnst

    테이블

    테이블에 CHECK 제약 조건이 있습니다.

    1 = True

    0 = False

    TableHasClustIndex

    테이블

    테이블에 클러스터형 인덱스가 있습니다.

    1 = True

    0 = False

    TableHasDefaultCnst

    테이블

    테이블에 DEFAULT 제약 조건이 있습니다.

    1 = True

    0 = False

    TableHasDeleteTrigger

    테이블

    테이블에 DELETE 트리거가 있습니다.

    1 = True

    0 = False

    TableHasForeignKey

    테이블

    테이블에 FOREIGN KEY 제약 조건이 있습니다.

    1 = True

    0 = False

    TableHasForeignRef

    테이블

    테이블이 FOREIGN KEY 제약 조건에 의해 참조됩니다.

    1 = True

    0 = False

    TableHasIdentity

    테이블

    테이블에 ID 열이 있습니다.

    1 = True

    0 = False

    TableHasIndex

    테이블

    테이블에 임의 유형의 인덱스가 있습니다.

    1 = True

    0 = False

    TableHasInsertTrigger

    테이블

    개체에 INSERT 트리거가 있습니다.

    1 = True

    0 = False

    TableHasNonclustIndex

    테이블

    테이블에 비클러스터형 인덱스가 있습니다.

    1 = True

    0 = False

    TableHasPrimaryKey

    테이블

    테이블에 기본 키가 있습니다.

    1 = True

    0 = False

    TableHasRowGuidCol

    테이블

    테이블에 uniqueidentifier 열에 대한 ROWGUIDCOL이 있습니다.

    1 = True

    0 = False

    TableHasTextImage

    테이블

    테이블에 text, ntext 또는 image 열이 있습니다.

    1 = True

    0 = False

    TableHasTimestamp

    테이블

    테이블에 timestamp 열이 있습니다.

    1 = True

    0 = False

    TableHasUniqueCnst

    테이블

    테이블에 UNIQUE 제약 조건이 있습니다.

    1 = True

    0 = False

    TableHasUpdateTrigger

    테이블

    개체에 UPDATE 트리거가 있습니다.

    1 = True

    0 = False

    TableHasVarDecimalStorageFormat

    테이블

    테이블을 vardecimal 저장소 형식에 사용할 수 있습니다.

    1 = True

    0 = False

    TableInsertTrigger

    테이블

    테이블에 INSERT 트리거가 있습니다.

    >1 = 지정된 유형의 첫 번째 트리거 ID

    TableInsertTriggerCount

    테이블

    테이블에 지정된 개수의 INSERT 트리거가 있습니다.

    >0 = INSERT 트리거의 수입니다.

    TableIsFake

    테이블

    실제 테이블이 아닙니다. SQL Server 데이터베이스 엔진의 요청이 있을 때 내부적으로 구체화됩니다.

    1 = True

    0 = False

    TableIsLockedOnBulkLoad

    테이블

    bcp 또는 BULK INSERT 작업으로 인해 테이블이 잠깁니다.

    1 = True

    0 = False

    TableIsPinned

    테이블

    테이블이 데이터 캐시에 보유되도록 고정됩니다.

    0 = False

    SQL Server 2005 이상에서는 이 기능이 지원되지 않습니다.

    TableTextInRowLimit

    테이블

    text in row에 최대 바이트가 허용됩니다.

    text in row 옵션을 설정하지 않으면 0입니다.

    TableUpdateTrigger

    테이블

    테이블에 UPDATE 트리거가 있습니다.

    >1 = 지정된 유형의 첫 번째 트리거 ID

    TableUpdateTriggerCount

    테이블

    테이블에 지정된 개수의 UPDATE 트리거가 있습니다.

    > 0 = UPDATE 트리거의 수입니다.

    TableHasColumnSet

    테이블

    테이블에 열 집합이 있습니다.

    0 = False

    1 = True

    자세한 내용은 열 집합 사용을 참조하십시오.

반환 형식

int

예외

오류가 발생하거나 호출자가 개체를 볼 수 있는 권한을 갖고 있지 않으면 NULL을 반환합니다.

사용자는 소유하고 있거나 사용 권한을 부여 받은 보안 개체의 메타데이터만 볼 수 있습니다. 즉, 사용자가 개체에 대한 사용 권한이 없으면 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