Dela via


Visa beroenden för en lagrad procedur

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric

Det här avsnittet beskriver hur du visar lagrade procedurberoenden i SQL Server med hjälp av SQL Server Management Studio eller Transact-SQL.

Innan du börjar

Begränsningar och restriktioner

Säkerhet

Behörigheter

Systemfunktion: sys.dm_sql_referencing_entities
Kräver KONTROLL-behörighet för den refererade entiteten och SELECT-behörigheten på sys.dm_sql_referencing_entities. När den refererade entiteten är en partitionsfunktion krävs KONTROLL-behörighet för databasen. Som standardinställning beviljas SELECT-behörighet till allmänheten.

Systemfunktion: sys.dm_sql_referenced_entities
Kräver SELECT-behörighet för sys.dm_sql_referenced_entities- och VIEW DEFINITION-behörighet för den refererande entiteten. Som standard beviljas SELECT-behörighet till alla användare. Kräver VIEW DEFINITION-behörighet för databasen eller ALTER DATABASE DDL TRIGGER-behörighet för databasen när den refererande entiteten är en DDL-utlösare på databasnivå. Kräver VIEW ANY DEFINITION-behörighet på servern när den refererande entiteten är en DDL-utlösare på servernivå.

Objektkatalogvy: sys.sql_expression_dependencies
Kräver VIEW DEFINITION-behörighet för databasen och SELECT-behörighet för sys.sql_expression_dependencies för databasen. Som standard beviljas SELECT-behörighet endast medlemmar i den db_owner fasta databasrollen. När behörigheterna SELECT och VIEW DEFINITION beviljas till en annan användare kan den beviljade användaren visa alla beroenden i databasen.

Hur man visar beroenden för en lagrad procedur

Du kan använda något av följande:

Använda SQL Server Management Studio

Om du vill visa beroenden för en procedur i Object Explorer

  1. I Object Explorer ansluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera Databaser, expandera databasen som proceduren tillhör och expandera sedan Programmerbarhet.

  3. Expandera Lagrade procedurer, högerklicka på proceduren och klicka sedan på Visa beroenden.

  4. Visa listan över objekt som är beroende av proceduren.

  5. Visa listan över objekt som proceduren är beroende av.

  6. Klicka på OK.

Använda Transact-SQL

Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.

Visa beroenden för en procedur i Frågeredigeraren

Systemfunktion: sys.dm_sql_referencing_entities
Den här funktionen används för att visa de objekt som är beroende av en procedur.

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera Databaser, expandera databasen som proceduren tillhör.

  3. Klicka på Ny fråga under menyn Arkiv.

  4. Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren uspVendorAllInfo som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.

    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. När proceduren har skapats använder det andra exemplet funktionen sys.dm_sql_referencing_entities för att visa de objekt som är beroende av proceduren.

    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  
    
    

Systemfunktion: sys.dm_sql_referenced_entities
Den här funktionen används för att visa de objekt som en procedur är beroende av.

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera Databaser; expandera databasen som proceduren tillhör.

  3. Klicka på Ny fråga under menyn Arkiv.

  4. Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren uspVendorAllInfo som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.

    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. När proceduren har skapats använder det andra exemplet funktionen sys.dm_sql_referenced_entities för att visa de objekt som proceduren är beroende av.

    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  
    

Objektkatalogvy: sys.sql_expression_dependencies
Den här vyn kan användas för att visa objekt som en procedur är beroende av eller som är beroende av en procedur.

Visa de objekt som är beroende av en procedur.

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera Databaser, expandera databasen som proceduren tillhör.

  3. Klicka på Ny fråga under menyn Arkiv.

  4. Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren uspVendorAllInfo som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.

    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. När proceduren har skapats använder det andra exemplet vyn sys.sql_expression_dependencies för att visa de objekt som är beroende av proceduren.

    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  
    

Att visa de objekt som en procedur är beroende av.

  1. I Object Exploreransluter du till en instans av databasmotorn och expanderar sedan den instansen.

  2. Expandera Databaseroch utöka den databas som proceduren tillhör.

  3. Klicka på Ny fråga under menyn Arkiv.

  4. Kopiera och klistra in följande exempel i frågeredigeraren. I det första exemplet skapas proceduren uspVendorAllInfo som returnerar namnen på alla leverantörer i databasen Adventure Works Cycles, de produkter som de tillhandahåller, deras kreditbetyg och deras tillgänglighet.

    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. När proceduren har skapats använder det andra exemplet vyn sys.sql_expression_dependencies för att visa de objekt som proceduren är beroende av.

    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  
    

Se även

byt namn på en lagrad procedur
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)