Delen via


De afhankelijkheden van een opgeslagen procedure weergeven

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric

In dit onderwerp wordt beschreven hoe u opgeslagen procedureafhankelijkheden in SQL Server kunt weergeven met behulp van SQL Server Management Studio of Transact-SQL.

Voordat u begint

Beperkingen en beperkingen

Veiligheid

Machtigingen

Systeemfunctie: sys.dm_sql_referencing_entities
Vereist CONTROL-machtiging voor de entiteit waarnaar wordt verwezen en select-machtiging voor sys.dm_sql_referencing_entities. Wanneer de entiteit waarnaar wordt verwezen een partitiefunctie is, is CONTROL-machtiging voor de database vereist. Select-machtigingen worden standaard verleend aan het publiek.

Systeemfunctie: sys.dm_sql_referenced_entities
Vereist SELECT-machtiging voor sys.dm_sql_referenced_entities- en VIEW DEFINITION-machtiging voor de verwijzende entiteit. Select-machtigingen worden standaard verleend aan het publiek. Vereist VIEW DEFINITION-machtiging voor de database of ALTER DATABASE DDL TRIGGER-machtiging voor de database wanneer de verwijzingsentiteit een DDL-trigger op databaseniveau is. Vereist VIEW ANY DEFINITION-machtiging op de server wanneer de verwijzende entiteit een DDL-trigger op serverniveau is.

Objectcatalogusweergave: sys.sql_expression_afhankelijkheden
Vereist machtiging VIEW DEFINITION voor de database en SELECT-machtiging voor sys.sql_expression_afhankelijkheden voor de database. Select-machtigingen worden standaard alleen verleend aan leden van de db_owner vaste databaserol. Wanneer SELECT- en VIEW DEFINITION-machtigingen worden verleend aan een andere gebruiker, kan de grantee alle afhankelijkheden in de database bekijken.

De afhankelijkheden van een opgeslagen procedure weergeven

U kunt een van de volgende opties gebruiken:

SQL Server Management Studio gebruiken

De afhankelijkheden van een procedure weergeven in Objectverkenner

  1. Maak in Objectverkenner verbinding met een exemplaar van de Database Engine en vouw dat exemplaar vervolgens uit.

  2. Vouw Databasesuit, vouw de database waartoe de procedure behoort uit en vouw vervolgens Programmeerbaarheiduit.

  3. Vouw opgeslagen proceduresuit, klik met de rechtermuisknop op de procedure en klik vervolgens op Afhankelijkheden weergeven.

  4. Bekijk de lijst met objecten die afhankelijk zijn van de procedure.

  5. Bekijk de lijst met objecten waarvan de procedure afhankelijk is.

  6. Klik op OK-.

Transact-SQL gebruiken

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase, die u kunt downloaden van de Microsoft SQL Server-voorbeelden en communityprojecten startpagina.

De afhankelijkheden van een procedure weergeven in de Query-editor

Systeemfunctie: sys.dm_sql_referencing_entities
Deze functie wordt gebruikt om de objecten weer te geven die afhankelijk zijn van een procedure.

  1. Maak in Objectverkennerverbinding met een exemplaar van database-engine en vouw vervolgens dat exemplaar uit.

  2. Uitbreiden Databases, breid de database waarin de procedure zich bevindt uit.

  3. Klik op Nieuwe query onder het menu Bestand.

  4. Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de uspVendorAllInfo procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.

    USE AdventureWorks2022;  
    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. Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de functie sys.dm_sql_referencing_entities gebruikt om de objecten weer te geven die afhankelijk zijn van de procedure.

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

Systeemfunctie: sys.dm_sql_referenced_entities
Deze functie wordt gebruikt om de objecten weer te geven waarop een procedure afhankelijk is.

  1. Maak in Objectverkennerverbinding met een exemplaar van de Database-Engine en vouw vervolgens dat exemplaar uit.

  2. Vouw Databasesuit, vouw de database waarin de procedure hoort uit.

  3. Klik op Nieuwe query onder het menu Bestand.

  4. Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de uspVendorAllInfo procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.

    USE AdventureWorks2022;  
    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. Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de functie sys.dm_sql_referenced_entities gebruikt om de objecten weer te geven waarop de procedure afhankelijk is.

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

Objectcatalogusweergave: sys.sql_expression_afhankelijkheden
Deze weergave kan worden gebruikt om objecten weer te geven waarvoor een procedure afhankelijk is of die afhankelijk is van een procedure.

De objecten weergeven die afhankelijk zijn van een procedure.

  1. Maak in Objectverkennerverbinding met een instantie van Database Engine en vouw vervolgens die instantie uit.

  2. Vouw Databasesuit, vouw de database waarin de procedure hoort uit.

  3. Klik op Nieuwe query onder het menu Bestand.

  4. Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de uspVendorAllInfo procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.

    USE AdventureWorks2022;  
    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. Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de weergave sys.sql_expression_afhankelijkheden gebruikt om de objecten weer te geven die afhankelijk zijn van de procedure.

    USE AdventureWorks2022;  
    GO  
    SELECT OBJECT_SCHEMA_NAME ( referencing_id ) AS referencing_schema_name,  
        OBJECT_NAME(referencing_id) AS referencing_entity_name,   
        o.type_desc AS referencing_description,   
        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  
    

Het weergeven van de objecten waar een procedure van afhankelijk is.

  1. Maak in Objectverkennerverbinding met een exemplaar van de Database Engine en breid vervolgens dat exemplaar uit.

  2. Vouw Databasesuit, vouw de database waarin de procedure hoort uit.

  3. Klik op Nieuwe query onder het menu Bestand.

  4. Kopieer en plak de volgende voorbeelden in de queryeditor. In het eerste voorbeeld wordt de uspVendorAllInfo procedure gemaakt, die de namen retourneert van alle leveranciers in de database Adventure Works Cycles, de producten die ze leveren, hun credit ratings en hun beschikbaarheid.

    USE AdventureWorks2022;  
    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. Nadat de procedure is gemaakt, wordt in het tweede voorbeeld de weergave sys.sql_expression_afhankelijkheden gebruikt om de objecten weer te geven waarop de procedure afhankelijk is.

    USE AdventureWorks2022;  
    GO  
    SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
        o.type_desc AS referencing_description,   
        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  
    

Zie ook

de naam van een opgeslagen procedure wijzigen
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_afhankelijkheden (Transact-SQL)