저장 프로시저의 종속성 보기View the Dependencies of a Stored Procedure

SQL Server 2017SQL Server 2017 또는 SQL Server Management StudioSQL Server Management Studio 을 사용하여 Transact-SQLTransact-SQL의 저장 프로시저 종속성을 보는 방법에 대해 설명합니다.This topic describes how to view stored procedure dependencies in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL.

시작하기 전에 Before You Begin

제한 사항 Limitations and Restrictions

보안 Security

사용 권한 Permissions

시스템 함수: sys.dm_sql_referencing_entitiesSystem Function: sys.dm_sql_referencing_entities
참조된 엔터티에 대한 CONTROL 권한과 sys.dm_sql_referencing_entities에 대한 SELECT 권한이 필요합니다.Requires CONTROL permission on the referenced entity and SELECT permission on sys.dm_sql_referencing_entities. 참조된 엔터티가 파티션 함수인 경우 데이터베이스에 대한 CONTROL 권한이 필요합니다.When the referenced entity is a partition function, CONTROL permission on the database is required. 기본적으로 SELECT 권한은 public에 부여됩니다.By default, SELECT permission is granted to public.

시스템 함수: sys.dm_sql_referenced_entitiesSystem Function: sys.dm_sql_referenced_entities
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.

개체 카탈로그 뷰: sys.sql_expression_dependenciesObject Catalog View: sys.sql_expression_dependencies
데이터베이스에 대한 VIEW DEFINITION 권한과 데이터베이스의 sys.sql_expression_dependencies에 대한 SELECT 권한이 필요합니다.Requires VIEW DEFINITION permission on the database and SELECT permission on sys.sql_expression_dependencies for the database. 기본적으로 SELECT 권한은 db_owner 고정 데이터베이스 역할의 멤버에게만 부여됩니다.By default, SELECT permission is granted only to members of the db_owner fixed database role. SELECT와 VIEW DEFINITION 권한을 다른 사용자에게 부여하면 피부여자는 데이터베이스의 모든 종속성을 볼 수 있습니다.When SELECT and VIEW DEFINITION permissions are granted to another user, the grantee can view all dependencies in the database.

저장 프로시저의 종속성을 보는 방법 How to View the Dependencies of a Stored Procedure

다음 중 하나를 사용할 수 있습니다.You can use one of the following:

SQL Server Management Studio 사용 Using SQL Server Management Studio

개체 탐색기에서 프로시저 종속성을 보려면To view the dependencies of a procedure in Object Explorer

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.

  2. 데이터베이스를 확장하고 해당 프로시저가 속한 데이터베이스를 확장한 다음 프로그래밍 기능을 확장합니다.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. 저장 프로시저를 확장하고 프로시저를 마우스 오른쪽 단추로 클릭한 다음 종속성 보기를 클릭합니다.Expand Stored Procedures, right-click the procedure and then click View Dependencies.

  4. 프로시저에 종속된 개체 목록을 확인합니다.View the list of objects that depend on the procedure.

  5. 프로시저가 종속된 개체 목록을 확인합니다.View the list of objects on which the procedure depends.

  6. 확인을 클릭합니다.Click OK.

Transact-SQL 사용 Using Transact-SQL

쿼리 편집기에서 프로시저의 종속성을 보려면To view the dependencies of a procedure in Query Editor

