sys.dm_sql_referenced_entities(Transact-SQL)sys.dm_sql_referenced_entities (Transact-SQL)

적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database적용 대상:Applies to: 예SQL ServerSQL Server(지원되는 모든 버전)yesSQL ServerSQL Server (all supported versions) 예Azure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

에서 지정 된 참조 엔터티 정의에 이름으로 참조 되는 각 사용자 정의 엔터티에 대해 하나의 행을 반환 SQL ServerSQL Server 합니다.Returns one row for each user-defined entity that is referenced by name in the definition of the specified referencing entity in SQL ServerSQL Server. 두 엔터티 간의 종속성은 참조된 엔터티 라는 하나의 사용자 정의 엔터티를 참조 엔터티라고 하는 다른 사용자 정의 엔터티의 지속형 SQL 식에 이름으로 표시 하는 경우 생성 됩니다.A dependency between two entities is created when one user-defined entity, called the referenced entity, appears by name in a persisted SQL expression of another user-defined entity, called the referencing entity. 예를 들어 저장 프로시저가 지정된 참조 엔터티인 경우 이 함수는 테이블, 뷰, UDT(사용자 정의 형식), 또는 다른 저장 프로시저 등 이 저장 프로시저에서 참조되는 모든 사용자 정의 엔터티를 반환합니다.For example, if a stored procedure is the specified referencing entity, this function returns all user-defined entities that are referenced in the stored procedure such as tables, views, user-defined types (UDTs), or other stored procedures.

이러한 동적 관리 함수를 사용하면 지정된 참조 엔터티에 의해 참조되는 다음과 같은 엔터티 유형을 보고할 수 있습니다.You can use this dynamic management function to report on the following types of entities referenced by the specified referencing entity:

  • 스키마 바운드 엔터티Schema-bound entities

  • 비스키마 바운드 엔터티Non-schema-bound entities

  • 데이터베이스 간 및 서버 간 엔터티Cross-database and cross-server entities

  • 스키마 바운드 엔터티 및 비스키마 바운드 엔터티의 열 수준 종속성Column-level dependencies on schema-bound and non-schema-bound entities

  • 사용자 정의 형식(별칭 및 CLR UDT)User-defined types (alias and CLR UDT)

  • XML 스키마 컬렉션XML schema collections

  • 파티션 함수Partition functions

구문Syntax

sys.dm_sql_referenced_entities (  
    ' [ schema_name. ] referencing_entity_name ' ,
    ' <referencing_class> ' )  
  
<referencing_class> ::=  
{  
    OBJECT  
  | DATABASE_DDL_TRIGGER  
  | SERVER_DDL_TRIGGER  
}  

인수Arguments

[ schema_name.[ schema_name. ] referencing_entity_name] referencing_entity_name
참조 엔터티의 이름입니다.Is the name of the referencing entity. 참조 하는 클래스가 OBJECT 인 경우 schema_name 필요 합니다.schema_name is required when the referencing class is OBJECT.

schema_name referencing_entity_name nvarchar (517) 입니다.schema_name.referencing_entity_name is nvarchar(517).

<referencing_class> :: = {OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER}<referencing_class> ::= { OBJECT | DATABASE_DDL_TRIGGER | SERVER_DDL_TRIGGER }
지정된 참조 엔터티의 클래스입니다.Is the class of the specified referencing entity. 각 문에는 하나의 클래스만 지정할 수 있습니다.Only one class can be specified per statement.

<referencing_class>nvarchar (60) 입니다.<referencing_class> is nvarchar(60).

반환된 테이블Table Returned

열 이름Column name 데이터 형식Data type DescriptionDescription
referencing_minor_idreferencing_minor_id intint 참조 엔터티가 열인 경우 열 ID이며 그렇지 않은 경우 0입니다.Column ID when the referencing entity is a column; otherwise 0. Null을 허용하지 않습니다.Is not nullable.
referenced_server_namereferenced_server_name sysnamesysname 참조된 엔터티의 서버 이름입니다.Name of the server of the referenced entity.

