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_NAME 및 OBJECTPROPERTY() 기본 제공 함수를 적용할 수 있습니다.
이 뷰와 스키마가 같지만 시스템 개체를 표시하는 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, 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