Anzeigen der Abhängigkeiten einer gespeicherten ProzedurView the Dependencies of a Stored Procedure

GILT FÜR: jaSQL Server jaAzure SQL-DatenbankjaAzure SQL Data Warehouse jaParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

In diesem Thema wird beschrieben, wie mit SQL Server 2017SQL Server 2017 oder SQL Server Management StudioSQL Server Management Studio Abhängigkeiten von gespeicherten Prozeduren in Transact-SQLTransact-SQLangezeigt werden.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.

VorbereitungenBefore You Begin

EinschränkungenLimitations and Restrictions

SicherheitSecurity

BerechtigungenPermissions

Systemfunktion: dm_sql_referencing_entitiesSystem Function: sys.dm_sql_referencing_entities
Erfordert die CONTROL-Berechtigung für die Entität, auf die verwiesen wird, und die SELECT-Berechtigung für sys.dm_sql_referencing_entities.Requires CONTROL permission on the referenced entity and SELECT permission on sys.dm_sql_referencing_entities. Wenn es sich bei der Entität, auf die verwiesen wird, um eine Partitionsfunktion handelt, ist die CONTROL-Berechtigung für die Datenbank erforderlich.When the referenced entity is a partition function, CONTROL permission on the database is required. Standardmäßig wird die SELECT-Berechtigung der public-Rolle erteilt.By default, SELECT permission is granted to public.

Systemfunktion: dm_sql_referenced_entitiesSystem Function: sys.dm_sql_referenced_entities
Erfordert die SELECT-Berechtigung für sys.dm_sql_referenced_entities und die VIEW DEFINITION-Berechtigung für die verweisende Entität.Requires SELECT permission on sys.dm_sql_referenced_entities and VIEW DEFINITION permission on the referencing entity. Standardmäßig wird die SELECT-Berechtigung der public-Rolle erteilt.By default, SELECT permission is granted to public. Erfordert die Berechtigung VIEW DEFINITION oder ALTER DATABASE DDL TRIGGER für die Datenbank, wenn es sich bei der verweisenden Entität um einen DDL-Trigger auf Datenbankebene handelt.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. Erfordert die VIEW ANY DEFINITION-Berechtigung für den Server, wenn es sich bei der verweisenden Entität um einen DDL-Trigger auf Serverebene handelt.Requires VIEW ANY DEFINITION permission on the server when the referencing entity is a server-level DDL trigger.

Objektkatalogsicht: sql_expression_dependenciesObject Catalog View: sys.sql_expression_dependencies
Erfordert die VIEW DEFINITION-Berechtigung für die Datenbank und die SELECT-Berechtigung für sys.sql_expression_dependencies für die Datenbank.Requires VIEW DEFINITION permission on the database and SELECT permission on sys.sql_expression_dependencies for the database. Standardmäßig wird die SELECT-Berechtigung nur Mitgliedern der festen Datenbankrolle db_owner gewährt.By default, SELECT permission is granted only to members of the db_owner fixed database role. Wenn einem anderen Benutzer die SELECT-Berechtigung und die VIEW DEFINITION-Berechtigung erteilt werden, kann dieser Berechtigte alle Abhängigkeiten in der Datenbank anzeigen.When SELECT and VIEW DEFINITION permissions are granted to another user, the grantee can view all dependencies in the database.

So zeigen Sie die Abhängigkeiten einer gespeicherten Prozedur anHow to View the Dependencies of a Stored Procedure

Sie können eine der folgenden Anwendungen verwenden:You can use one of the following:

Verwenden von SQL Server Management StudioUsing SQL Server Management Studio

So zeigen Sie die Abhängigkeiten von einer Prozedur im Objekt-Explorer anTo view the dependencies of a procedure in Object Explorer

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, erweitern Sie die Datenbank, zu der die Prozedur gehört, und erweitern Sie dann Programmierbarkeit.Expand Databases, expand the database in which the procedure belongs, and then expand Programmability.

  3. Erweitern Sie Gespeicherte Prozeduren, klicken Sie mit der rechten Maustaste auf die Prozedur, und klicken Sie dann auf Abhängigkeiten anzeigen.Expand Stored Procedures, right-click the procedure and then click View Dependencies.

  4. Zeigen Sie die Liste der Objekte an, die von der Prozedur abhängig sind.View the list of objects that depend on the procedure.

  5. Zeigen Sie die Liste der Objekte an, von denen die Prozedur abhängig ist.View the list of objects on which the procedure depends.

  6. Klicken Sie auf OK.Click OK.

Verwenden von Transact-SQLUsing Transact-SQL

So zeigen Sie die Abhängigkeiten einer Prozedur im Abfrage-Editor anTo view the dependencies of a procedure in Query Editor