이 열은 네 부분으로 된 올바른 이름을 지정하여 생성되는 서버 간 종속성에 대해 채워집니다.This column is populated for cross-server dependencies that are made by specifying a valid four-part name. 다중 부분 이름에 대 한 자세한 내용은 transact-sql 구문 표기 (transact-sql)를 참조 하세요.For information about multipart names, see Transact-SQL Syntax Conventions (Transact-SQL).

네 부분으로 된 이름 지정 없이 엔터티가 참조된 비스키마 바운드 종속성의 경우 NULL입니다.NULL for non-schema-bound dependencies for which the entity was referenced without specifying a four-part name.

스키마 바운드 엔터티의 경우 NULL은 동일한 데이터베이스에 있어야 하므로 두 부분으로 구성 된 (schema. object) 이름만 사용 하 여 정의할 수 있기 때문입니다.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_database_namereferenced_database_name sysnamesysname 참조된 엔터티의 데이터베이스 이름입니다.Name of the database of the referenced entity.

이 열은 세 부분 또는 네 부분으로 된 올바른 이름을 지정하여 생성되는 데이터베이스 간 또는 서버 간 참조에 대해 채워집니다.This column is populated for cross-database or cross-server references that are made by specifying a valid three-part or four-part name.

한 부분 또는 두 부분으로 된 이름을 사용하여 지정된 비스키마 바운드 참조의 경우 NULL입니다.NULL for non-schema-bound references when specified using a one-part or two-part name.

스키마 바운드 엔터티의 경우 NULL은 동일한 데이터베이스에 있어야 하므로 두 부분으로 구성 된 (schema. object) 이름만 사용 하 여 정의할 수 있기 때문입니다.NULL for schema-bound entities because they must be in the same database and therefore can only be defined using a two-part (schema.object) name.
referenced_schema_namereferenced_schema_name sysnamesysname 참조된 엔터티가 속한 스키마입니다.Schema in which the referenced entity belongs.

스키마 이름 지정 없이 엔터티가 참조되는 비스키마 바운드 참조의 경우 NULL입니다.NULL for non-schema-bound references in which the entity was referenced without specifying the schema name.

스키마 바운드 참조의 경우 NULL일 수 없습니다.Never NULL for schema-bound references.
referenced_entity_namereferenced_entity_name sysnamesysname 참조된 엔터티의 이름입니다.Name of the referenced entity. Null을 허용하지 않습니다.Is not nullable.
referenced_minor_namereferenced_minor_name sysnamesysname 참조된 엔터티가 열인 경우 열 이름이며 그렇지 않은 경우 NULL입니다.Column name when the referenced entity is a column; otherwise NULL. 예를 들어 참조된 엔터티 자체를 나열하는 행에서 referenced_minor_name은 NULL입니다.For example, referenced_minor_name is NULL in the row that lists the referenced entity itself.

열이 참조 엔터티에서 이름으로 식별되거나 부모 엔터티가 SELECT * 문에 사용된 경우 참조된 엔터티는 열입니다.A referenced entity is a column when a column is identified by name in the referencing entity, or when the parent entity is used in a SELECT * statement.
referenced_idreferenced_id intint 참조된 엔터티의 ID입니다.ID of the referenced entity. referenced_minor_id가 0이 아닌 경우 referenced_id는 열이 정의된 엔터티입니다.When referenced_minor_id is not 0, referenced_id is the entity in which the column is defined.

서버 간 참조의 경우 항상 NULL입니다.Always NULL for cross-server references.

데이터베이스 간 참조의 경우 데이터베이스가 오프라인 상태이거나 엔터티를 바인딩할 수 없어 ID를 확인할 수 없으면 NULL입니다.NULL for cross-database references when the ID cannot be determined because the database is offline or the entity cannot be bound.

데이터베이스 내 참조의 경우 ID를 확인할 수 없으면 NULL입니다.NULL for references within the database if the ID cannot be determined. 비 스키마 바운드 참조의 경우 참조 된 엔터티가 데이터베이스에 없거나 이름 확인이 호출자에 종속 된 경우 ID를 확인할 수 없습니다.For non-schema-bound references, the ID cannot be resolved when the referenced entity does not exist in the database or when the name resolution is caller dependent. 후자의 경우 is_caller_dependent 1로 설정 됩니다.In the latter case, is_caller_dependent is set to 1.

