sys.dm_sql_referencing_entities(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

이름으로 다른 사용자 정의 엔터티를 참조하는 현재 데이터베이스의 각 엔터티에 대해 하나의 행을 반환합니다. 참조된 엔터티라고 하는 하나의 엔터티가 참조하는 엔터티라고 하는 다른 엔터티의 지속형 SQL 식에 이름으로 나타날 때 두 엔터티 간의 종속성이 만들어집니다. 예를 들어 UDT(사용자 정의 형식)가 참조된 엔터티로 지정된 경우 이 함수는 정의에서 해당 형식을 이름으로 참조하는 각 사용자 정의 엔터티를 반환합니다. 지정된 엔터티를 참조하는 다른 데이터베이스의 엔터티는 반환하지 않습니다. 서버 수준 DDL 트리거를 참조 엔터티로 반환하려면 마스터 데이터베이스의 컨텍스트에서 이 함수를 실행해야 합니다.

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

  • 스키마 바인딩 또는 스키마 바인딩되지 않은 엔터티

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

  • 서버 수준 DDL 트리거

적용 대상: SQL Server(SQL Server 2008(10.0.x) 이상), SQL Database.

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(10.0.x) - SQL Server 2012(11.x)

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

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

SQL Server 2014(12.x) 이상

  • 참조된 개체에 대한 권한이 필요하지 않습니다. 참조하는 일부 엔터티에 대해서만 VIEW DEFINITION이 있는 경우 부분 결과를 반환할 수 있습니다.

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

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

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

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

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

USE AdventureWorks2022;  
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  

B. 지정된 형식을 참조하는 엔터티 반환

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

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