Systemfunktion: dm_sql_referencing_entitiesSystem Function: sys.dm_sql_referencing_entities
Diese Funktion dient zum Anzeigen der Objekte, die von einer Prozedur abhängen.This function is used to display the objects that depend on a procedure.

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, und erweitern Sie die Datenbank, der die Prozedur angehört.Expand Databases, expand the database in which the procedure belongs.

  3. Klicken Sie im Menü Datei auf Neue Abfrage .Click on New Query under the File menu.

  4. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in den Abfrage-Editor ein.Copy and paste the following examples into the query editor. Im ersten Beispiel wird die uspVendorAllInfo -Prozedur erstellt. Diese Prozedur gibt die Namen, die gelieferten Produkte, die Bonität und die Verfügbarkeit aller Hersteller in der Adventure Works CyclesAdventure Works Cycles -Datenbank, die das Unternehmen beliefern, zurück.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. Nachdem die Prozedur erstellt wurde, wird im zweiten Beispiel die sys.dm_sql_referencing_entities-Funktion verwendet, um die Objekte anzuzeigen, die von der Prozedur abhängen.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  
    
    

Systemfunktion: dm_sql_referenced_entitiesSystem Function: sys.dm_sql_referenced_entities
Diese Funktion dient zum Anzeigen der Objekte, von denen eine Prozedur abhängt.This function is used to display the objects a procedure depends on.

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, und erweitern Sie die Datenbank, der die Prozedur angehört.Expand Databases, expand the database in which the procedure belongs.

  3. Klicken Sie im Menü Datei auf Neue Abfrage .Click on New Query under the File menu.

  4. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in den Abfrage-Editor ein.Copy and paste the following examples into the query editor. Im ersten Beispiel wird die uspVendorAllInfo -Prozedur erstellt. Diese Prozedur gibt die Namen, die gelieferten Produkte, die Bonität und die Verfügbarkeit aller Hersteller in der Adventure Works CyclesAdventure Works Cycles -Datenbank, die das Unternehmen beliefern, zurück.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. Nachdem die Prozedur erstellt wurde, wird im zweiten Beispiel die sys.dm_sql_referenced_entities-Funktion verwendet, um die Objekte anzuzeigen, von denen die Prozedur abhängt.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_referenced_entities ('Purchasing.uspVendorAllInfo', 'OBJECT');  
    GO  
    

Objektkatalogsicht: sql_expression_dependenciesObject Catalog View: sys.sql_expression_dependencies
Diese Sicht kann verwendet werden, um die Objekte anzuzeigen, von denen eine Prozedur abhängt, bzw. um die von einer Prozedur abhängigen Objekte anzuzeigen.This view can be used to display objects that a procedure depends on or that depend on a procedure.

Anzeigen der Objekte, die von einer Prozedur abhängen.Displaying the objects that depend on a procedure.

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, und erweitern Sie die Datenbank, der die Prozedur angehört.Expand Databases, expand the database in which the procedure belongs.

  3. Klicken Sie im Menü Datei auf Neue Abfrage .Click on New Query under the File menu.

  4. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in den Abfrage-Editor ein.Copy and paste the following examples into the query editor. Im ersten Beispiel wird die uspVendorAllInfo -Prozedur erstellt. Diese Prozedur gibt die Namen, die gelieferten Produkte, die Bonität und die Verfügbarkeit aller Hersteller in der Adventure Works CyclesAdventure Works Cycles -Datenbank, die das Unternehmen beliefern, zurück.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. Nachdem die Prozedur erstellt wurde, wird im zweiten Beispiel die sys.sql_expression_dependencies-Sicht verwendet, um die Objekte anzuzeigen, die von der Prozedur abhängen.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  
    

Anzeigen der Objekte, von denen eine Prozedur abhängt.Displaying the objects a procedure depends on.

  1. Stellen Sie im Objekt-Explorereine Verbindung mit einer Instanz von Datenbank-EngineDatabase Engine her, und erweitern Sie dann diese Instanz.In Object Explorer, connect to an instance of Datenbank-EngineDatabase Engine and then expand that instance.

  2. Erweitern Sie Datenbanken, und erweitern Sie die Datenbank, der die Prozedur angehört.Expand Databases, expand the database in which the procedure belongs.

  3. Klicken Sie im Menü Datei auf Neue Abfrage .Click on New Query under the File menu.

  4. Kopieren Sie die folgenden Beispiele, und fügen Sie sie in den Abfrage-Editor ein.Copy and paste the following examples into the query editor. Im ersten Beispiel wird die uspVendorAllInfo -Prozedur erstellt. Diese Prozedur gibt die Namen, die gelieferten Produkte, die Bonität und die Verfügbarkeit aller Hersteller in der Adventure Works CyclesAdventure Works Cycles -Datenbank, die das Unternehmen beliefern, zurück.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. Nachdem die Prozedur erstellt wurde, wird im zweiten Beispiel die sys.sql_expression_dependencies-Sicht verwendet, um die Objekte anzuzeigen, von denen die Prozedur abhängt.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  
    

Weitere InformationenSee Also

Umbenennen einer gespeicherten Prozedur 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)