스키마 바운드 참조의 경우 NULL일 수 없습니다.Never NULL for schema-bound references.
referenced_minor_idreferenced_minor_id intint 참조된 엔터티가 열인 경우 열 ID이며 그렇지 않은 경우 0입니다.Column ID when the referenced entity is a column; otherwise, 0. 예를 들어 참조된 엔터티 자체를 나열하는 행에서 referenced_minor_is는 0입니다.For example, referenced_minor_is is 0 in the row that lists the referenced entity itself.

비스키마 바운드 참조의 경우 모든 참조된 엔터티를 바인딩할 수 있는 경우에만 열 종속성이 보고됩니다.For non-schema-bound references, column dependencies are reported only when all referenced entities can be bound. 바인딩할 수 없는 참조된 엔터티가 있는 경우 열 수준 종속성이 보고되지 않으며 referenced_minor_id는 0입니다.If any referenced entity cannot be bound, no column-level dependencies are reported and referenced_minor_id is 0. 예 4를 참조하십시오.See Example D.
referenced_classreferenced_class tinyinttinyint 참조된 엔터티의 클래스입니다.Class of the referenced entity.

1 = 개체 또는 열1 = Object or column

6 = 형식6 = Type

10 = XML 스키마 컬렉션10 = XML schema collection

21 = 파티션 함수21 = Partition function
referenced_class_descreferenced_class_desc nvarchar(60)nvarchar(60) 참조된 엔터티의 클래스에 대한 설명입니다.Description of class of referenced entity.

OBJECT_OR_COLUMNOBJECT_OR_COLUMN

TYPETYPE

XML_SCHEMA_COLLECTIONXML_SCHEMA_COLLECTION

PARTITION_FUNCTIONPARTITION_FUNCTION
is_caller_dependentis_caller_dependent bitbit 참조된 엔터티에 대한 스키마 바인딩이 런타임에 발생하며 따라서 엔터티 ID 확인은 호출자의 스키마에 종속됨을 나타냅니다.Indicates schema binding for the referenced entity occurs at run time; therefore, resolution of the entity ID depends on the schema of the caller. 이는 참조된 엔터티가 EXECUTE 문 내에서 호출되는 저장 프로시저, 확장 저장 프로시저 또는 사용자 정의 함수인 경우 발생합니다.This occurs when the referenced entity is a stored procedure, extended stored procedure, or user-defined function called within an EXECUTE statement.

1 = 참조된 엔터티가 호출자에 종속되고 런타임에 확인됩니다.1 = The referenced entity is caller dependent and is resolved at run time. 이 경우 referenced_id는 NULL입니다.In this case, referenced_id is NULL.

0 = 참조된 엔터티 ID가 호출자에 종속되지 않습니다.0 = The referenced entity ID is not caller dependent. 스키마 이름을 명시적으로 지정하는 스키마 바운드 참조와 데이터베이스 간 및 서버 간 참조의 경우 항상 0입니다.Always 0 for schema-bound references and for cross-database and cross-server references that explicitly specify a schema name. 예를 들어 EXEC MyDatabase.MySchema.MyProc 형식의 엔터티에 대한 참조는 호출자에 종속되지 않습니다.For example, a reference to an entity in the format EXEC MyDatabase.MySchema.MyProc is not caller dependent. 하지만 EXEC MyDatabase..MyProc 형식의 참조는 호출자에 종속됩니다.However, a reference in the format EXEC MyDatabase..MyProc is caller dependent.
is_ambiguousis_ambiguous bitbit 참조가 모호 하며 런타임에 사용자 정의 함수, UDT (사용자 정의 형식) 또는 xml형식의 열에 대 한 xquery 참조로 확인 될 수 있음을 나타냅니다.Indicates the reference is ambiguous and can resolve at run time to a user-defined function, a user-defined type (UDT), or an xquery reference to a column of type xml. 예를 들어 저장 프로시저에 SELECT Sales.GetOrder() FROM Sales.MySales 문이 정의된 경우For example, assume the statement SELECT Sales.GetOrder() FROM Sales.MySales is defined in a stored procedure. Sales.GetOrder()Sales 스키마의 사용자 정의 함수인지, 아니면 Sales라는 메서드가 있는 UDT 형식의 GetOrder() 열인지는 저장 프로시저가 실행될 때까지 알 수 없습니다.Until the stored procedure is executed, it is not known whether Sales.GetOrder() is a user-defined function in the Sales schema or column named Sales of type UDT with a method named GetOrder().

