다음을 통해 공유


sys.dm_sql_referencing_entities(Transact-SQL)

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

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

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

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

  • 서버 수준 DDL 트리거

적용 대상: SQL Server(SQL Server 2008 - 현재 버전).

항목 링크 아이콘 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 Server 2008 – SQL Server 2012

  • 참조된 개체에 대한 CONTROL 권한이 필요합니다. 참조된 엔터티가 파티션 함수인 경우 데이터베이스에 대한 CONTROL 권한이 필요합니다.

  • sys.dm_sql_referencing_entities에 대한 SELECT 권한이 필요합니다. 기본적으로 SELECT 권한은 public에 부여됩니다.

SQL Server 2014 - SQL Server 2014

  • 참조된 개체에 대해 필요한 권한이 없습니다. 사용자가 참조 엔터티 일부에 대해서만 VIEW DEFINITION이 있는 경우 결과 일부만 반환될 수 있습니다.

  • 참조 엔터티가 개체인 경우 개체에 대한 VIEW DEFINITION이 필요합니다.

  • 참조 엔터티가 데이터베이스 수준 DDL 트리거인 경우 데이터베이스에 대한 VIEW DEFINITION이 필요합니다.

  • 참조 엔터티가 서버 수준 DDL 트리거인 경우 서버에 대한 VIEW ANY DEFINITION이 필요합니다.

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

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

USE AdventureWorks2012;
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 AdventureWorks2012;
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)

참고 항목

참조

sys.dm_sql_referenced_entities(Transact-SQL)

sys.sql_expression_dependencies(Transact-SQL)