Megosztás a következőn keresztül:


Tárolt eljárás függőségeinek megtekintése

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

Ez a témakör azt ismerteti, hogyan tekintheti meg az SQL Server tárolt eljárásfüggőségeit az SQL Server Management Studio vagy a Transact-SQL használatával.

Mielőtt hozzákezdene

Korlátozások és korlátozások

Biztonság

Permissions

Rendszerfüggvény: sys.dm_sql_referencing_entities
CONTROL engedélyt igényel a hivatkozott entitáson, és a sys.dm_sql_referencing_entities esetében SELECT engedélyt. Ha a hivatkozott entitás egy partíciófüggvény, control engedélyre van szükség az adatbázisban. Alapértelmezés szerint a SELECT engedély nyilvános.

Rendszerfüggvény: sys.dm_sql_referenced_entities
SELECT engedélyre van szükség a sys.dm_sql_referenced_entities-hez és VIEW DEFINITION engedélyre a hivatkozó entitáson. Alapértelmezés szerint a SELECT engedély nyilvános. View DEFINITION-engedély szükséges az adatbázishoz vagy az ALTER DATABASE DDL TRIGGER engedélyéhez az adatbázisban, ha a hivatkozási entitás adatbázisszintű DDL-eseményindító. A VIEW ANY DEFINITION engedélyre van szükség a kiszolgálón, ha a hivatkozási entitás kiszolgálószintű DDL-trigger.

Objektumkatalógus nézet: sys.sql_expression_dependencies
A VIEW DEFINITION engedélyre van szükség az adatbázison, és SELECT engedélyt kell kérni az adatbázis sys.sql_expression_dependencies szolgáltatásához. Alapértelmezés szerint a SELECT engedély csak a db_owner rögzített adatbázis-szerepkör tagjai számára van megadva. Ha a SELECT és a VIEW DEFINITION engedélyeket egy másik felhasználó kapja meg, a jogosult megtekintheti az adatbázis összes függőségét.

Tárolt eljárás függőségeinek megtekintése

Az alábbiak egyikét használhatja:

Az SQL Server Management Studio használata

Egy eljárás függőségeinek megtekintése az Object Explorerben

  1. Az Object Explorerben csatlakozzon az adatbázismotor egy példányához, majd bontsa ki a példányt.

  2. Bontsa ki Adatbázisok, bontsa ki azt az adatbázist, amelyhez az eljárás tartozik, majd bontsa ki Programozhatósági.

  3. Bontsa ki tárolt eljárások, kattintson a jobb gombbal az eljárásra, majd kattintson Függőségek megtekintéseparancsra.

  4. Tekintse meg az eljárástól függő objektumok listáját.

  5. Megtekintheti azoknak az objektumoknak a listáját, amelyektől az eljárás függ.

  6. Kattintson az OK gombra.

Transact-SQL használata

A cikkben szereplő kódminták a AdventureWorks2025 vagy AdventureWorksDW2025 mintaadatbázist használják, amelyet a Microsoft SQL Server-minták és közösségi projektek kezdőlapjáról tölthet le.

Egy eljárás függőségeinek megtekintése a Lekérdezésszerkesztőben

Rendszerfüggvény: sys.dm_sql_referencing_entities
Ez a függvény az eljárástól függő objektumok megjelenítésére szolgál.

  1. Object Explorer-ben csatlakozzon egy adatbázismotor példányhoz, majd bontsa ki azt a példányt.

  2. Bontsa ki Adatbázisok, majd bontsa ki azt az adatbázist, amelyhez az eljárás tartozik.

  3. Kattintson az Új lekérdezés elemre a Fájl menüben.

  4. Másolja és illessze be a következő példákat a lekérdezésszerkesztőbe. Az első példa létrehozza a uspVendorAllInfo eljárást, amely visszaadja az Adventure Works Cycles adatbázis összes szállítójának nevét, az általuk megadott termékeket, a hitelképességüket és a rendelkezésre állásukat.

    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. Az eljárás létrehozása után a második példa a sys.dm_sql_referencing_entities függvénnyel jeleníti meg az eljárástól függő objektumokat.

    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  
    
    

Rendszerfüggvény: sys.dm_sql_referenced_entities
Ez a függvény azon objektumok megjelenítésére szolgál, amelyektől az eljárás függ.

  1. Object Explorer-ben csatlakozzon egy adatbázismotor példányhoz, majd bontsa ki azt a példányt.

  2. Bontsa ki Adatbázisok, majd bontsa ki azt az adatbázist, amelyhez az eljárás tartozik.

  3. Kattintson az Új lekérdezés elemre a Fájl menüben.

  4. Másolja és illessze be a következő példákat a lekérdezésszerkesztőbe. Az első példa létrehozza a uspVendorAllInfo eljárást, amely visszaadja az Adventure Works Cycles adatbázis összes szállítójának nevét, az általuk megadott termékeket, a hitelképességüket és a rendelkezésre állásukat.

    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. Az eljárás létrehozása után a második példa a sys.dm_sql_referenced_entities függvénnyel jeleníti meg azokat az objektumokat, amelyektől az eljárás függ.

    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  
    

Objektumkatalógus nézet: sys.sql_expression_dependencies
Ez a nézet olyan objektumok megjelenítésére használható, amelyektől egy eljárás függ, vagy amelyek egy eljárástól függenek.

Az eljárástól függő objektumok megjelenítése.

  1. Object Explorer-ben csatlakozzon egy adatbázismotor példányhoz, majd bontsa ki azt a példányt.

  2. Bontsa ki Adatbázisok, majd bontsa ki azt az adatbázist, amelyhez az eljárás tartozik.

  3. Kattintson az Új lekérdezés elemre a Fájl menüben.

  4. Másolja és illessze be a következő példákat a lekérdezésszerkesztőbe. Az első példa létrehozza a uspVendorAllInfo eljárást, amely visszaadja az Adventure Works Cycles adatbázis összes szállítójának nevét, az általuk megadott termékeket, a hitelképességüket és a rendelkezésre állásukat.

    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. Az eljárás létrehozása után a második példa a sys.sql_expression_dependencies nézetet használja az eljárástól függő objektumok megjelenítéséhez.

    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  
    

Az objektumok megjelenítésétől függ az eljárás.

  1. Object Explorer-ben csatlakozzon egy adatbázismotor példányhoz, majd bontsa ki azt a példányt.

  2. Bontsa ki Adatbázisok, majd bontsa ki azt az adatbázist, amelyhez az eljárás tartozik.

  3. Kattintson az Új lekérdezés elemre a Fájl menüben.

  4. Másolja és illessze be a következő példákat a lekérdezésszerkesztőbe. Az első példa létrehozza a uspVendorAllInfo eljárást, amely visszaadja az Adventure Works Cycles adatbázis összes szállítójának nevét, az általuk megadott termékeket, a hitelképességüket és a rendelkezésre állásukat.

    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. Az eljárás létrehozása után a második példa a sys.sql_expression_dependencies nézet használatával jeleníti meg azokat az objektumokat, amelyektől az eljárás függ.

    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  
    

Lásd még:

tárolt eljárás átnevezése
sys.dm_sql_referencing_entities (Transact-SQL)
sys.dm_sql_referenced_entities (Transact-SQL)
sys.sql_expression_dependencies (Transact-SQL)