1 = 사용자 정의 함수 또는 열 UDT(사용자 정의 형식) 메서드에 대한 참조가 모호합니다.1 = Reference to a user-defined function or column user-defined type (UDT) method is ambiguous.

0 = 참조가 분명하거나 함수가 호출될 때 엔터티를 성공적으로 바인딩할 수 있습니다.0 = Reference is unambiguous or the entity can be successfully bound when the function is called.

스키마 바운드 참조의 경우 항상 0입니다.Always 0 for schema-bound references.
is_selectedis_selected bitbit 1 = 개체 또는 열이 선택됩니다.1 = The object or column is selected.
is_updatedis_updated bitbit 1 = 개체 또는 열이 수정됩니다.1 = The object or column is modified.
is_select_allis_select_all bitbit 1 = 개체가 SELECT * 절에서 사용됩니다(개체 수준만 해당).1 = The object is used in a SELECT * clause (object-level only).
is_all_columns_foundis_all_columns_found bitbit 1 = 개체에 대한 모든 열 종속성을 찾을 수 있습니다.1 = All column dependencies for the object could be found.

0 = 개체에 대한 열 종속성을 찾을 수 없습니다.0 = Column dependencies for the object could not be found.
is_insert_allis_insert_all bitbit 1 = 열 목록이 없는 INSERT 문에서 개체가 사용 됩니다 (개체 수준만 해당).1 = The object is used in an INSERT statement without a column list (object-level only).

이 열은 SQL Server 2016에 추가 되었습니다.This column was added in SQL Server 2016.
is_incompleteis_incomplete bitbit 1 = 개체 또는 열에 바인딩 오류가 있으며 불완전 합니다.1 = The object or column has a binding error and is incomplete.

이 열은 SQL Server 2016 s p 2에 추가 되었습니다.This column was added in SQL Server 2016 SP2.
     

예외Exceptions

다음과 같은 경우 빈 결과 집합을 반환합니다.Returns an empty result set under any of the following conditions:

  • 시스템 개체가 지정되어 있습니다.A system object is specified.

  • 지정된 엔터티가 현재 데이터베이스에 없습니다.The specified entity does not exist in the current database.

  • 지정된 엔터티가 아무런 엔터티도 참조하지 않습니다.The specified entity does not reference any entities.

  • 잘못된 매개 변수가 전달되었습니다.An invalid parameter is passed.

지정된 참조 엔터티가 번호가 매겨진 저장 프로시저인 경우 오류를 반환합니다.Returns an error when the specified referencing entity is a numbered stored procedure.

열 종속성을 확인할 수 없으면 오류 2020을 반환합니다.Returns error 2020 when column dependencies cannot be resolved. 이 오류가 발생해도 쿼리는 개체 수준 종속성을 반환합니다.This error does not prevent the query from returning object-level dependencies.

설명Remarks

이 함수는 데이터베이스 컨텍스트에서 실행되어 서버 수준 DDL 트리거를 참조하는 엔터티를 반환할 수 있습니다.This function can be executed in the context of the any database to return the entities that reference a server-level DDL trigger.

다음 표에서는 종속성 정보가 생성 및 유지되는 엔터티 유형을 보여 줍니다.The following table lists the types of entities for which dependency information is created and maintained. 종속성 정보는 규칙, 기본값, 임시 테이블, 임시 저장 프로시저 또는 시스템 개체에 대해서는 생성 및 유지되지 않습니다.Dependency information is not created or maintained for rules, defaults, temporary tables, temporary stored procedures, or system objects.