시스템 함수: sys.dm_sql_referencing_entitiesSystem Function: sys.dm_sql_referencing_entities
이 함수는 프로시저에 종속된 개체를 표시합니다.This function is used to display the objects that depend on a procedure.

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.

  2. 데이터베이스를 확장하고 프로시저가 속한 데이터베이스를 확장합니다.Expand Databases, expand the database in which the procedure belongs.

  3. 파일 메뉴에서 새 쿼리 를 클릭합니다.Click on New Query under the File menu.

  4. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following examples into the query editor. 첫 번째 예에서는 uspVendorAllInfo 데이터베이스의 모든 공급업체 이름, 해당 공급업체가 공급하는 제품, 신용 등급 및 사용 가능성을 반환하는 Adventure Works CyclesAdventure Works Cycles 프로시저를 만듭니다.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    GO  
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
  5. 프로시저가 생성된 후 두 번째 예에서는 sys.dm_sql_referencing_entities 함수를 사용하여 프로시저에 종속된 개체를 표시합니다.After the procedure is created, the second example uses the sys.dm_sql_referencing_entities function to display the objects that depend on the procedure.

    USE AdventureWorks2012;  
    GO  
    SELECT referencing_schema_name, referencing_entity_name, referencing_id, referencing_class_desc, is_caller_dependent  
    FROM sys.dm_sql_referencing_entities ('Purchasing.uspVendorAllInfo', 'OBJECT');   
    GO  
    

    시스템 함수: sys.dm_sql_referenced_entitiesSystem Function: sys.dm_sql_referenced_entities
    이 함수는 프로시저에 종속된 개체를 표시합니다.This function is used to display the objects a procedure depends on.

  6. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.

  7. 데이터베이스를 확장하고 프로시저가 속한 데이터베이스를 확장합니다.Expand Databases, expand the database in which the procedure belongs.

  8. 파일 메뉴에서 새 쿼리 를 클릭합니다.Click on New Query under the File menu.

  9. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following examples into the query editor. 첫 번째 예에서는 uspVendorAllInfo 데이터베이스의 모든 공급업체 이름, 해당 공급업체가 공급하는 제품, 신용 등급 및 사용 가능성을 반환하는 Adventure Works CyclesAdventure Works Cycles 프로시저를 만듭니다.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    GO  
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
  10. 프로시저가 생성된 후 두 번째 예에서는 sys.dm_sql_referenced_entities 함수를 사용하여 프로시저가 종속된 개체를 표시합니다.After the procedure is created, the second example uses the sys.dm_sql_referenced_entities function to display the objects that the procedure depends on.

    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_referencing_entities ('Purchasing.uspVendorAllInfo', 'OBJECT');  
    GO  
    

    개체 카탈로그 뷰: sys.sql_expression_dependenciesObject Catalog View: sys.sql_expression_dependencies
    이 뷰는 프로시저가 종속된 개체 또는 프로시저에 종속된 개체를 표시합니다.This view can be used to display objects that a procedure depends on or that depend on a procedure.

    프로시저에 종속된 개체를 표시Displaying the objects that depend on a procedure.

    1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.
  11. 데이터베이스를 확장하고 프로시저가 속한 데이터베이스를 확장합니다.Expand Databases, expand the database in which the procedure belongs.

  12. 파일 메뉴에서 새 쿼리 를 클릭합니다.Click on New Query under the File menu.

  13. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following examples into the query editor. 첫 번째 예에서는 uspVendorAllInfo 데이터베이스의 모든 공급업체 이름, 해당 공급업체가 공급하는 제품, 신용 등급 및 사용 가능성을 반환하는 Adventure Works CyclesAdventure Works Cycles 프로시저를 만듭니다.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    GO  
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
  14. 프로시저가 생성된 후 두 번째 예에서는 sys.sql_expression_dependencies 뷰를 사용하여 프로시저에 종속된 개체를 표시합니다.After the procedure is created, the second example uses the sys.sql_expression_dependencies view to display the objects that depend on the procedure.

    USE AdventureWorks2012;  
    GO  
    SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,  
        OBJECT_NAME(referencing_id) AS referencing_entity_name,   
        o.type_desc AS referencing_desciption,   
        COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,   
        referencing_class_desc, referenced_class_desc,  
        referenced_server_name, referenced_database_name, referenced_schema_name,  
        referenced_entity_name,   
        COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,  
        is_caller_dependent, is_ambiguous  
    FROM sys.sql_expression_dependencies AS sed  
    INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id  
    WHERE referenced_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo')  
    GO  
    

    프로시저가 종속된 개체 목록을 표시Displaying the objects a procedure depends on.

    1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database Engine and then expand that instance.
  15. 데이터베이스를 확장하고 프로시저가 속한 데이터베이스를 확장합니다.Expand Databases, expand the database in which the procedure belongs.

  16. 파일 메뉴에서 새 쿼리 를 클릭합니다.Click on New Query under the File menu.

  17. 다음 예를 복사하여 쿼리 편집기에 붙여 넣습니다.Copy and paste the following examples into the query editor. 첫 번째 예에서는 uspVendorAllInfo 데이터베이스의 모든 공급업체 이름, 해당 공급업체가 공급하는 제품, 신용 등급 및 사용 가능성을 반환하는 Adventure Works CyclesAdventure Works Cycles 프로시저를 만듭니다.The first example creates the uspVendorAllInfo procedure, which returns the names of all the vendors in the Adventure Works CyclesAdventure Works Cycles database, the products they supply, their credit ratings, and their availability.

    USE AdventureWorks2008R2;  
    GO  
    IF OBJECT_ID ( 'Purchasing.uspVendorAllInfo', 'P' ) IS NOT NULL   
        DROP PROCEDURE Purchasing.uspVendorAllInfo;  
    GO  
    CREATE PROCEDURE Purchasing.uspVendorAllInfo  
    WITH EXECUTE AS CALLER  
    AS  
        SET NOCOUNT ON;  
        SELECT v.Name AS Vendor, p.Name AS 'Product name',   
          v.CreditRating AS 'Rating',   
          v.ActiveFlag AS Availability  
        FROM Purchasing.Vendor v   
        INNER JOIN Purchasing.ProductVendor pv  
          ON v.BusinessEntityID = pv.BusinessEntityID   
        INNER JOIN Production.Product p  
          ON pv.ProductID = p.ProductID   
        ORDER BY v.Name ASC;  
    GO  
    
  18. 프로시저가 생성된 후 두 번째 예에서는 sys.sql_expression_dependencies 뷰를 사용하여 프로시저가 종속된 개체를 표시합니다.After the procedure is created, the second example uses the sys.sql_expression_dependencies view to display the objects the procedure depends on.

    USE AdventureWorks2012;  
    GO  
    SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
        o.type_desc AS referencing_desciption,   
        COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,   
        referencing_class_desc, referenced_class_desc,  
        referenced_server_name, referenced_database_name, referenced_schema_name,  
        referenced_entity_name,   
        COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,  
        is_caller_dependent, is_ambiguous  
    FROM sys.sql_expression_dependencies AS sed  
    INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id  
    WHERE referencing_id = OBJECT_ID(N'Purchasing.uspVendorAllInfo');  
    GO  
    

참고 항목See Also

저장 프로시저 이름 바꾸기 Rename a Stored Procedure
sys.dm_sql_referencing_entities(Transact-SQL) sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities(Transact-SQL) sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies(Transact-SQL) sys.sql_expression_dependencies (Transact-SQL)