다음을 통해 공유


sys.objects(Transact-SQL)

데이터베이스 내에 만들어진 각 사용자 정의 스키마 범위 개체에 대한 행을 포함합니다.

[!참고]

sys.objects는 스키마 범위가 아니기 때문에 DDL 트리거를 표시하지 않습니다. DML 및 DDL 트리거 모두 sys.triggers에 있습니다. sys.triggers는 다양한 종류의 트리거에 대해 이름-범위 규칙의 조합을 지원합니다.

열 이름

데이터 형식

설명

name

sysname

개체 이름입니다.

object_id

int

개체 ID입니다. 데이터베이스 내에서 고유합니다.

principal_id

int

스키마 소유자와 다른 경우 개별 소유자의 ID입니다. 기본적으로 스키마에 포함된 개체는 스키마 소유자가 소유합니다. 그러나 ALTER AUTHORIZATION 문으로 대체 소유자를 지정하여 소유권을 변경할 수 있습니다.

대체 개별 소유자가 없으면 NULL입니다.

개체 유형이 다음 중 하나인 경우 NULL입니다.

C = CHECK 제약 조건

D = DEFAULT(제약 조건 또는 독립 실행형)

F = FOREIGN KEY 제약 조건

PK = PRIMARY KEY 제약 조건

R = 규칙(이전 스타일, 독립 실행형)

TA = 어셈블리(CLR 통합) 트리거

TR = SQL 트리거

UQ = UNIQUE 제약 조건

schema_id

int

개체가 포함된 스키마의 ID입니다.

스키마 범위 시스템 개체는 항상 sys 또는 INFORMATION_SCHEMA 스키마에 포함됩니다.

parent_object_id

int

이 개체가 속하는 개체의 ID입니다.

0 = 자식 개체가 아닙니다.

type

char(2)

개체 유형입니다.

AF = 집계 함수(CLR)

C = CHECK 제약 조건

D = DEFAULT(제약 조건 또는 독립 실행형)

F = FOREIGN KEY 제약 조건

FN = SQL 스칼라 함수

FS = 어셈블리(CLR) 스칼라 함수

FT = 어셈블리(CLR) 테이블 반환 함수

IF = SQL 인라인 테이블 반환 함수

IT = 내부 테이블

P = SQL 저장 프로시저

PC = 어셈블리(CLR) 저장 프로시저

PG = 계획 지침

PK = PRIMARY KEY 제약 조건

R = 규칙(이전 스타일, 독립 실행형)

RF = 복제 필터 프로시저

S = 시스템 기본 테이블

SN = 동의어

SQ = 서비스 큐

TA = 어셈블리(CLR) DML 트리거

TF = SQL 테이블 반환 함수

TR = SQL DML 트리거

TT = 테이블 유형

U = 테이블(사용자 정의)

UQ = UNIQUE 제약 조건

V = 뷰

X = 확장 저장 프로시저

type_desc

nvarchar(60)

개체 유형에 대한 설명입니다.

AGGREGATE_FUNCTION

CHECK_CONSTRAINT

DEFAULT_CONSTRAINT

FOREIGN_KEY_CONSTRAINT

SQL_SCALAR_FUNCTION

CLR_SCALAR_FUNCTION

CLR_TABLE_VALUED_FUNCTION

SQL_INLINE_TABLE_VALUED_FUNCTION

INTERNAL_TABLE

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

PLAN_GUIDE

PRIMARY_KEY_CONSTRAINT

RULE

REPLICATION_FILTER_PROCEDURE

SYSTEM_TABLE

SYNONYM

SERVICE_QUEUE

CLR_TRIGGER

SQL_TABLE_VALUED_FUNCTION

SQL_TRIGGER

TABLE_TYPE

USER_TABLE

UNIQUE_CONSTRAINT

VIEW

EXTENDED_STORED_PROCEDURE

create_date

datetime

개체를 만든 날짜입니다.

modify_date

datetime

ALTER 문을 사용하여 개체를 마지막으로 수정한 날짜입니다. 개체가 테이블이나 뷰인 경우 테이블이나 뷰에서 클러스터형 인덱스가 생성되거나 변경되면 modify_date도 변경됩니다.

is_ms_shipped

bit

개체가 내부 SQL Server 구성 요소로 만들어집니다.

is_published

bit

개체가 게시됩니다.

is_schema_published

bit

개체의 스키마만 게시됩니다.

주의

sys.objects에 표시된 개체에 OBJECT_ID, OBJECT_NAMEOBJECTPROPERTY() 기본 제공 함수를 적용할 수 있습니다.

이 뷰와 스키마가 같지만 시스템 개체를 표시하는 sys.system_objects 뷰 버전과 시스템 및 사용자 개체를 모두 표시하는 sys.all_objects 뷰 버전이 있습니다. 세 카탈로그 뷰 모두 구조가 같습니다.

이 SQL Server 버전에서는 XML 인덱스 또는 공간 인덱스와 같은 확장 인덱스를 sys.objects(type = IT 및 type_desc = INTERNAL_TABLE)의 내부 테이블로 간주합니다. 확장 인덱스에 대한 설명은 다음과 같습니다.

  • name은 인덱스 테이블의 내부 이름입니다.

  • parent_object_id는 기본 테이블의 object_id입니다.

  • is_ms_shipped, is_published 및 is_schema_published 열은 0으로 설정됩니다.

사용 권한

SQL Server 2005 이상 버전에서는 사용자가 소유하고 있거나 일부 사용 권한을 부여 받은 보안 개체의 경우에만 카탈로그 뷰의 메타데이터를 볼 수 있도록 제한됩니다. 자세한 내용은 메타데이터 표시 유형 구성을 참조하십시오.

1. 최근 N일 동안 수정된 모든 개체 반환

다음 쿼리를 실행하기 전에 <database_name> 및 <n_days>를 올바른 값으로 대체합니다.

USE <database_name>;
GO
SELECT name AS object_name 
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO

2. 지정한 저장 프로시저나 함수에 대한 매개 변수 반환

다음 쿼리를 실행하기 전에 <database_name> 및 <schema_name.object_name>을 올바른 이름으로 대체합니다.

USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
    ,o.name AS object_name
    ,o.type_desc
    ,p.parameter_id
    ,p.name AS parameter_name
    ,TYPE_NAME(p.user_type_id) AS parameter_type
    ,p.max_length
    ,p.precision
    ,p.scale
    ,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, o.object_name, p.parameter_id;
GO

3. 데이터베이스의 모든 사용자 정의 함수 반환

다음 쿼리를 실행하기 전에 <database_name>을 올바른 데이터베이스 이름으로 대체합니다.

USE <database_name>;
GO
SELECT name AS function_name 
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO

4. 스키마에서 각 개체의 소유자 반환

다음 쿼리를 실행하기 전에 모든 <database_name> 및 <schema_name>을 올바른 이름으로 대체합니다.

USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
    ,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
    ,name 
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION 
SELECT 'TYPE' AS entity_type
    ,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) AS owner_name
    ,name 
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>' 
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type 
    ,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
    ,xsc.name 
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
    ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO

변경 내역

업데이트된 내용

type 열에 TT - 테이블 유형을 추가했습니다.