엔터티 유형Entity type 참조 엔터티Referencing entity 참조된 엔터티Referenced entity
테이블Table 예*Yes* Yes
보기View Yes Yes
Transact-SQLTransact-SQL 저장 프로시저**stored procedure** Yes Yes
CLR 저장 프로시저CLR stored procedure No Yes
Transact-SQLTransact-SQL 사용자 정의 함수user-defined function Yes Yes
CLR 사용자 정의 함수CLR user-defined function No Yes
CLR 트리거(DML 및 DDL)CLR trigger (DML and DDL) 아니요No 아니요No
Transact-SQLTransact-SQL DML 트리거DML trigger Yes 아니요No
Transact-SQLTransact-SQL 데이터베이스 수준 DDL 트리거database-level DDL trigger Yes 아니요No
Transact-SQLTransact-SQL 서버 수준 DDL 트리거server-level DDL trigger Yes 아니요No
확장된 저장 프로시저Extended stored procedures No Yes
Queue No Yes
동의어Synonym No Yes
형식(별칭 및 CLR 사용자 정의 형식)Type (alias and CLR user-defined type) No Yes
XML 스키마 컬렉션XML schema collection No Yes
파티션 함수Partition function No Yes
     

*테이블은 Transact-SQLTransact-SQL 계산 열, CHECK 제약 조건 또는 DEFAULT 제약 조건 정의에서 모듈, 사용자 정의 형식 또는 XML 스키마 컬렉션을 참조 하는 경우에만 참조 엔터티로 추적 됩니다.* A table is tracked as a referencing entity only when it references a Transact-SQLTransact-SQL module, user-defined type, or XML schema collection in the definition of a computed column, CHECK constraint, or DEFAULT constraint.

** 정수 값 1보다 큰 번호가 있는 저장 프로시저는 참조 엔터티나 참조된 엔터티로 추적되지 않습니다.** Numbered stored procedures with an integer value greater than 1 are not tracked as either a referencing or referenced entity.

사용 권한Permissions

sys.dm_sql_referenced_entities에 대한 SELECT 권한 및 참조 엔터티에 대한 VIEW DEFINITION 권한이 필요합니다.Requires SELECT permission on sys.dm_sql_referenced_entities and VIEW DEFINITION permission on the referencing entity. 기본적으로 SELECT 권한은 public에 부여됩니다.By default, SELECT permission is granted to public. 참조 엔터티가 데이터 수준 DDL 트리거인 경우 데이터베이스에 대한 ALTER DATABASE DDL TRIGGER 권한 또는 데이터베이스에 대한 VIEW DEFINITION 권한이 필요합니다.Requires VIEW DEFINITION permission on the database or ALTER DATABASE DDL TRIGGER permission on the database when the referencing entity is a database-level DDL trigger. 참조 엔터티가 서버 수준 DDL 트리거인 경우 서버에 대한 VIEW ANY DEFINITION 권한이 필요합니다.Requires VIEW ANY DEFINITION permission on the server when the referencing entity is a server-level DDL trigger.

예제Examples

A.A. 데이터베이스 수준 DDL 트리거에서 참조 하는 엔터티 반환Return entities that are referenced by a database-level DDL trigger

다음 예에서는 데이터베이스 수준 DDL 트리거 ddlDatabaseTriggerLog에 의해 참조되는 엔터티(테이블 및 열)를 반환합니다.The following example returns the entities (tables and columns) that are referenced by the database-level DDL trigger ddlDatabaseTriggerLog.

USE AdventureWorks2012;  
GO  
SELECT
        referenced_schema_name,
        referenced_entity_name,
        referenced_minor_name,
        referenced_minor_id,
        referenced_class_desc
    FROM
        sys.dm_sql_referenced_entities (
            'ddlDatabaseTriggerLog',
            'DATABASE_DDL_TRIGGER')
;
GO  

B.B. 개체에서 참조 하는 엔터티 반환Return entities that are referenced by an object

다음 예에서는 사용자 정의 함수 dbo.ufnGetContactInformation에 의해 참조되는 엔터티를 반환합니다.The following example returns the entities that are referenced by the user-defined function dbo.ufnGetContactInformation.

USE AdventureWorks2012;  
GO  
SELECT
        referenced_schema_name,
        referenced_entity_name,
        referenced_minor_name,
        referenced_minor_id,
        referenced_class_desc,
        is_caller_dependent,
        is_ambiguous
    FROM
        sys.dm_sql_referenced_entities (
            'dbo.ufnGetContactInformation',
            'OBJECT')
