다음을 통해 공유


sys.dm_sql_referencing_entities(Transact-SQL)

이름별로 다른 사용자 정의 엔터티를 참조하는 현재 데이터베이스의 각 엔터티에 대해 한 개의 행을 반환합니다. 두 엔터티 간의 종속성은 참조된 엔터티라고 하는 한 엔터티가 참조 엔터티라고 하는 다른 엔터티의 영구 SQL 식에 이름별로 나타나는 경우 생성됩니다. 예를 들어 UDT(사용자 정의 형식)가 참조 엔터티로 지정된 경우 이 함수는 정의에서 이름별로 해당 유형을 참조하는 각 사용자 정의 엔터티를 반환합니다. 지정된 엔터티를 참조하는 다른 데이터베이스의 엔터티는 반환하지 않습니다. 이 함수는 master 데이터베이스 컨텍스트에서 실행되어 서버 수준 DDL 트리거를 참조 엔터티로 반환해야 합니다.

이 동적 관리 함수를 사용하면 지정된 엔터티를 참조하는 현재 데이터베이스에 있는 다음과 같은 엔터티 유형을 보고할 수 있습니다.

  • 스키마 바운드 또는 비스키마 바운드 엔터티

  • 데이터베이스 수준 DDL 트리거

  • 서버 수준 DDL 트리거

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

구문

sys.dm_sql_referencing_entities (
        ' schema_name.referenced_entity_name ' , ' <referenced_class> ' )

<referenced_class> ::=
{
  OBJECT
  | TYPE
  | XML_SCHEMA_COLLECTION
  | PARTITION_FUNCTION
}

인수

  • schema_name.referenced_entity_name
    참조된 엔터티의 이름입니다.

    schema_name은 참조된 클래스가 PARTITION_FUNCTION일 경우를 제외하고 필요합니다.

    schema_name.referenced_entity_name은 nvarchar(517)입니다.

  • <referenced_class> ::= { OBJECT  | TYPE  | XML_SCHEMA_COLLECTION | PARTITION_FUNCTION }
    참조된 엔터티의 클래스입니다. 각 문에는 하나의 클래스만 지정할 수 있습니다.

    <referenced_class>는 nvarchar(60)입니다.

반환된 테이블

열 이름

데이터 형식

설명

referencing_schema_name

sysname

참조 엔터티가 속한 스키마입니다. Null을 허용합니다.

데이터베이스 수준 및 서버 수준 DDL 트리거의 경우 NULL입니다.

referencing_entity_name

sysname

참조 엔터티의 이름입니다. Null을 허용하지 않습니다.

referencing_id

int

참조 엔터티의 ID입니다. Null을 허용하지 않습니다.

referencing_class

tinyint

참조 엔터티의 클래스입니다. Null을 허용하지 않습니다.

1 = 개체

12 = 데이터베이스 수준 DDL 트리거

13 = 서버 수준 DDL 트리거

referencing_class_desc

nvarchar(60)

참조 엔터티 클래스에 대한 설명입니다.

OBJECT

DATABASE_DDL_TRIGGER

SERVER_DDL_TRIGGER

is_caller_dependent

bit

참조된 엔터티 ID 확인은 호출자의 스키마에 종속되기 때문에 런타임에 발생함을 나타냅니다.

1 = 참조 엔터티는 엔터티를 참조할 수 있습니다. 그러나 참조된 엔터티 ID의 확인은 호출자에 종속되므로 확인할 수 없습니다. 이는 EXECUTE 문에서 호출되는 저장 프로시저, 확장 저장 프로시저 또는 사용자 정의 함수에 대한 비스키마 바운드 참조에서만 발생합니다.

0 = 참조된 엔터티는 호출자에 종속되지 않습니다.

예외

다음과 같은 경우 빈 결과 집합을 반환합니다.

  • 시스템 개체가 지정되어 있습니다.

  • 지정된 엔터티가 현재 데이터베이스에 없습니다.

  • 지정된 엔터티가 아무런 엔터티도 참조하지 않습니다.

  • 잘못된 매개 변수가 전달되었습니다.

해당 참조된 엔터티가 번호가 매겨진 저장 프로시저인 경우 오류를 반환합니다.

주의

다음 표에서는 종속성 정보가 생성 및 유지되는 엔터티 유형을 보여 줍니다. 종속성 정보는 규칙, 기본값, 임시 테이블, 임시 저장 프로시저 또는 시스템 개체에 대해서는 생성 및 유지되지 않습니다.

엔터티 유형

참조 엔터티

참조된 엔터티

테이블

예*

Transact-SQL 저장 프로시저**

CLR 저장 프로시저

아니요

Transact-SQL 사용자 정의 함수

CLR 사용자 정의 함수

아니요

CLR 트리거(DML 및 DDL)

아니요

아니요

Transact-SQL DML 트리거

아니요

Transact-SQL 데이터베이스 수준 DDL 트리거

아니요

Transact-SQL 서버 수준 DDL 트리거

아니요

확장 저장 프로시저

아니요

아니요

동의어

아니요

형식(별칭 및 CLR 사용자 정의 형식)

아니요

XML 스키마 컬렉션

아니요

파티션 함수

아니요

* 테이블은 계산 열의 정의, CHECK 제약 조건 또는 DEFAULT 제약 조건의 Transact-SQL 모듈, 사용자 정의 형식 또는 XML 스키마 컬렉션을 참조하는 경우에만 참조 엔터티로 추적됩니다.

** 정수 값 1보다 큰 번호가 있는 저장 프로시저는 참조 엔터티나 참조된 엔터티로 추적되지 않습니다.

자세한 내용은 SQL 종속성 이해를 참조하십시오.

사용 권한

참조된 엔터티에 대한 CONTROL 권한과 sys.dm_sql_referencing_entities에 대한 SELECT 권한이 필요합니다. 참조된 엔터티가 파티션 함수인 경우 데이터베이스에 대한 CONTROL 권한이 필요합니다. 기본적으로 SELECT 권한은 public에 부여됩니다.

1. 지정된 엔터티를 참조하는 엔터티 반환

다음 예에서는 지정된 테이블을 참조하는 현재 데이터베이스의 엔터티를 반환합니다.

USE AdventureWorks2008R2;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('Production.Product', 'OBJECT');
GO

2. 지정된 유형을 참조하는 엔터티 반환

다음 예에서는 dbo.Flag 별칭 유형을 참조하는 엔터티를 반환합니다. 결과 집합은 두 개의 저장 프로시저가 이 유형을 사용한다는 것을 보여 줍니다. dbo.Flag 유형은 HumanResources.Employee 테이블에 있는 여러 열의 정의에도 사용되지만 테이블에 있는 계산 열, CHECK 제약 조건 또는 DEFAULT 제약 조건의 정의에는 이 유형이 없으므로 HumanResources.Employee 테이블에 대해서는 아무 행도 반환되지 않습니다.

USE AdventureWorks2008R2;
GO
SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent
FROM sys.dm_sql_referencing_entities ('dbo.Flag', 'TYPE');
GO

결과 집합은 다음과 같습니다.

referencing_schema_name referencing_entity_name   referencing_id referencing_class_desc is_caller_dependent

----------------------- -------------------------  ------------- ---------------------- -------------------

HumanResources          uspUpdateEmployeeHireInfo  1803153469    OBJECT_OR_COLUMN       0

HumanResources          uspUpdateEmployeeLogin     1819153526    OBJECT_OR_COLUMN       0

(2 row(s) affected)