;
GO  

C.C. 열 종속성 반환Return column dependencies

다음 예에서는 Table1 열과 c 열의 합계로 정의되는 계산 열 a가 포함된 b 테이블을 만듭니다.The following example creates the table Table1 with the computed column c defined as the sum of columns a and b. 그런 다음 sys.dm_sql_referenced_entities 뷰를 호출합니다.The sys.dm_sql_referenced_entities view is then called. 이 뷰는 계산 열에 정의된 각 열마다 하나씩 두 개의 행을 반환합니다.The view returns two rows, one for each column defined in the computed column.

CREATE TABLE dbo.Table1 (a int, b int, c AS a + b);  
GO  
SELECT
        referenced_schema_name AS schema_name,  
        referenced_entity_name AS table_name,  
        referenced_minor_name  AS referenced_column,  
        COALESCE(
            COL_NAME(OBJECT_ID(N'dbo.Table1'),
            referencing_minor_id),
            'N/A') AS referencing_column_name  
    FROM
        sys.dm_sql_referenced_entities ('dbo.Table1', 'OBJECT')
;
GO

-- Remove the table.  
DROP TABLE dbo.Table1;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

schema_name table_name referenced_column referencing_column  
----------- ---------- ----------------- ------------------  
dbo         Table1     a                 c  
dbo         Table1     b                 c  

D.D. 비스키마 바운드 열 종속성 반환Returning non-schema-bound column dependencies

다음 예에서는 Table1을 삭제하고 Table2 및 저장 프로시저 Proc1을 만듭니다.The following example drops Table1 and creates Table2 and stored procedure Proc1. 이 프로시저는 Table2 및 존재하지 않는 테이블 Table1을 참조합니다.The procedure references Table2 and the nonexistent table Table1. 저장 프로시저가 참조 엔터티로 지정되어 sys.dm_sql_referenced_entities 뷰가 실행됩니다.The view sys.dm_sql_referenced_entities is run with the stored procedure specified as the referencing entity. 결과 집합에는 Table1에 대한 행 하나와 Table2에 대한 행 세 개가 표시됩니다.The result set shows one row for Table1 and 3 rows for Table2. Table1이 없기 때문에 열 종속성을 확인할 수 없고 오류 2020이 반환됩니다.Because Table1 does not exist, the column dependencies cannot be resolved and error 2020 is returned. is_all_columns_found 열은 Table1에 대해 검색할 수 없는 열이 있음을 나타내는 0을 반환합니다.The is_all_columns_found column returns 0 for Table1 indicating that there were columns that could not be discovered.

DROP TABLE IF EXISTS dbo.Table1;
GO  
CREATE TABLE dbo.Table2 (c1 int, c2 int);  
GO  
CREATE PROCEDURE dbo.Proc1 AS  
    SELECT a, b, c FROM Table1;  
    SELECT c1, c2 FROM Table2;  
GO  
SELECT
        referenced_id,
        referenced_entity_name AS table_name,
        referenced_minor_name  AS referenced_column_name,
        is_all_columns_found
    FROM
        sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO  

결과 집합은 다음과 같습니다.Here is the result set.

referenced_id table_name   referenced_column_name  is_all_columns_found  
------------- ------------ ----------------------- --------------------  
935674381     Table2       NULL                    1  
935674381     Table2       C1                      1  
935674381     Table2       C2                      1  
NULL          Table1       NULL                    0  

Msg 2020, Level 16, State 1, Line 1
The dependencies reported for entity "dbo.Proc1" might not include
 references to all columns. This is either because the entity
 references an object that does not exist or because of an error
 in one or more statements in the entity.  Before rerunning the
 query, ensure that there are no errors in the entity and that
 all objects referenced by the entity exist.

E.E. 동적 종속성 유지 관리 설명Demonstrating dynamic dependency maintenance

이 예에서는 D 예제가 실행 되었다고 가정 합니다.This Example E assumes that Example D has been run. 예 E에서는 종속성이 동적으로 유지 되 고 있음을 보여 줍니다.Example E shows that dependencies are maintained dynamically. 이 예제에서는 다음 작업을 수행 합니다.The example does the following things:

  1. Table1예 D에서 삭제 된를 다시 만듭니다.Re-creates Table1, which was dropped in Example D.
  2. 그러면 sys.dm_sql_referenced_entities 저장 프로시저가 참조 엔터티로 지정 되어 실행이 다시 실행 됩니다.Run Then sys.dm_sql_referenced_entities is run again with the stored procedure specified as the referencing entity.

결과 집합에는 저장 프로시저에 정의 된 테이블 및 각 열이 반환 되는 것이 표시 됩니다.The result set shows that both tables, and their respective columns defined in the stored procedure, are returned. 또한 is_all_columns_found 열은 모든 개체 및 열에 대해 1을 반환합니다.In addition, the is_all_columns_found column returns a 1 for all objects and columns.

CREATE TABLE Table1 (a int, b int, c AS a + b);  
GO   
SELECT
        referenced_id,
        referenced_entity_name AS table_name,
        referenced_minor_name  AS column_name,
        is_all_columns_found
    FROM
        sys.dm_sql_referenced_entities ('dbo.Proc1', 'OBJECT');
GO  
DROP TABLE Table1, Table2;  
DROP PROC Proc1;  
GO  

결과 집합은 다음과 같습니다.Here is the result set.

referenced_id table_name   referenced_column_name  is_all_columns_found  
------------- ------------ ----------------------- --------------------  
935674381     Table2       NULL                    1 
935674381     Table2       c1                      1 
935674381     Table2       c2                      1 
967674495     Table1       NULL                    1 
967674495     Table1       a                       1  
967674495     Table1       b                       1  
967674495     Table1       c                       1  

F.F. 개체 또는 열 사용법 반환Returning object or column usage

다음 예에서는 저장 프로시저 HumanResources.uspUpdateEmployeePersonalInfo의 개체 및 열 종속성을 반환합니다.The following example returns the objects and column dependencies of the stored procedure HumanResources.uspUpdateEmployeePersonalInfo. 이 프로시저는 지정 된 NationalIDNumber BirthDate,``MaritalStatus 값을 Gender Employee 기준으로 테이블의, 및 열을 업데이트 합니다 BusinessEntityID .This procedure updates the columns NationalIDNumber, BirthDate,``MaritalStatus, and Gender of the Employee table based on a specified BusinessEntityID value. 다른 저장 프로시저 upsLogError 는 TRY ... 실행 오류를 캡처하기 위한 CATCH 블록입니다.Another stored procedure, upsLogError is defined in a TRY...CATCH block to capture any execution errors. is_selected, is_updatedis_select_all 열은 참조하는 개체 내에 이러한 개체 및 열이 사용되는 방식에 대한 정보를 반환합니다.The is_selected, is_updated, and is_select_all columns return information about how these objects and columns are used within the referencing object. 수정된 테이블 및 열은 is_updated 열에서 1로 표시됩니다.The table and columns that are modified are indicated by a 1 in the is_updated column. BusinessEntityID 열만 선택되며 저장 프로시저 uspLogError는 선택되거나 수정되지 않습니다.The BusinessEntityID column is only selected and the stored procedure uspLogError is neither selected nor modified.

USE AdventureWorks2012;
GO
SELECT
        referenced_entity_name AS table_name,
        referenced_minor_name  AS column_name,
        is_selected,  is_updated,  is_select_all
    FROM
        sys.dm_sql_referenced_entities(
            'HumanResources.uspUpdateEmployeePersonalInfo',
            'OBJECT')
;

결과 집합은 다음과 같습니다.Here is the result set.

table_name    column_name         is_selected is_updated is_select_all  
------------- ------------------- ----------- ---------- -------------  
uspLogError   NULL                0           0          0  
Employee      NULL                0           1          0  
Employee      BusinessEntityID    1           0          0  
Employee      NationalIDNumber    0           1          0  
Employee      BirthDate           0           1          0  
Employee      MaritalStatus       0           1          0  
Employee      Gender              0           1          0

참고 항목See Also

sys.dm_sql_referencing_entities(Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
sys.sql_expression_dependencies(Transact-SQL)sys.sql_expression_dependencies (Transact-SQL)